This manual describes how to add a planet to SpaceEngine. Before continuing, it is recommended that you read these manuals first:
Creating a star

Quick start: find a similar planet in SpaceEngine

The easiest way to add a planet is to find a procedural planet in SpaceEngine which you like, duplicate it in your planetary system script, then tweak its parameters a bit as you desire. You can quickly find a planet close to your needs by using the Star browser. Open it by pressing [Shift]+[F3], enter the search radius 100 and press the [Filter settings] button, then choose the desired filter parameters. In this example, we are looking for a temperate Earth-sized terra near a G class star:

Press the [Ok] button and wait until SpaceEngine finishes the search. Then you may click on each row, open the Solar system browser ([F2] key) and look for the planets SpaceEngine has found. Tip: to know exactly which planets satisfied the filter options, hover the mouse cursor over the table cell in the 'Filter' column (last column). A small box will appear with a list of the planets in that system which met the filter options.

So let's use RS 8474-918-7-65905-410 A4 as our example planet. Note: in your SpaceEngine version this planet may not exist or may look different due to installed mods/addons or a different version number.

It looks good enough. Let's copy it into our system. Open the Planet editor ([Shift]+[F2] or Main Menu -> Editor -> Edit planet). Make sure the planet is selected, otherwise the Editor will not open or will open for some other planet. We will talk about Editor options later. Now, press the [Export script] button:

Press the [Export] button, and a file called RS 8474-918-7-65905-410 will appear in the export/ directory.

Now we must create a catalog script for our planetary system. Go to the addons/catalogs/planets/ folder (create it if it does not exist) and create a new file named there. Open it with notepad. Also open our exported script export/RS 8474-918-7-65905-410, copy its content and paste into After this, you must make some edits.

First, you must choose a star for your planet to orbit. In the current version of SpaceEngine, it is impossible to create a system for a procedural star (procedural stars have a name looking like "RS 123-456-789"), so you must choose a real star from the catalog, or create a new star. So, let's choosethe star called Chara (beta Canum Venaticorum) for our example planet. This is a Sun-like star of spectral class G0V - a good choice for creating a life-bearing planet.

In the file we need to come up with a good name for our planet. The star we had chosen is called Chara, so a good name for its planet is Char (hello from the Queen of Blades 🙂 ). Look at the very first line and change it from Planet "A4" to Planet "Char". Next, we must tell SpaceEngine that this planet must revolve around the star Chara. Look at the third line, and change it from ParentBody "A" to ParentBody "Chara". Now the planet will revolve around Chara, but it may have the wrong orbit, especially if you exported a moon and want to make it a planet, or vise versa. Scroll to the end of the script and find the Orbit tag. Change the parameter SemiMajorAxis to 1.0 (this means a distance from the star of 1 astronomical unit) - it's a good start for tweaking an Earth-like planet near a Sun-like star. You may also remove the Period parameter (for SE to calculate it automatically based on the mass of the star), and change the Eccentricity to some small value (so the planet's orbit will be nearly circular). Save your changes and launch SpaceEngine. Hit the [F3] key and enter your planet's name, Char. Then press the [G] key twice and you will see your planet:

It may look a bit different because you might have put in an imperfect orbital radius (semimajor axis) at first, and the planet may be too hot or too cold. You must adjust the parameters in your planet script to get it right. Remember: after editing the script, you must restart SpaceEngine to see the changes.

Using the Planet editor

The easiest way to tweak the planet is using the Planet editor. But it has two main restrictions for now:
1) The Editor does not save changes to the files. You must export the script and manually copy/paste the code from it.
2) The Editor is not finished yet, so it doesn't allow you to edit all parameters, and it may have some glitches.

But you can still quickly adjust the main parameters such as orbit radius (SemiMajorAxis), planet Albedo and atmosphere Greenhouse effect to achieve the desired temperature on the planet; change its radius and mass to adjust surface gravity; change atmosphere model, and change some procedural landscape forms (read the next chapter for more details).

Almost all changes require pressing the [Update] button to apply. Pressing the [Reset] button will return the settings to those the planet had before you opened the Editor. This means that if you make some changes and close the editor, you won't be able to reset them back again. Only restarting SpaceEngine will reset them (remember, Editor does not save the changes to the file). So if you want to achieve good results, or if you want to be more skilled in creating planets, read the next chapter of this tutorial.

Let's consider the parameters of our planet Char that we changed while playing with the Editor. We changed its atmospheric greenhouse effect to make it warmer, changed snow caps altitude, atmosphere model and color hue, and played with the procedural surface parameter. We could also make it ringless by deleting the Rings tag from the script and adding NoRings true (see below for details). Finally, our planet script should look like this:


Planet    "Char"

ParentBody     "Chara"
Class          "Terra"
Mass            1.72541
Radius          7262.85
InertiaMoment   0.332483

