В этом руководстве описывается, как добавить планету в SpaceEngine. Перед тем, как продолжить, рекомендуется прочитать эти руководства:
Введение
Создание звёзд
Быстрый старт: найти похожую планету в SpaceEngine
Самый простой способ добавить планету - это найти процедурную планету в SpaceEngine, которая похожа на ту, что вам нужна, и продублировать её в вашем скрипте планетной системы. Затем можно немного изменить её параметры с помощью Редактора планет или вручную в самом скрипте. Быстро найти планету по параметрам можно с помощью Браузера звёзд. Откройте его, нажав клавиши [Shift]+[F3], введите радиус поиска 100 и нажмите кнопку [Настройки фильтра]. Затем настройте параметры фильтра. В этом примере будем искать комфортную терру размером с Землю возле звезды класса G:
Нажмите кнопку [ОК] и подождите, пока SpaceEngine закончит поиск. После этого можно кликнуть по какой-либо строке таблицы, открыть Браузер планетной системы (клавиша [F2]) и просмотреть планеты, который нашёл SpaceEngine. Совет: чтобы узнать, какие именно планеты системы удовлетворяют параметры фильтра, наведите курсор мыши на ячейку таблицы в последнем столбце. Появится маленькое окошко со списком планет.
Давайте посмотрим, например, на планету RS 8474-918-7-65905-410 A4. Примечание: в вашей версии SpaceEngine эта планета может не существовать или выглядеть по-другому из-за установленных модов/аддонов или из-за другого номера версии.
Допустим эта планета вам подходит. Давайте скопируем её в нашу систему. Откройте Редактор планет ([Shift]+[F2] или Главное меню -> Редактор -> Редактировать планету). Убедитесь, что выбрана планета планета, иначе редактор не откроется, или откроется для какой-то другой планеты. Мы поговорим о параметрах редактора позже, а сейчас нажмите кнопку [Экспорт скрипта] ([Export script]):
Нажмите кнопку [Экспорт] ([Export]), и файл с именем RS 8474-918-7-65905-410 A4.sc появится в папке export/.
Теперь мы должны создать скрипт (файл каталога планет) для нашей планетной системы. Перейдите в папку addons/catalogs/planets/ (создайте её, если она не существует), и создайте там новый файл с именем MySystem.sc. Откройте его с помощью блокнота. Откройте также наш экспортированный скрипт export/RS 8474-918-7-65905-410 A4.sc, скопируйте его содержимое и вставьте в MySystem.sc. После этого необходимо сделать некоторые изменения.
Во-первых, вы должны выбрать звезду, у которой вы хотите создать планету. В текущей версии SpaceEngine невозможно создать систему у процедурной звезды (процедурные звёзды имеют имена вида "RS 123-456-789"). Так что вы должны выбрать реальную звезду из каталога, или создать новую звезду. Давайте выберем, например, звезду по имени Chara (бета Гончих Псов). Это солнцеподобная звезда спектрального класса G0V - хороший выбор для создания планеты с жизнью рядом с ней.
Надо дать какое-нибудь хорошее имя нашей планете. Звезда, которую мы выбрали, называется Chara, так что хорошее имя для её планеты - Char (привет от Королевы Клинков 🙂 ). Посмотрите на самую первую строчку скрипта и измените её с Planet "A4" на Planet "Char". Далее, мы должны указать SpaceEngine, что эта планета вращается вокруг звезды Chara. Посмотрите на третью строчку, и измените её с ParentBody "А" на ParentBody "Chara". Теперь планета будет вращаться вокруг звезды Chara, но она может иметь неправильную орбиту, особенно если вы экспортировали луну, а хотите сделать её планетой, или наоборот. Перейдите в конец скрипта и найдите тег Orbit. Измените параметр SemiMajorAxis на 1.0 (это среднее расстояние от звезды в 1 астрономическую единицу) - хорошее начало для тонкой настройки в землеподобной планеты у солнцеподобной звезды. Также можно удалить параметр Period (так что SE вычислит его автоматически на основе массы звезды), а также изменить параметр Eccentricity на некое малое значение (так что орбита планеты будет близка к окружности). Сохраните изменения и запустите SpaceEngine. Нажмите клавишу [F3] и введите название вашей планеты: Char. Затем нажмите клавишу [G] в два раза, и вы увидите вашу планету:
Она может выглядеть немного по-другому, потому что в первый раз вы можете выбрать не очень подходящий радиус орбиты (большую полуось), так что планета может оказаться слишком горячей или слишком холодной. Так что теперь вы должны настроить некоторые параметры в вашем скрипте планеты. Помните: после редактирования скрипта, необходимо перезапустить SpaceEngine, чтобы увидеть изменения.
Использование Редактора планет
Самый простой способ настройки планеты - это использовать Редактор планет. Но он имеет два основных ограничения:
1) Редактор не сохраняет изменения в файлах. Вы должны снова экспортировать скрипт и вручную скопировать/вставить код из него в ваш скрипт.
2) Редактор ещё в разработке, поэтому он позволяет редактировать не все параметры, и имеет некоторые глюки.
Но вы все равно можете быстро настроить основные параметры, такие как радиус орбиты (SemiMajorAxis), альбедо планеты и парниковый эффект атмосферы, для того, чтобы добиться желаемой температуры на планете; изменить её радиус и массу, чтобы отрегулировать поверхностную силу тяжести; изменить модель атмосферы, а также изменить некоторые процедурные формы ландшафта (см. следующую главу).
Почти все изменения требуют нажатия кнопки [Обновить] ([Update]), чтобы увидеть их. Нажатие кнопки [Сбросить] ([Reset]) отменяет изменения, сделанные после открытия редактора. Это значит, что если вы сделали какие-то изменения и закрыли редактор, вы больше не сможете отменить их. Только перезапуск SpaceEngine отменит эти изменения (помните, что редактор не сохраняет изменения в файле). Так что, если вы хотите добиться хороших результатов, или если вы хотите стать более опытным в создании планет, читайте следующую главу этого руководства.
Допустим, мы изменили некоторые параметры нашей планеты Char с помощью редактора: изменили парниковый эффект атмосферы, чтобы сделать планету теплее, изменили высоту снежных шапок, модель атмосферы и её оттенок, поиграли с процедурными параметрами поверхности. Мы также убрали кольца, удалив тег Rings из скрипта, и добавив NoRings true (см ниже). В итоге скрипт планеты стал выглядеть так:
{
Class "Terra"Mass 1.72541
Radius 7262.85
InertiaMoment 0.332483Oblateness 0.00446722
RotationPeriod 19.2199
Obliquity 4.6793
EqAscendNode -35.5612
AlbedoBond 0.437803
AlbedoGeom 0.525363
Brightness 2
Color (0.775 0.780 0.782)
Life
{
Type "Multicellular"
Biome "Terrestrial"
}
Surface
{
OceanStyle 0.62373
Randomize (-0.485, 0.692, -0.399)
colorDistMagn 0.0445073
colorDistFreq 794.398
detailScale 18680.5
colorConversion true
drivenDarkening -1
seaLevel 0.533667
snowLevel 0.865079
tropicLatitude 0.0819224
icecapLatitude 0.758483
icecapHeight 0.545793
climatePole 0.9375
climateTropic 0.522706
climateEquator 0.6875
heightTempGrad 0.414794
tropicWidth 0.374003
mainFreq 1.0687
venusFreq 0.653746
venusMagn 0
mareFreq 3.10486
mareDensity 0.060662
terraceProb 0.253474
erosion 0.11918
montesMagn 0.150631
montesFreq 345.084
montesSpiky 0.894682
montesFraction 0.519249
dunesMagn 0.0468856
dunesFreq 54.408
dunesFraction 0.942635
hillsMagn 0.130191
hillsFreq 980.783
hillsFraction 0.0357427
hills2Fraction 0.817134
riversMagn 58.1157
riversFreq 2.85878
riversSin 7.62415
riversOctaves 2
canyonsMagn 0.0632909
canyonsFreq 100
canyonFraction 0.0454924
cracksMagn 0.0824855
cracksFreq 0.811998
cracksOctaves 0
craterMagn 0.752975
craterFreq 25.728
craterDensity 0
craterOctaves 0
craterRayedFactor 0
volcanoMagn 0.712696
volcanoFreq 0.703719
volcanoDensity 0.275554
volcanoOctaves 3
volcanoActivity 0.334258
volcanoFlows 0.479296
volcanoRadius 0.552217
volcanoTemp 1460.56
lavaCoverTidal 0
lavaCoverSun 0
lavaCoverYoung 0
stripeZones 1.14778
stripeFluct 0
stripeTwist 0
cycloneMagn 2.40332
cycloneFreq 0.639954
cycloneDensity 0.419004
cycloneOctaves 2
colorSea (0.040, 0.200, 0.200, 1.000)
colorShelf (0.150, 0.370, 0.370, 1.000)
colorBeach (0.820, 0.730, 0.570, 0.000)
colorDesert (0.420, 0.360, 0.220, 0.000)
colorLowland (0.220, 0.230, 0.220, 0.000)
colorUpland (0.570, 0.540, 0.420, 0.000)
colorRock (0.100, 0.100, 0.100, 0.000)
colorSnow (1.000, 1.000, 1.000, 1.308)
colorLowPlants (0.117, 0.154, 0.084, 0.000)
colorUpPlants (0.097, 0.106, 0.056, 0.000)
BumpHeight 17.3379
BumpOffset 9.25266
DiffMapAlpha "Water"
SpecBrightWater 0.65
SpecBrightIce 0.85
SpecularPower 55
Hapke 0
SpotBright 4
SpotWidth 0.05
DayAmbient 0.07
}
Clouds
{
Velocity 117.481
BumpHeight 4.36566
Hapke 0.2
SpotBright 2
SpotWidth 0.15
DayAmbient 2
mainFreq 1.11873
mainOctaves 10
Coverage 0.396338
stripeZones 1.14778
stripeFluct 0
stripeTwist 0
}
Ocean
{
Hapke 0
SpotBright 2
SpotWidth 0.15
DayAmbient 2
}
NoLava true
Atmosphere
{
Height 124.52
Density 4.88424
Pressure 2.63276
Greenhouse 57.1429
Bright 10
Opacity 1
SkyLight 3.33333
Hue 0.428571
Saturation 1
Composition
{
O2 5.53639
N2 0.0530705
SO2 0.0153837
Ar 0.00293737
Ne 0.000270165
H2O 0.000267185
Kr 1.95886e-005
}
}
Aurora
{
NorthLat 57.4894
NorthLon 88.7206
NorthRadius 1455.88
NorthWidth 284.757
NorthRings 4
NorthBright 0.3
NorthParticles 0
SouthLat -57.5165
SouthLon 273.482
SouthRadius 1342.38
SouthWidth 384.318
SouthRings 3
SouthBright 0.3
SouthParticles 0
TopColor (1.000 1.000 1.000)
BottomColor (0.000 1.000 0.000)
}
NoRings true
NoAccretionDisk true
NoCometTail true
Orbit
{
SemiMajorAxis 1
Period 0.959885
Eccentricity 0.01
Inclination 0.0246517
AscendingNode -36.7804
ArgOfPericenter 280.426
MeanAnomaly 264.157
}
}
А сама планета стала выглядеть в игре так:
Таким же способом можно добавить любую планету/луну/астероид (найти подходящую с помощью Браузера звёзд и экспортировать с помощью Редактора планет). Можете добавить код других объектов в тот же самый файл скрипта (на самом деле и рекомендуется иметь один файл скрипта для планетарной системы). Также полезно позволить SpaceEngine генерировать некоторые параметры автоматически, например облачные слоя для газовых гигантов. Как это сделать, описано в следующей главе.
Параметры скрипта планеты
Далее будем считать, что вы знакомы с основами скриптов SE.
Полная структура скрипта планеты такова:
{
{
}
Surface
{
}
Ocean
{
}
Clouds
{
}
Atmosphere
{
}
Aurora
{
}
Rings
{
}
AccretionDisk
{
}
CometTail
{
}
Corona
{
}
Orbit
{
}
}
Планета, как минимум, должна иметь параметры ParentBody и Mass или Radius, и тег Orbit тег с известным SemiMajorAxis или Period. Дополнительно, она может иметь или не иметь некоторые параметры и теги, описанные ниже (поверхность, облака, и т.д.). Если какой-либо параметр или тег не указан, он может быть инициализирован значением по умолчанию, вычислен или процедурно сгенерирован. Пример минимального скрипта планеты:
{
Radius 7200 // or Mass 1.5
Orbit
{
}
}
В этом примере указаны только имя планеты и его родителя, физический размер или масса планеты, и размер или период её орбиты. SpaceEngine вычислит или сгенерирует остальные данные процедурно. Вы можете найти много таких "бедных" планет в каталоге экзопланет SpaceEngine, потому что часто масса/радиус и орбитальный период - это все данные, известные современной астрономии о данной экзопланете.
Можно отключить процедурную генерацию некоторых тегов, за исключением Surface и Orbit. Например, если вы создаёте планету без жизни и колец, вы не должны описывать в коде теги Life и Rings. Но SpaceEngine может сгенерировать их процедурно. Чтобы предотвратить процедурную генерацию, вы можете использовать эти параметры в теге Planet:
NoLife true
NoOcean true
NoLava true
NoClouds true
NoAtmo true
NoAtmosphere true
NoAurora true
NoRings true
NoAccretionDisk true
NoCometTail true
NoCorona true
Есть ещё один специальный "No" параметр:
NoLighting true
Он отключает освещение для данного объекта. Это может использоваться для создания демонстрационных систем типа диаграммы Герцшпрунга-Рассела звёзд с использованием фиксированных координат в пространстве (см. описание тега Orbit).
Теперь давайте посмотрим на все теги и параметры скрипта планеты.