2022-07-23 17:01:30 -04:00

3.2 KiB

Title, Sort_Priority
Title Sort_Priority
Planet Generation 80

Planet Generation

The first thing you'll need to create on a planet is its surface, this can be done in a variety of ways

Surface

Ground of the planet

Ground Size

groundSize is the absolute simplest way to make a planet's surface, you simply specify a radius and New Horizons will make a sphere for you.

{
    "name": "My Cool Planet",
    "Base": {
        "groundSize": 100
    }
}

Heightmaps

Heightmaps are a way to generate unique terrain on your planet. First you specify a maximum and minimum height, and then specify a [heightMap]({{ "Celestial Body Schema"|route }}#HeightMap_heightMap) image. The more white a section of that image is, the closer to maxHeight that part of the terrain will be. Finally, you specify a textureMap which is an image that gets applied to the terrain.

{
    "name": "My Cool Planet",
    "HeightMap": {
        "minHeight": 5,
        "maxHeight": 100,
        "heightMap": "planets/assets/my_cool_heightmap.png",
        "textureMap": "planets/assets/my_cool_texturemap.png"
    }
}

There are also tools to help generate these images for you such as Textures For Planets{ target="_blank" }.

Variable Size Modules

The following modules support variable sizing, meaning they can change scale over the course of the loop.

  • Water
  • Lava
  • Star
  • Sand
  • Funnel
  • Ring

To do this, simply specify a curve property on the module

{
    "name": "My Cool Planet",
    "Water": {
        "curve": [
            {
                "time": 0,
                "value": 100
            },
            {
                "time": 22,
                "value": 0
            }
        ]
    }
}

This makes the water on this planet shrink over the course of 22 minutes.

Quantum Planets

In order to create a quantum planet, first create a normal planet. Then, create a second planet config with the same name as the first and isQuantumState set to true. This makes the second planet a quantum state of the first, anything you specify here will only apply when the planet is in this state.

{
    "name": "MyPlanet",
    "Orbit": {
        "semiMajorAxis": 5000,
        "primaryBody": "Sun"
    }
}
{
    "name": "MyPlanet",
    "isQuantumState": true,
    "Orbit": {
        "semiMajorAxis": 1300,
        "primaryBody": "TIMBER_HEARTH"
    }
}

Barycenter (Focal Point)

To create a binary system of planets (like ash twin and ember twin), first create a config with FocalPoint set

{
    "name": "My Focal Point",
    "Orbit": {
        "semiMajorAxis": 22000,
        "primaryBody": "Sun"
    },
    "FocalPoint": {
        "primary": "Planet A",
        "secondary": "Planet B"
    }
}

Now in each config set the primaryBody to the focal point

{
    "name": "Planet A",
    "Orbit": {
        "primaryBody": "My Focal Point",
        "semiMajorAxis": 0,
        "isTidallyLocked": true,
        "isMoon": true
    }
}
{
    "name": "Planet B",
    "Orbit": {
        "primaryBody": "My Focal Point",
        "semiMajorAxis": 440,
        "isTidallyLocked": true,
        "isMoon": true
    }
}