Oblateness      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)


Class   "Organic"
Type    "Multicellular"
Biome   "Terrestrial"



SurfStyle       0.024245
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



Height          4.36572
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



Height          9.25266
Hapke           0
SpotBright      2
SpotWidth       0.15
DayAmbient      2


NoLava          true


Model          "Thick"
Height          124.52
Density         4.88424
Pressure        2.63276
Greenhouse      57.1429
Bright          10
Opacity         1
SkyLight        3.33333
Hue             0.428571
Saturation      1Composition

CO2       94.3917
O2        5.53639
N2        0.0530705
SO2       0.0153837
Ar        0.00293737
Ne        0.000270165
H2O       0.000267185
Kr        1.95886e-005




Height      53.3841
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


RefPlane        "Equator"
SemiMajorAxis   1
Period          0.959885
Eccentricity    0.01
Inclination     0.0246517
AscendingNode   -36.7804
ArgOfPericenter 280.426
MeanAnomaly     264.157



And the planet itself appears in the game like this:

You may make any type of planet/moon/asteroid in the same way (find with the Star browser and export with the Planet editor). You may add code for other objects to the same script file (actually, it's recommended to have a single script file for your whole planetary system). It is also useful to let SpaceEngine generate some parameters automatically, like cloud layers for gas giants. This is also described in the next chapter.

Planet script details

First, make sure you are familiar with the basics of SE scripts.

The full structure of the planet script is the following:


Planet "Name"

<Main planet parameters>Life

<Life tag parameters>



<Surface tag parameters>



<Ocean tag parameters>



<Clouds tag parameters>



<Atmosphere tag parameters>



<Aurora tag parameters>



<Rings tag parameters, non-stars only>



<Accretion disk tag parameters, stars only>



<CometTail tag parameters, non-stars only>



<Corona tag parameters, stars only>



<Orbit tag parameters>



The planet must have at least the ParentBody and Mass or Radius parameters, and the Orbit tag with at least SemiMajorAxis or Period. Additionally, it and may or may not have some other parameters and tags described below (Surface, Clouds, etc.). If some parameter or tag is not specified, it may be initialized with the default value, or computed or procedurally generated by SpaceEngine. Example of a minimal planet script:

Planet    "Minimus"

ParentBody "Vega"
Radius     7200   // or Mass 1.5

SemiMajorAxis  2.5 // or Period 2.2



In this example we specified only the planet's name, its parent, its physical size or mass and its orbit size or period. SpaceEngine will compute or generate the rest of data procedurally. You may find a lot of such "poor data planets" in SpaceEngine's exoplanets catalog, because often mass or radius and period are all the data known about them to modern astronomy.

You may disable the procedural generation of some tags, except for Surface and Orbit. For example, if you are creating a planet with no life and no rings, you shouldn't type the Life and Rings tags in the code. SpaceEngine may, however, generate them procedurally. In this case you may use these parameters (in the Planet tag) to prevent the procedural generation:
NoLife true
NoOcean true
NoLava true
NoClouds true
NoAtmo true
NoAtmosphere true
NoAurora true
NoRings true
NoAccretionDisk true
NoCometTail true
NoCorona true

There is a special "No" parameter:
NoLighting true
If specified, lighting will be disabled for that object. Can be used to create a fake demo systems like a Hertzsprung–Russell star diagram, using fixed positions in space (see Orbit tag description).

Now let's look at all of the planet script tags and parameters.

Planet { }

This is the main planet tag, which describes the planetary body. Other possible body types are described by changing the name of the tag:

Planet - normal planet
DwarfPlanet - dwarf planet
Moon - normal moon
DwarfMoon - dwarf moon (minor irregular-shaped moons)
Asteroid - asteroid
Comet - comet
Star - star (sun)
Barycenter - barycenter of binary stars or binary planets

So, if you want to make a moon, use this code: Moon "Name" { ... }.

All the Planet, Moon etc. tags must have a name - a string value after the tag's name. If you want to give several alternate names for a body, separate them by a slash: Moon "Icarus/Archid II/ETA Cas 3.2". Greek letters are allowed, using abbreviations described in the introduction.

The Barycenter tag is a description of a fictional "body" that must be the parent body of the two stars in a binary star system or two planets in a binary planet system. It can itself orbit another body - star or other barycenter, so it's possible to make hierarchical multiple stars and binary planets. But make sure you use correct orbits for the two bodies orbiting the barycenter (see the Orbit tag description for details).

Below is the description of all parameters used in the Planet, Moon etc. tags.

ParentBody - the name of the object this body orbits (i.e. its "parent"). For example, if you are making a moon, its parent must be a planet (it is possible to make a moon orbiting a star, but this is not correct in the astronomical sense). If you are making a binary planet system or binary star system, both of its components must revolve around a barycenter, so this baycenter's name must be specified in their ParentBody parameter.

Class - the string parameter describing the surface class of a planet (affecting the procedural surface generation) or spectral class of a star. The planet classes are:
"Asteroid" - an asteroid-like body with an irregular shape.
"Selena" - a rocky planet without an atmosphere (like Mercury, Moon, Io).
"Desert" - a rocky planet with an atmosphere, but without water on its surface (like Venus and Mars).
"Terra" - a rocky planet with an atmosphere and water on its surface (like Earth).
"Oceania" or "WaterWorld" - an ocean planet.
"IceWorld" - an icy planet with or without an atmosphere (like Europa, Ganymede, Callisto).
"Titan" - an icy planet with an atmosphere and hydrocarbon oceans (like Titan).
"IceGiant" or "Neptune" - an ice giant planet (like Uranus or Neptune).
"GasGiant" or "Jovian" - a gas giant planet (like Jupiter or Saturn).
The star classes are described in the Creating a star manual.

DiscMethod - discovery method, used for real exoplanets or stars. These values are allowed:
"RadVel", "Transit", "Astrometry", "MicroLens", "Imaging", "TTV", "TDV", "OrbitLight", "ETV", "Variable", "Pulsar", "Polarimetry", "AuroraEmis", "Interfer"
DiscDate - discovery date, used for real exoplanets and stars. Format - "YYYY.MM.DD" or "YYYY". Example: DiscDate "2010.06.15" or DiscDate "2010".

Radius - surface radius in kilometers. For gas giants this is the radius of the 1 atm pressure level.
RadiusSol or RadSol - surface radius in multiples of the Sun's radius (1 Sun radius = 696,000 km).
Mass - mass in Earth masses (1 Earth mass = 5.9742·1024 kg).
MassSol - mass in Solar masses (1 Sun mass = 1.98892·1030 kg).
Msini - mass in Earth masses, multiplied by the sine of the orbit's inclination relative to the view vector. Used for real exoplanets with no inclination known. SpaceEngine attempts to calculate or generate the inclination, then computes the real mass from this. This parameter is also shown in the interface and the object's Wiki.

Oblateness - polar oblateness of the object.
OblatenessInfo - polar oblateness of the object shown in the interface. May differ from Oblateness, not used in the physics/graphics engine. If not specified, the Oblateness value is used.
InertiaMoment - inertia moment factor of the object.
Age - age of the object in billions of years (gigayears).

RotationPeriod - absolute rotation period (length of sidereal day) in hours.
RotationEpoch - rotation epoch in Julian days.
Obliquity, EqAscendNode - obliquity of the rotation axis and ascending node of the equator in degrees; jointly determines the orientation of the rotation axis.
PoleRA, PoleDec - right ascension and declination of the northern pole, alternate method of determining orientation of the rotation axis.
RotationOffset - rotation offset in degrees (i.e. orientation adjustment), used with Obliquity and EqAscendNode.
ZeroMeridian - position of the zero meridian in degrees (i.e. orientation adjustment), used with PoleRA and PoleDec.
Precession - period of the axial precession in years.
TidalLocked true - if specified, object will be tidally-locked to it's parent, i.e. will face it with one side. Script's rotational parameters will be ignored, and calculated from the orbital parameters.

AlbedoBond - the Bond albedo, affects surface temperature.
AlbedoGeom - the gemoetric albedo, affects object brightness and illumination of neighboring objects.
Albedo - specifies both Bond and geometric albedo together.
Brightness - overall rendering brightness of the object.
Color - average color of the object, used to render it as a point from a distance and to illuminate neighboring objects. If not specified, can be calculated automatically by SE when the user approaches the object.

SlopeParam - slope parameter of a comet.
AbsMagn - absolute magnitude of a star, asteroid, or comet.
AppMagn - apparent magnitude of a star.
Lum or Luminosity - luminosity of a star in solar units.
Teff or Temperature - effective ("surface") temperature of a star.

Life { }

This is the life description tag.

Class - chemical class of the life:
"Organic" - Earth-like organic life based on water and carbon.
"Exotic" - life based on other principles than Earth-like life.

Type - development level of the life:
"Unicellular" - unicellular.
"Multicellular" - multicellular.

Biome - habitat of the life on the planet:
"Subglacial" - in a subsurface ocean on icy worlds like Europa.
"Marine" - marine life like on Earth.
"Terrestrial" - terrestrial life like on Earth.
"Floaters" or "Aerial" - aerial life in a gas giant atmosphere.
You may specify multiple biomes by separating them by slash: Biome "Marine/Terrestrial"

Panspermia true - means that this planet's life evolved from life forms from another planet (e.g. microbes carried from one planet to another by asteroid impact debris).

You may specify two Life tags, describing different classes of life. For example, a world like Titan could have both organic life in its subsurface ocean and exotic life on its surface and in hydrocarbons oceans.

If no Life tag is specified, the life on the planet may be generated procedurally. If you want to disable the procedural generation, use this parameter in the Planet tag:
NoLife true

Surface { }, Ocean { }, Lava { }, Clouds { }

These are planet layer description tags. A layer is a spherical surface, which represents the solid surface of a planet, its ocean surface, or one or more cloud layers. Layers may or may not be displaced with a Bump map, colored by a Diffuse map and may or may not have an emission or Glow map. Each planet has at least a Surface layer, and may have an Ocean layer, and up to ten Clouds layers. The Lava layer is not implemented yet.

If one of the layer tags is not specified, that layer may be generated procedurally. If you want to disable the procedural generation of the specific layer (except the Surface), use these parameters in the Planet tag:
NoClouds true - disable all cloud layers,
NoOcean true - disable ocean,
NoLava true - disable lava (lava layer is not implemented yet).

Planet can have several cloud layers with different textures, altitudes, and moving velocities. To achieve this, simply specify the Clouds tag several times with different parameters inside them. Or you may use an empty tag: Clouds { } to let SpaceEngine generate all parameters procedurally. A planet can also have several ocean layers, but this is useless now.

Below there are descriptions of all parameters allowed inside these tags. First we will describe the parameters common to all layers, then the parameters allowed only in a specific layer tag.

Parameters common for all the Surface, Ocean, and Clouds tags

If you are making a planet with textures stored on disk, use the DiffMap, BumpMap, and GlowMap parameters to describe the textures (read this manual for details: Creating custom planet textures).

DiffMap, BumpMap, GlowMap - path of the folder with cubemap texture tiles for the Diffuse, Bump, and Glow maps respectively. If not specified, a procedural map may be generated.
DiffTileSize, BumpTileSize, GlowTileSize - resolution of the tile images for the corresponding maps.
DiffTileBorder, BumpTileBorder, GlowTileBorder - width of the border on the tile images for the corresponding maps.

BumpHeight - height scale of the Bump map in km, i.e. height difference between the lowest and highest point on the layer.
BumpOffset - negative offset of the landscape in km. For example, if you want to make a landscape from -8 km to +12 km, type BumpHeight 20 and BumpOffset 8.

DiffMapAlpha - how to use the alpha channel of the Diff texture:
"Water" - water specular (solar specular spot on water surfaces), used as a river/lakes/seas mask on Earth
"Ice" - ice specular (solar specular spot follows all curved surfaces of the body), used as an ice mask on a cold planets,
"Transp" - surface transparency, used for clouds only,
"None" - ignore the alpha channel.

GlowMode - how to use the Glow texture:
"Alpha" - the mode is set by the alpha channel of the glow texture (0.0-0.33 = night, 0.34-0.66 = permanent, 0.67-1.0 = thermal),
"Night" - night side city lights (not visible in daytime),
"Permanent" - permanent lights (do not react to external lighting),
"Thermal" - thermal lights, react to local temperature, and have a complex format (RGB channels of the texture represents a single 24-bit temperature value).

GlowColor - scale (multiply) the RGB color of the Glow texture by this value.
GlowBright - overall brightness of the Glow texture.

ModulateColor - scale (multiply) the RGB and Alpha colors of the Diff texture by this value.

SpecBrightWater - brightness of the solar glare spot on the water surface.
SpecBrightIce - brightness of the solar glare spot on the ice surface.
SpecularBright - brightness of the solar glare spot on the both water and ice surfaces.
SpecularPower or SpecPower - size of the solar glare spot (default value is 55) - the lower the value, the larger the spot.

Hapke or Lommel - Lambert lighting model to Hapke lighting model ratio. Use Hapke 0.0 for pure Lambert model (good for gas giants) or Hapke 1.0 for pure Hapke model (good for dusty bodies, like airless or desert planets - simulates the opposition glare effect). Use intermediate values for mixed lighting models (linear interpolation).
SpotBright - brightness of the opposition glare spot.
SpotWidth - size of the opposition glare spot.

DayAmbient - fake ambient lighting during daytime. Use for bodies without atmospheres and for cloud layers.

Exposure - the same as Brightness in the Planet tag - overall rendering brightness of the object. Saved for backward compatibility.

Parameters allowed only in the Surface tag

The following parameters control the procedural surface textures.

SurfStyle or Style - style (color scheme) of the surface. Corresponds to the StyleRange in the palette file.
OceanStyle - style (color scheme) of the ocean. Corresponds to the StyleRange in the palette file.
Randomize - a randomization vector. If you make two identical planets (with all parameters identical), type different randomization values to make them look different.

colorDistFreq, colorDistMagn - frequency and magnitude of "spots" of various detail textures.
colorConversion true - if specified, SE converts colors of atlas textures to colors defined by the palette file or the colorBeach ... colorUpPlants parameters (see below).
detailScale - scale of the detail texture noise, visible close to the surface.
drivenDarkening - amount of darkening of the leading/driven hemisphere of icy moons.

seaLevel - relative depth of sea, obsolete parameter (use Ocean tag instead).
snowLevel - relative height of snow level on mountains
tropicLatitude, icecapLatitude - sine of the latitude of tropics and polar ice cap edge (0.0 - equator, 1.0 - pole).
icecapHeight - relative height of ice caps.
climatePole, climateTropic, climateEquator - climate of poles, tropics, and equator (it is an index into color table, 0.0 - desert, 0.5 - temperate zone, 1.0 - snow).
tropicWidth - tropics width.

mainFreq - frequency of main (global) noise, defines continents/oceans distribution.
venusFreq, venusMagn - frequency and magnitude of Venus-like landscape forms.

mareFreq, mareDensity - frequency and density (number) of impact basins similar to lunar maria.

erosion - magnitude of a water erosion on mountains (0.0 for dry planets, 1.0 for wet planets).
terraceProb - probability of terraced mountains.
montesFreq, montesMagn, montesFraction - frequency and magnitude of mountain ranges, and relative fraction of these structures on the planet's surface.
montesSpiky - amount of spiky mountains like in SE 0.94.

hillsFreq, hillsMagn, hillsFraction, hills2Fraction - frequency and magnitude of hills, a.k.a. "eroded mountains", and relative fraction of these structures on the planet surface (two different looking forms).

dunesFreq, dunesMagn, dunesFraction - frequency and magnitude of sand dunes, and relative fraction of these structures on the planet surface.

canyonFreq, canyonMagn, canyonFraction - frequency and magnitude of canyons, and relative fraction of these structures on the planet surface.

riversFreq, riversMagn, riversSin, riversOctaves - frequency, magnitude, curvature, and number of octaves of pseudo-rivers.

cracksFreq, cracksMagn, cracksOctaves - frequency, magnitude, and number of octaves of cracks in an icy crust, like on Europa.

craterFreq, craterMagn, craterDensity, craterOctaves - frequency, magnitude, density (number), and number of octaves of craters.
craterRayedFactor - number of rayed craters relative to regular craters.

volcanoFreq, volcanoMagn, volcanoDensity, volcanoOctaves - frequency, magnitude, density (number), and number of octaves of volcanoes.
volcanoActivity - amount of active volcanoes on the planet.
volcanoFlows - length of the lava flows.
volcanoRadius - radius of volcanoes.
volcanoTemp - temperature of lava in caldera and in flows in Kelvins.

lavaCoverTidal, lavaCoverSun, lavaCoverYoung - for molten planets: relative amount of lava coverage by tidal heating, sun heating, and heating due to young age of the planet.

stripeZones, stripeFluct, stipeTwist - number of Jupiter-like zones or stripes, amount of their randomness, and amount of twisting (used for gas giants).

cycloneMagn, cycloneFreq, cycloneDensity, cycloneOctaves - cyclone magnitude, frequency, density, and number of octaves (used for gas giants).

colorSea, colorShelf, colorBeach, colorDesert, colorLowland, colorUpland, colorRock, colorSnow - 8 vectors (in RGB or RGBA format) for the color table from lower altitudes to higher altitudes. Alpha value, if specified, modulates the brightness of the ice specular (on cold planets), or cloud layer temperature (for hot gas giants and brown dwarfs).

colorLayer0, colorLayer1, colorLayer2, colorLayer3, colorLayer4, colorLayer5, colorLayer6, colorLayer7 - the same as previous, can be used for gas giants and brown dwarfs (with less confusion).

colorLowPlants and colorUpPlants - modification of colorLowland and colorUpland parameters for planets with life, sets the vegetation color.

Parameters allowed only in the Ocean tag

Height - height of the water surface above the lowest point of the planet's surface in kilometers (i.e. from the Radius in the Planet tag minus BumpOffset in the Surface tag). Make it lower than the highest mountains (less than BumpHeight) to obtain the seas and continents, and above them to get a planet completely covered by water.

Parameters allowed only in the Clouds tag

Height - the height of the clouds above the lowest point of the planet's surface in kilometers (i.e. from the Radius in the Planet tag minus BumpOffset in the Surface tag). Make it higher than the highest mountains (more than BumpHeight), if you want clouds to not overlap with mountains.
Velocity - velocity of the clouds at the equator relative to the planet's surface, in kilometers per second.
Coverage - clouds coverage (0...1). Note that this is very approximate coverage amount.
ModulateColor - scale (multiply) the RGB and Alpha colors of the clouds Diff texture by this value. Use alpha component to specify overall clouds layer opacity.

The next parameters control the procedural cloud textures.

mainFreq, mainOctaves - main clouds pattern frequency and number of noise octaves.

stripeZones, stripeFluct, stipeTwist - number of Jupiter-like zones or strips, amount of their randomness, and amount of twisting (used for gas giants).

cycloneMagn, cycloneFreq, cycloneDensity, cycloneOctaves - cyclones magnitude, frequency, density, and number of octaves (used for gas giants and terrestrial planets).

TidalLocked true - if specified, the cloud layer will form a giant cyclone on one side of a planet. Used for a planet tidally locked to its sun.

Note about multiple clouds layers. You can type the Clouds tag several times with empty curly braces:
Clouds { }
Clouds { }
Clouds { }

This will generate three cloud layers with automatic procedural parameters. However, you can type Height, Velocity and other physical parameters for each Clouds tag individually. But the procedural texture parameters will always be the same in each cloud layer, so you can type them in any Clouds tag or even in the Surface tag (look above).

Atmosphere { }

This is the atmosphere tag. SpaceEngine uses several precomputed atmosphere models, stored in the data/models/atmospheres/Atmospheres.pak file, in a special binary format with the extension .atm. They are described in the script file atmospheres.cfg, stored in the same pak file. To add your own model, you may create a new file addons/models/atmospheres/MyModels.cfg (file name doesn't matter), and enter the atmosphere model scripts there. Note that not all computers can correctly generate the .atm files due to unsupported geometry shaders or some other issues. Also, the newly created atmosphere model may be used only with your planets, they will not appear on any procedural planets in the SE Universe. So it is recommended to just use standard SE models. You may adjust their appearance with wide limits using parameters Bright, Hue, and Saturation (see below).
List of the standard atmosphere models:
Earth.atm - Earth atmosphere model, normal density, blue sky and red sunset.
Mars.atm - Mars atmosphere model, normal density, red sky and blue sunset.
Venus.atm - Venus atmosphere model, thick, yellow sky and blue sunset, big density.
Jupiter.atm - Jupiter atmosphere model, normal density, white sky and yellow sunset.
Neptune.atm - Neptune atmosphere model, normal density, deep blue sky and pink sunset.
Titan.atm - Titan atmosphere model, normal density, violet-green-orange sky and red sunset.
Pluto.atm - Pluto atmosphere model, thin, nearly black sky and pale blue sunset.
Chlorine.atm - Custom atmosphere model, thick, green sky and green sunset.
Thick.atm - Custom atmosphere model, thick, white sky and orange sunset.
Sun.atm - Custom atmosphere model, thin, white sky and white sunset (resulting color is matched to star's light color).

Model - the name of the atmosphere model listed above, or your own model if you have created one (without a file extension, i.e. "Earth", "Venus", etc).
Height - height of the top boundary of the atmosphere in km. Typical value 50-100 km for terrestrial planets, 500-2000 km for gas giants.
Pressure - pressure at zero height in [url=]atmospheres[/url].
Density - density of the air at zero height in kg/m3.
MolarMass - average molar mass of air gases in g/mol.
Adiabat - adiabatic index.
Greenhouse - temperature of the greenhouse effect in Kelvins.
Bright - rendering brightness. Default value is 10.
Opacity - rendering opacity. To avoid visual artifacts, use the default value of 1.
SkyLight - brightness of the illumination of the planet's surface by the sky during the day. Default value is 3.3333.
Hue - change of the color hue. Default value is 0.
Saturation - change of the color saturation. Default value is 1.

Composition - the tag describing the chemical composition of the atmosphere. The tag must contain several numerical parameters named after gases; values are the amount of these gases in percent. Example of the Composition tag for Earth:


N2  77.7729
O2  20.8625
Ar  0.9303
H2O 0.4000
CO2 0.0398


Supported gases are: H2, He, Ne, Ar, Kr, Xe, O2, N2, CO, CO2, SO, SO2, Cl2, NaCl, H2S, H2O, NH3, CH4, C2H2, C2H4, C2H6, C3H8. SpaceEngine can compute Density, MolarMass, Adiabat and Greenhouse based on atmosphere composition.

All values except Composition can be changed in real time with the Planet editor.

If the Atmosphere tag is not specified, the atmosphere may be generated procedurally. If you want to disable the procedural generation, use this parameter in the Planet tag:
NoAtmosphere true

Aurora { }

This is the aurora tag. For physical realism, do not create aurora on airless bodies. Aurora is always created at the top of the atmosphere, this means that its bottom height is equal to the height of the atmosphere.

Height - the vertical span of the aurora in km.
TopColor - aurora top color (RGB).
BottomColor - aurora bottom color (RGB).

The next set of parameters describes the north and south auroral rings, respectively.

NorthLat, SouthLat - latitude of the center of the auroral ring in degrees.
NorthLon, SouthLon - longitude of the center of the auroral ring in degrees.
NorthRadius, SouthRadius - radius of the auroral ring in km.
NorthWidth, SouthWidth - width of the auroral ring in km.
NorthRings, SouthRings - number of "stripes" or "subrings".
NorthBright, SouthBright - brightness of the auroral ring.
NorthParticles, SouthParticles - number of particles (sprites) in the auroral ring. The default vale of 50000 is used if not specified.

If the Aurora tag is not specified, the aurora may be generated procedurally. If you want to disable the procedural generation, use this parameter in the Planet tag:
NoAurora true

Rings { }

This is the planetary rings system tag. Used for planets, moons, and asteroids.

Texture - the path to the rings texture. It must be in RGBA format and have dimensions of x*2 pixels, where x is the length of texture (512, 1024, etc). The first row of pixels is a front-light radial color pattern (with opacity in the alpha channel), and the second row is a back-light radial color pattern (with opacity in alpha channel). Look at Saturn's rings in SpaceEngine: it has a different appearance when it is back-lit, i.e. when the Sun is behind Saturn. If the Texture parameter is not specified, a procedural texture will be generated.

InnerRadius - radius of the inner edge of the rings in km.
OuterRadius - radius of the outer edge of the rings in km.
FrontBright - brightness of rings when front-lit.
BackBright - brightness of rings when back-lit.
Density - global opacity multiplier.
Brightness or Exposure - global brightness multiplier.

RotationPeriod - rings rotation period in hours.
RotationOffset - rotation offset in degrees (i.e. orientation adjusting). Does not affect anything because ring textures in the current version ( have no longitudinal features.

If the Rings tag is not specified, the rings may be generated procedurally. If you want to disable the procedural generation, use this parameter in the Planet tag:
NoRings true

AccretionDisk { }

This is the accretion disk tag. Used to create an accretion disk around a black hole, neutron star, or white dwarf.

InnerRadius - radius of the inner edge of the disk in AU. If not specified, a procedural value is generated.
OuterRadius or Radius - radius of the outer edge of the disk in AU.
AccretionRate - accretion rate in solar masses per year. Used to calculate other parameters if they are not specified.
Temperature - temperature of the hottest part of the disk in Kelvin.
Luminosity - luminosity of the disk in Solar luminosities.
TwistMagn - strength of the twist effect on the texture.
Density - density or opacity value.
Brightness or Exposure - global brightness multiplier.

If the AccretionDisk tag is not specified, the accretion disk may be generated procedurally for black holes, neutron stars, and white dwarfs. If you want to disable the procedural generation, use this parameter in the Planet tag:
NoAccretionDisk true

CometTail { }

This is the comet tail tag. Used for comets and evaporating planets.

MaxLength - maximum length of the tail (i.e. when comet or planet passes its orbit periapsis) in AU.
Particles - number of particles (sprites).
GasToDust - gas particles to dust particles ratio. Value of 0.0 generates a fully dusty tail, 1.0 generates a fully gaseous (ion) tail.
Bright - overall brightness of the tail.
GasBright - brightness of the gas particles.
DustBright - brightness of the dust particles.
GasColor - color of the gas particles.
DustColor - color of the dust particles.

If the CometTail tag is not specified, the comet tail may be generated procedurally. If you want to disable the procedural generation, use this parameter in the Planet tag:
NoCometTail true

Corona { }

This is the star corona tag. Used only for normal stars (i.e. not allowed for black holes, neutron stars, and white dwarfs). The corona effect is procedural.

Period - animation period in years; the lower the value, the faster animation is.
Radius - radius of the corona in km.
Brightness - brightness of the corona.
RayDensity - density of the ray-like features.
RayCurv - curvature of the ray-like features.

If the Corona tag is not specified, the star corona will be generated procedurally. If you want to disable the procedural generation, use this parameter in the Planet tag:
NoCorona true

Orbit { }

This is the orbit tag. The current version ( uses only Kepler's equation to compute the orbital motions of the bodies. This tag uses Kepler orbital elements to describe the orbit of the object.

Epoch - epoch of the periapsis passage in Julian days.
Period - orbital period T in years (used for circular and elliptical orbits). 1 year = 365.24218985 days.
MeanMotion - mean motion n in degrees per day (used for parabolic and hyperbolic orbits).
GravParam - gravity parameter ? (used for parabolic and hyperbolic orbits).
SemiMajorAxis - semimajor axis a in AU (used for elliptic and hyperbolic orbits). Negative for hyperbolic orbits.
PericenterDist - periapsis distance q in AU (used for parabolic and hyperbolic orbits).
Eccentricity - eccentricity e.
Inclination - inclination i in degrees.
AscendingNode - longitude of the ascending node ? in degrees.
ArgOfPericen or ArgOfPericenter - argument of periapsis ? in degrees.
LongOfPericen or LongOfPericenter - longitude of periapsis (? + ?) in degrees.
AscNodePreces - period of precession of the longitude of the ascending node in years.
ArgOfPeriPreces - period of precession of the argument of periapsis in years.
MeanAnomaly - mean anomaly at epoch M0 in degrees.
MeanLongitude - mean longitude at epoch L0 (M0 + ? + ?) in degrees.

RefPlane or Type - specifies the reference plane for the Keplerian orbit, or used to describe a special type of object placement. If not specified, default value is assigned, based on the object type. Possible values are:
"Equator" or "Laplace" - reference plane is the parent object's equatorial plane. Default for moons.
"Ecliptic" - reference plane is the ecliptic plane (our Solar system's one!). Default for asteroids and comets.
"Extrasolar" - reference plane is the image plane (i.e. the plane perpendicular to the visual ray while looking from the Earth). Default for planets, stars, and barycenters.
"Static" - the object will be fixed relative to the parent object, and will follow it while it moves. Parameters PosXYZ and PosPolar is used to specify the relative position.
"Fixed" - the object will be fixed relative to the parent object, and will follow it and rotate with it. Parameters PosXYZ and PosPolar is used to specify the relative position.

The "Static" and "Fixed" types are used to make unrealistic systems with objects fixed in relation to each other. They use these parameters to specify the position relative to the parent object:

PosXYZ - a position vector in Cartesian coordinates, in km. Example: PosXYZ (5000 1000 2000).
PosPolar - a position in spherical coordinates, in the form of (longitude in degrees, latitude in degrees, distance in kilometers). Example: PosPolar (45 30 3000).

There are also simplified forms of the static and fixed positions. These parameters must be used in the Planet tag instead of Orbit tag:
StaticPosXYZ - equal to the Orbit { } tag with Type "Static" and PosXYZ.
StaticPosPolar - equal to the Orbit { } tag with Type "Static" and PosPolar.
FixedPosXYZ - equal to the Orbit { } tag with Type "Fixed" and PosXYZ.
FixedPosPolar - equal to the Orbit { } tag with Type "Fixed" and PosPolar.

If the Orbit { } tag is not specified, it is equal to a static position with coordinates (0, 0, 0), i.e. in the center of the parent body. This is used to describe a solitary star with additional parameters, placed in the center of the system. See Creating a star for details.

Different default reference planes are chosen for different types of objects to make the massive catalogs more compact. Ecliptic is used in our Solar System for planets, asteroids and comets. Planets in the Solar System catalog have RefPlane "Ecliptic" specified directly, because the default for planets is "Extrasolar". So the asteroids and comets catalog do not use RefPlane, which makes them more compact. The same is true of the exoplanet catalog and the catalog of binary and multiple stars: the default RefPlane for them is "Extrasolar". If you are making a custom planetary system, it's better to specify RefPlane directly for its planets and asteroids. Specify RefPlane "Equator" to align their orbits with the star's rotational axis. You need not specify RefPlane for moons, because the default value "Equator" is good for them.

Some orbital parameters, if not specified, can be calculated or generated by SE from other parameters. For example, Period can be calculated from SemiMajorAxis or PericenterDist and the mass of the parent object. If Inclination and AscendingNode are unknown for some planets in the planetary system, they can be procedurally generated based on other planets with known Inclination and AscendingNode in the same system.

To make a binary star system or a binary planet system, make sure that the following parameters are the same for both bodies in the system: Eccentricity, Inclination, AscendingNode, MeanAnomaly. The ArgOfPericenter parameter of the first body must differ by 180 degrees from the same parameter of the second body. It's also necessary to calculate the SemiMajorAxis parameter for each body based on their masses using these simple formulae:

Body 1: a1 = R * M2 / (M1 + M2)
Body 2: a2 = R * M1 / (M1 + M2)

where R is the distance between the bodies, i.e. sum of their semimajor axes a1 + a2;
M1 and M2 are masses of bodies.

A triple star system is usually hierarchical: two stars orbiting their common barycenter, and this barycenter and the third star orbiting the main system barycenter. The same hierarchical principle can be applied to more complex systems. To calculate the correct semimajor axes for each pair, you must calculate the mass of each barycenter, using the sum of the masses of all the stars/star systems orbiting it, and use that in the formula listed above.

If you provided the masses of the object and its parent object, SpaceEngine can compute the orbital period automatically. For binary objects (binary stars and planets), it might be necessary to compute the orbital period manually. Use this formula:

P = sqrt(R3 / (M1 + M2))

Here sqrt is the square root function;
R is the distance between the bodies, i.e. the sum of their semimajor axes a1 + a2, in astronomical units;
M1 and M2 are the masses of the bodies in Solar masses;
then period P will be in years.