There is a stack of technology:
-
Generator - this takes a world configuration file and creates the world chunks. This can be configured to build an infinite world. It’s a lib that can be called from the command line, linked into the server, or built into a tool. This can generate infinite worlds. (Up to the limitation of floating point precision.)
-
World Builder - this is an editor app that allows you to visually create world configurations. The World Builder then calls the Generator to create all the visualisations you see in the app. At the moment, the World Builder is configured to only allow the creation of wrapped worlds.
-
Server - this app runs the main game logic on the server. It will load a pre-generated world that has come from the Generator. It can also be configured to call the generator on-demand if sections of the world are missing. In the past we had the server configured to call the generator, but the generator can require quite a lot of memory and this caused the servers to crash. So we switched the generator to use a “flat world configuration” as this requires almost zero memory. If the world is pre-generated it loads and streams almost instantly. If the world is generated on demand it can be quite slow depending on the complexity of the world configuration. (The configs can get extremely complicated.)
-
Game Client - this app (basically the game you play) talks to the server, streams chunks and learns about the world. The game client can connect to infinite and wrapped worlds.
Currently the Generator and World Builder have been released as part of the modding tools. The Server will be released in the future.
This allows:
- The game can be configured to create and play infinite worlds.
- The game can also be configured to create and play wrapped worlds.
- The main Oort MMO will contain wrapped worlds.
- Players can host their own servers if they want to play on infinite worlds.
Happy to answer more questions if you want more details.