Продвинутый редактор планет в Spaceflight Simulator
Перед прочтением рекомендуется к ознакомлению статья про основы редактора планет.
Глоссарий ко всей этой статье:
Небесное тело = НТ
Планетарная система, система планет = СП
Файлы графиков высот = ФГВ
Числовое значение = ЧЗНАЧ
Оглавление:
★ Heightmap Data
★ Разбор структуры малых групп строк отвечающих за форму рельефа в файле конфигурации НТ
★ Разбор структуры формул рельефа в файле конфигурации НТ
★ Как выглядят и как считываются игрой ФГВ
★ Как работает создание ландшафта + фишка для улучшения рельефа
★ Как создавать космические камни самых причудливых форм? Создание ФГВ
★ Создание своих звёзд вокруг Солнца и их перекрашивание
★ Создание колец вокруг НТ
Heightmap Data
Это папка в которой хранятся "формы", из которых создаётся ландшафт или рельеф. Этими "формами" являются ФГВ.
Ниже указаны принципы построения файловой структуры этой папки
Игра считывает с этой папки ФГВ для конфигураций НТ.
Эти файлы с ФГВ могут быть указанных форматов: .png, .txt.
Название ФГВ определяет название для *_*_* для содержимого файла конфигурации НТ.
В названии ФГВ не должно быть пробелов.
Из-за того что это всё графики - в рельефе не может быть пещер.
Разбор структуры малых групп строк отвечающих за форму рельефа в файле конфигурации НТ
Жми сюда чтобы перейти к "TERRAIN_DATA":
"terrainFormulaDifficulties": {
"Normal": [
"OUTPUT = AddHeightMap(Moon_Normal, 543495.5290710, 250)",
"PLAINS = AddHeightMap(Moon_Plains, 543495.5290710, 1)",
"OUTPUT = AddHeightMap(Craters, 24704.3422305016, 180, null, PLAINS)",
"OUTPUT = AddHeightMap(Craters, 3396.84705669396, 22, null, PLAINS)",
"OUTPUT = AddHeightMap(Perlin, 1811.65176357011, 3)"
],
"Hard": [
"OUTPUT = AddHeightMap(Moon, 1086991.0581420, 500)",
"PLAINS = AddHeightMap(Moon_Plains, 1086991.0581420, 1)",
"OUTPUT = AddHeightMap(Craters, 24704.3422305016, 180, null, PLAINS)",
"OUTPUT = AddHeightMap(Craters, 3396.84705669396, 22, null, PLAINS)",
"OUTPUT = AddHeightMap(Perlin, 1811.65176357011, 3)"
],
"Realistic": [
"OUTPUT = AddHeightMap(Moon, 10869910.581420, 5000)",
"PLAINS = AddHeightMap(Moon_Plains, 10869910.581420, 1)",
"OUTPUT = AddHeightMap(Craters, 24704.3422305016, 180, null, PLAINS)",
"OUTPUT = AddHeightMap(Craters, 3396.84705669396, 22, null, PLAINS)",
"OUTPUT = AddHeightMap(Perlin, 1811.65176357011, 3)"
]
},- "terrainFormulaDifficulties": Это малая группа строк, отвечающая за форму рельефа при разных сложностях игры.
+Эту строчку в "TERRAIN_DATA": удалять не стоит, НТ может сломаться+
- "Normal": Малая группа строк, в которой содержатся формулы рельефа для НТ при нормальной сложности игры.
+При удалении всей малой группы строк(включая содержимое) рельеф на этой сложности будет отсутствовать+
1.1. Формула(ы) рельефа
- "Hard": Малая группа строк, в которой содержатся формулы рельефа для НТ при сложной сложности игры.
+При удалении всей малой группы строк(включая содержимое) тут будут стоять значения из малой группы строк под номером 1.+
2.1. Формула(ы) рельефа
- "Realistic": Малая группа строк, в которой содержатся формулы рельефа для НТ при реалистичной сложности игры.
+При удалении всей малой группы строк(включая содержимое) тут будут стоять значения из малой группы строк под номером 1.+
3.1. Формула(ы) рельефа
Ньюансы:
При удалении содержимого малой группы строк относящейся к конкретной сложности - рельеф будет идеальным кругом, ровным при любой сложности, например как у Юпитера или Солнца.
Если полностью удалить содержимое "terrainFormulaDifficulties": - рельеф будет идеальным кругом, ровным при любой сложности, например как у Юпитера или Солнца.
Чем больше формул - тем сильнее нагрузка планеты на процессор. Формул может быть бесконечное количество, но это избыточно.
Разбор структуры формул рельефа в файле конфигурации НТ
"Normal": [
"OUTPUT = AddHeightMap(Moon_Normal, 543495.5290710, 250)",
"PLAINS = AddHeightMap(Moon_Plains, 543495.5290710, 1)",
"OUTPUT = AddHeightMap(Craters, 24704.3422305016, 180, null, PLAINS)",
"OUTPUT = AddHeightMap(Craters, 3396.84705669396, 22, null, PLAINS)",
"OUTPUT = AddHeightMap(Perlin, 1811.65176357011, 3)"
],
Для упрощения разобью структуру формулы на конкретные секции
Из этого:
"OUTPUT = AddHeightMap(Craters, 24704.3422305016, 180, null, PLAINS)"
В это:
"Секция1 = AddHeightMap(Секция2, Секция3, Секция4, Секция5, Секция6)"
А за что отвечает каждая секция?
- Секция1 решает, будут ли взаимодействовать с этой формулой другие формулы.
На месте этой секции может быть значение OUTPUT, при этом значении на эту формулу не может ссылаться Секция6 из других формул.
При ином значении эта формула рельефа не будет влиять на рельеф НТ, если на неё не ссылаются. - Секция2 это имя ФГВ, и каждое имя делает что-то свое, придавая местности тот или иной график высот.
Имена ФГВ из папки Heightmap Data пишутся без "двойных скобок", вместе со своим форматом файла, будь это .png или .txt.
В игре есть изначально созданные ФГВ, к которым может обратиться секция2 без указания формата файла, эти ФГВ перечислены в папке Heightmap Data, как изначально имеющиеся в папке Example. В начале имени ФГВ не должно быть чисел! - Секция3 это растяжение графика высот по ширине в метрах.
Если вы знаете формулу длины окружности, то после вычислений можно узнать на какое значение надо растянуть график высот для охвата всего НТ!
—> Это значение числовое, не забудьте связанный с ними ньюанс <— - Секция4 это растяжение графика высот по высоте в метрах.
—> Это значение числовое, не забудьте связанный с ними ньюанс <— - Секция5 это функция наложения(без сложений значений секции3 и секции4) другого ФГВ на ФГВ указанного в секции1, с приоритетом секции1.
У ФГВ, которое накладывается будут те же значения секции3 и секции4. Секция5 позволяет внести случайность рельеф.
При значении null наложения не будет. - Секция6 это функция умножения другой формулы с секцией1 отличной от OUTPUT на эту.
При помощи этого способа можно в конкретных местах НТ убирать часть другой функции или наоборот её увеличить.
Ньюансы:
Каждая секция - значение, в котором не могут быть пробелы.
Секция5 и секция6 не обязательны для наличия в формуле рельефа. Но для наличии секции6 обязательно наличие секции5.
Если в секции3 и секции4 будут стоять отрицательные значения, то результат будет тем же, что и при положительных значениях.
Числовые значения — Это десятичные дроби, они пишутся в формате "1234.567" и всегда без наличия двойных кавычек, целая и дробная часть разделяются исключительно ТОЧКОЙ, а не запятой. И ЧЗНАЧ ничем(включая пробелы) не должны делить разряды целого и дробного числа. Если наличие дробной части не нужно, то тогда всегда удаляем дробную часть вместе с точкой, СП от этого не сломается. Если значения не должно быть, то вы дурак, в секции3 и секции4 обязательно должны быть значения, кроме нуля.
Генерация ландшафта начинается с правого края НТ - это нулевой градус. Генерация ландшафтов заканчивается в её начале. Ниже ньюансов представлено градусное деление НТ по мнению игры.
Как выглядят и как считываются игрой ФГВ
ФГВ как вы ранее поняли из глоссария - это графики. Главная особенность этих графиков высот - у этих графиков не может быть более одного значения высоты относящихся к одной точке. Из-за этого в игре не может быть пещер.
Так что обозначают эти цифры в текстовых ФГВ?
Эти числа - значения высоты. Предельное значение высоты во всех сделанных разработчиком текстовых ФГВ равно единице. Каждое значение высоты из ФГВ умножается на секцию4, из-за предельного значения высота ФГВ не может быть выше чем секция4.
Насчёт ФГВ в виде изображений - их предельное значение равно единице, а минимально равное нулю, отрицательным значение быть не может, в отличие от текстовых ФГВ.
Каждый текстовый ФГВ через шаманство в таблицах можно перевести в график. Я это уже сделал и все сделанные разработчиком текстовые ФГВ перевёл в графики. Не все ведь умеют переводить в уме числа в графики, правда? →» Скачать архив с графиками можно нажав сюда «←
А в какую сторону формулы направлены? Против часовой стрелки от нулевого градуса! ФГВ в виде изображения - исключение.
Как работает создание ландшафта + фишка для улучшения рельефа
Вам не нравятся соотношение глубины и диаметров ваших кратеров на рельефе? Продвинутый гайд по ФГВ Craters.txt.
Вы не знаете какого диаметра у вас кратеры на НТ? Чтобы узнать просто разделите значение секции3 на 12 и получите диаметр кратеров в метрах.
У вас кратеры слишком глубокие или слишком широкие? Берите на заметку:
Для воронок маленьких кратеров достаточно соотношения 6.1 у секции3 к секции4 умноженной на 12. Если кратеры размеров в много километров, то это соотношение может достигать 13 и более, это уже будут целые бассейны на ваших НТ.
Вам не нравится шов с правого края НТ? Есть решение!
Просто надо чтобы длина окружности НТ была кратна секциям3 из ваших формул. Можно обойтись и без изменения радиуса НТ. Допустим длина окружности НТ равна 314159 метрам, а у вас секция3 со значением 2000.0, тогда делим длину окружности НТ на это значение,после этого записываем целый остаток деления, он у меня получился равен 157. Потом делим длину окружности НТ на этот целый остаток и получаем подходящее значение для секции3, при которой не будет шва! У меня получилось значение 2001.0127488, вот и всё.
Как создавать космические камни самых причудливых форм? Создание ФГВ
Необходим графический редактор:
Paint.net
Необходимо установить плагин в этот графический редактор, позволяющий делать полярные преобразования. Скачать плагин можно отсюда: http://jcljay.free.fr/pdn/Polar.zip
Не знаете как устанавливать плагины в этот графический редактор? Научитесь сами!
Сперва находим камень подходящей вам причудливой формы.
Я нашёл себе такой камень, потренируем вас на основе ядра кометы 67Р/Чурюмова-Герасименко. Закидывайте картинку с этим камнем в графический редактор, работать будем там.
- Для начала обратите внимание где искать установленный фильтр:
- Применяйте фильтр
Оставьте флажок у "Круг в прямоугольник", это синоним к нужному преобразованию «причудливую форму в график высот».
Позицией центра должна найдите именно ту точку, при которой в графике образуется меньше всего форм, похожих на пещеру. Пещера - это когда образуется любая вертикальная полость между частями формы в преобразовании указанном выше. Перед применением фильтра сделайте эту точку центром изображения.
Углом абсолютно всегда ставьте значение 0,0.
Масштаб ставьте такой, при котором верхняя точка графика расположена на верхней границе изображения, эта точка будет иметь значение единицы.
Качество всегда устанавливайте на максимальное значение.
- Для примера в изображении ниже красным выделил то что будет являться пещерой, чтобы вы уж точно поняли. И да, не забывайте переворачивать полученный график высот вертикально, ведь низ у графиков находится снизу, а не сверху. И не забудьте перевернуть график горизонтально, ведь этот ФГВ в виде изображения.
- Теперь смотрите внимательно, ниже красной линией выделен радиус, запоминайте в сколько раз зелёный отрезок выше радиуса. Это количество раз умноженное на радиус будет значением секции4.
- Обводим силуэт камня причудливой формы прошедшего через фильтры и делаем заливку. Главное чтобы в обведённом силуэте заливка была полностью прозрачная и не было пещер, иначе будут дефекты.
- Обрезаем радиус и сохраняем ФГВ с 8 битной глубиной и максимальным порогом прозрачности для экономии памяти.
- Кидаем наш ФГВ в Heightmap Data.
- Создаём формулу в которой секция3 растянута по всему радиусу окружности НТ. Секция4 имеет размеры указанные в шаге №4.
- Смотрим результат в игре:
Создание своих звёзд вокруг Солнца и их перекрашивание
- Копируете файл конфигурации НТ Sun.txt, а затем переименовываете копию в название нужной звезды. Внутри конфигурации вставляете от Юпитера копии обязательной группы строк "ORBIT_DATA": и независимой группы строк "TERRAIN_DATA":.
- Создаёте текстуру полностью состоящую из одного цвета, оттенки текстуры не насыщенные, а пастельные, примеры:
- Устанавливаете большое число большой полуоси орбиты и ставите эксцентриситет под ноль, "direction": тоже ставите на ноль, звезда не должна вращаться вокруг Солнца, правда? Значение "argumentOfPeriapsis": определит положение звезды относительно Солнца.
- Остальные параметры НТ определяйте под себя.
- Раскрашивание свечения вашей звезды под нужный вам оттенок, потребуется paint.net. Для начала достаньте Atmo_Sun из этого архива, или достаньте их сами из игры по инструкции из этой статьи.
- Делайте слой за текстурой чёрным. Удлините полотно на 1 пиксель вниз. На этот пиксель на слое сзади текстуры ставьте цвет вашей текстуры звезды.
- Применяйте фильтры на слой с текстурой чтобы нижний пиксель по цвету почти совпал с цветом вашей звезды.
- Применяйте фильтр, удаляете слой с чёрным фоном и цветным нижним пикселем. Затем укорачивайте холст на 1 пиксель обратно. Сохраняйте текстуру атмосферы в папку Texture Data, а затем используйте в качестве текстуры свечения вашей звезды.
- Довольствуйтесь результатом.
Создание колец вокруг НТ
Эта часть статьи полностью взята из статьи про текстуры! Вы можете перейти к ней здесь.
Создание колец небесному телу
- Заходим в расположение с системами планет(см. выше) и переходим в/создаём свою систему планет(Example не считается)
- Как зашли в расположение, кидаем будущую картинку текстуры колец небесного тела в папку Texture Data
- Скачиваем этот архив, а затем распаковываем оттуда «cons.txt» в папку Heightmap Data вашей системы планет и распаковываем файл «Rings .txt» в папку Planet Data вашей системы планет
- Как редактировать этот файл указано в картинках ниже. Если рядом с цифрой строки на этой картинке есть синий кружок, то его изменять вам совсем не требуется. Следуете инструкциям написанным белым текстом начинающимся со звёздочки(*).



- Проверяйте итоговый результат в игре, удачи!
