Продвинутый редактор планет в 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": удалять не стоит, НТ может сломаться+
  1. "Normal": Малая группа строк, в которой содержатся формулы рельефа для НТ при нормальной сложности игры.
    +При удалении всей малой группы строк(включая содержимое) рельеф на этой сложности будет отсутствовать+

1.1. Формула(ы) рельефа

  1. "Hard": Малая группа строк, в которой содержатся формулы рельефа для НТ при сложной сложности игры.
    +При удалении всей малой группы строк(включая содержимое) тут будут стоять значения из малой группы строк под номером 1.+

2.1. Формула(ы) рельефа

  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 обязательно должны быть значения, кроме нуля.
Генерация ландшафта начинается с правого края НТ - это нулевой градус. Генерация ландшафтов заканчивается в её начале. Ниже ньюансов представлено градусное деление НТ по мнению игры.
Продвинутый редактор планет в Spaceflight Simulator, image #3

» Перейти в оглавление «

Как выглядят и как считываются игрой ФГВ

» Перейти в оглавление «

ФГВ как вы ранее поняли из глоссария - это графики. Главная особенность этих графиков высот - у этих графиков не может быть более одного значения высоты относящихся к одной точке. Из-за этого в игре не может быть пещер.

Так что обозначают эти цифры в текстовых ФГВ?

Curve3.txt
Curve3.txt

Эти числа - значения высоты. Предельное значение высоты во всех сделанных разработчиком текстовых ФГВ равно единице. Каждое значение высоты из ФГВ умножается на секцию4, из-за предельного значения высота ФГВ не может быть выше чем секция4.

Насчёт ФГВ в виде изображений - их предельное значение равно единице, а минимально равное нулю, отрицательным значение быть не может, в отличие от текстовых ФГВ.

Каждый текстовый ФГВ через шаманство в таблицах можно перевести в график. Я это уже сделал и все сделанные разработчиком текстовые ФГВ перевёл в графики. Не все ведь умеют переводить в уме числа в графики, правда? →» Скачать архив с графиками можно нажав сюда «←

Графики, искусствено усиленные цвета.
Графики, искусствено усиленные цвета.

А в какую сторону формулы направлены? Против часовой стрелки от нулевого градуса! ФГВ в виде изображения - исключение.

Продвинутый редактор планет в Spaceflight Simulator, image #6

» Перейти в оглавление «

Как работает создание ландшафта + фишка для улучшения рельефа

» Перейти в оглавление «

Основные математические операции при создании ландшафта в игре Spaceflight Simulator
Основные математические операции при создании ландшафта в игре Spaceflight Simulator
Математические операции при создании ландшафта в игре Spaceflight Simulator, часть вторая
Математические операции при создании ландшафта в игре Spaceflight Simulator, часть вторая

Вам не нравятся соотношение глубины и диаметров ваших кратеров на рельефе? Продвинутый гайд по ФГВ Craters.txt.

Вы не знаете какого диаметра у вас кратеры на НТ? Чтобы узнать просто разделите значение секции3 на 12 и получите диаметр кратеров в метрах.

У вас кратеры слишком глубокие или слишком широкие? Берите на заметку:
Для воронок маленьких кратеров достаточно соотношения 6.1 у секции3 к секции4 умноженной на 12. Если кратеры размеров в много километров, то это соотношение может достигать 13 и более, это уже будут целые бассейны на ваших НТ.

Продвинутый редактор планет в Spaceflight Simulator, image #9

Вам не нравится шов с правого края НТ? Есть решение!

Просто надо чтобы длина окружности НТ была кратна секциям3 из ваших формул. Можно обойтись и без изменения радиуса НТ. Допустим длина окружности НТ равна 314159 метрам, а у вас секция3 со значением 2000.0, тогда делим длину окружности НТ на это значение,после этого записываем целый остаток деления, он у меня получился равен 157. Потом делим длину окружности НТ на этот целый остаток и получаем подходящее значение для секции3, при которой не будет шва! У меня получилось значение 2001.0127488, вот и всё.

Продвинутый редактор планет в Spaceflight Simulator, image #10

» Перейти в оглавление «

Как создавать космические камни самых причудливых форм? Создание ФГВ

» Перейти в оглавление «

Необходим графический редактор:
Paint.net
Необходимо установить плагин в этот графический редактор, позволяющий делать полярные преобразования. Скачать плагин можно отсюда: http://jcljay.free.fr/pdn/Polar.zip
Не знаете как устанавливать плагины в этот графический редактор? Научитесь сами!

Кратко про то, как это работает:
Кратко про то, как это работает:

Сперва находим камень подходящей вам причудливой формы.

Я нашёл себе такой камень, потренируем вас на основе ядра кометы 67Р/Чурюмова-Герасименко. Закидывайте картинку с этим камнем в графический редактор, работать будем там.

Продвинутый редактор планет в Spaceflight Simulator, image #12
  1. Для начала обратите внимание где искать установленный фильтр:
Продвинутый редактор планет в Spaceflight Simulator, image #13
  1. Применяйте фильтр
Продвинутый редактор планет в Spaceflight Simulator, image #14

Оставьте флажок у "Круг в прямоугольник", это синоним к нужному преобразованию «причудливую форму в график высот».

Позицией центра должна найдите именно ту точку, при которой в графике образуется меньше всего форм, похожих на пещеру. Пещера - это когда образуется любая вертикальная полость между частями формы в преобразовании указанном выше. Перед применением фильтра сделайте эту точку центром изображения.

