Home Artists Posts Import Register

Content

The way that you start a new game in 0.7 is different to 0.6.

In 0.6, as soon as you start a game it builds the universe. Any control over how the universe takes shape needs to be done with mod options or map generation controls.

Mod options are not great because they are hidden away and the types of settings you can have is very restrictive. 

Map generation options are not great because they’re even more restrictive as they are designed for a single surface, not for adjusting the construction of a universe.

Both of these options let you make decisions about the game before the universe is made, which is good, but the types of things that I can present to you are so limited and simple that it is far too restrictive. 

After the universe is generated then the universe can be modified with console commands. This is a more flexible way to customise the game, but requiring the player to run commands through the console is a really bad option for most players for obvious reasons. It does have the advantage of really detailed and varied customisation though. For example, it’s possible in 0.6 to have players in different forces and then use commands to have each force have their own homeworld. 

There are of course pretty extreme difficulties in getting the average user to find, modify, and execute the code that they want, but that’s not even the biggest problem. The main problem is that the universe has already been created, so commands can only modify the existing universe, and for reasons I won’t go into that can get very messy.

In 0.7, I’m introducing something like a loading lobby.

Instead of spawning directly on the planet, you spawn into a holding surface or “lobby” waiting area. At this point the universe won’t be generated. While in the area you’ll get an interface that you can use to modify the universe generation properties. This is an interface that I have full control over so I can add a lot more options, conditional options, or other UI elements. Then when you’re ready, you can kick things off, generate the universe, and you’ll be spawned into the world like the start of a normal game.

At the moment the only options I’ve set up is a single player vs multiplayer multi-planet start, but in the future I can move a lot of options here. This sort of arrangement is also great for things like arranging players into teams before their planets are created. It’s also helpful for other mods to be able to hook into the process and alter the generation in other ways. 

Another nice benefit of the lobby system is that it is the default surface so some of the weird multiplayer quirks related to players always spawning on Nauvis get solved (like all new players going there, or enemy players getting sent to Nauvis if their surface was deleted while they were logged out).

The next big change is that “zones” (plants, moons, stars, asteroid fields, etc) all have clearly defined subtypes. 

There are 3 types of star, and each star type has various data on the sub-zones (like planets) it must have, might have (and the probability for that), and the types they can’t have.

For planets, moons, asteroid fields and similar things, each of these have subtypes. Typically a subtype is associated with a primary resource, but some of them don’t have that association. A subtype is defined by a lua table, and it can hold a lot of information like resource densities, but it can also have things like which noise expressions to use for different things. The planets for example, each one has its own noise expression for elevation so that the landscape feels unique.

Not only is this easy for me to manage, but it’s also a really convenient system for other mods to hook in to. So for example, it would be easy for a mod to make a glitter world planet that has abundant gold and silver resources, and either uses one of the elevation noise expressions that I made, remix some of my expressions, or specify their own. They could even make something like a maze world. It’s not just the planets either, they can make new star types too, like a pulsar that only has molten or radioactive planets, or a new type of an asteroid field that presents as an orbital ring that got lost to the void. 

This is all towards the goal of getting Space Exploration to be more of a platform that other people can build off, extend, and adjust. Mod compatibility has been (with some exceptions) a low priority in the past because I expected the systems to change so much. Now that I’m building what should be the final systems, mod compatibility and extensibility is more of a priority.


Files

Comments

Andreas

Is the lobby... the spaceship before the crash :D?

Otto Vollbrecht

Sounds awesome! Can't wait for the config mods people will come up with.

Earendel

That's one of the things I'm considering. Right now it's a concrete square, but it could be themed as a spaceship, escape raft, maybe even a small space station or satellite.

Stefan Stark

I'm so excited about 2.0 and 0.7. Great job so far, Earendel. It's so much fun.