Углом абсолютно всегда ставьте значение 0,0.

Масштаб ставьте такой, при котором верхняя точка графика расположена на верхней границе изображения, эта точка будет иметь значение единицы.

Качество всегда устанавливайте на максимальное значение.

  1. Для примера в изображении ниже красным выделил то что будет являться пещерой, чтобы вы уж точно поняли. И да, не забывайте переворачивать полученный график высот вертикально, ведь низ у графиков находится снизу, а не сверху. И не забудьте перевернуть график горизонтально, ведь этот ФГВ в виде изображения.
Продвинутый редактор планет в Spaceflight Simulator, image #15
  1. Теперь смотрите внимательно, ниже красной линией выделен радиус, запоминайте в сколько раз зелёный отрезок выше радиуса. Это количество раз умноженное на радиус будет значением секции4.
Продвинутый редактор планет в Spaceflight Simulator, image #16
  1. Обводим силуэт камня причудливой формы прошедшего через фильтры и делаем заливку. Главное чтобы в обведённом силуэте заливка была полностью прозрачная и не было пещер, иначе будут дефекты.
Продвинутый редактор планет в Spaceflight Simulator, image #17
  1. Обрезаем радиус и сохраняем ФГВ с 8 битной глубиной и максимальным порогом прозрачности для экономии памяти.
Продвинутый редактор планет в Spaceflight Simulator, image #18
  1. Кидаем наш ФГВ в Heightmap Data.
  2. Создаём формулу в которой секция3 растянута по всему радиусу окружности НТ. Секция4 имеет размеры указанные в шаге №4.
  3. Смотрим результат в игре:
Продвинутый редактор планет в Spaceflight Simulator, image #19

» Перейти в оглавление «

Создание своих звёзд вокруг Солнца и их перекрашивание

» Перейти в оглавление «

  1. Копируете файл конфигурации НТ Sun.txt, а затем переименовываете копию в название нужной звезды. Внутри конфигурации вставляете от Юпитера копии обязательной группы строк "ORBIT_DATA": и независимой группы строк "TERRAIN_DATA":.
Продвинутый редактор планет в Spaceflight Simulator, image #20
Продвинутый редактор планет в Spaceflight Simulator, image #21
Продвинутый редактор планет в Spaceflight Simulator, image #22
  1. Создаёте текстуру полностью состоящую из одного цвета, оттенки текстуры не насыщенные, а пастельные, примеры:
Продвинутый редактор планет в Spaceflight Simulator, image #23
  1. Устанавливаете большое число большой полуоси орбиты и ставите эксцентриситет под ноль, "direction": тоже ставите на ноль, звезда не должна вращаться вокруг Солнца, правда? Значение "argumentOfPeriapsis": определит положение звезды относительно Солнца.
Продвинутый редактор планет в Spaceflight Simulator, image #24
  1. Остальные параметры НТ определяйте под себя.
  1. Раскрашивание свечения вашей звезды под нужный вам оттенок, потребуется paint.net. Для начала достаньте Atmo_Sun из этого архива, или достаньте их сами из игры по инструкции из этой статьи.
Продвинутый редактор планет в Spaceflight Simulator, image #25
  1. Делайте слой за текстурой чёрным. Удлините полотно на 1 пиксель вниз. На этот пиксель на слое сзади текстуры ставьте цвет вашей текстуры звезды.
Продвинутый редактор планет в Spaceflight Simulator, image #26
  1. Применяйте фильтры на слой с текстурой чтобы нижний пиксель по цвету почти совпал с цветом вашей звезды.
Продвинутый редактор планет в Spaceflight Simulator, image #27
  1. Применяйте фильтр, удаляете слой с чёрным фоном и цветным нижним пикселем. Затем укорачивайте холст на 1 пиксель обратно. Сохраняйте текстуру атмосферы в папку Texture Data, а затем используйте в качестве текстуры свечения вашей звезды.
  1. Довольствуйтесь результатом.

» Перейти в оглавление «

Создание колец вокруг НТ

Эта часть статьи полностью взята из статьи про текстуры! Вы можете перейти к ней здесь.

» Перейти в оглавление «

Создание колец небесному телу

  1. Заходим в расположение с системами планет(см. выше) и переходим в/создаём свою систему планет(Example не считается)
  1. Как зашли в расположение, кидаем будущую картинку текстуры колец небесного тела в папку Texture Data
  1. Скачиваем этот архив, а затем распаковываем оттуда «cons.txt» в папку Heightmap Data вашей системы планет и распаковываем файл «Rings .txt» в папку Planet Data вашей системы планет
  1. Как редактировать этот файл указано в картинках ниже. Если рядом с цифрой строки на этой картинке есть синий кружок, то его изменять вам совсем не требуется. Следуете инструкциям написанным белым текстом начинающимся со звёздочки(*).
Пролистните дальше, это ещё не всё
Листайте дальше, не отходите от инструкции.
Продвинутый редактор планет в Spaceflight Simulator, image #30
1 of 3
Пролистните дальше, это ещё не всё
  1. Проверяйте итоговый результат в игре, удачи!

» Перейти в оглавление «

Вот и закончился цикл статей от Артура Сафиуллина. Мыслите критически, занимайтесь математикой, счастливо!

700 views·7 shares