Space Composition (Instead of World Composition)

Alright, part of this game takes place in space. And as we know, space is huge. You may think it’s a long way to the corner chemist for a chocolate soda, but that’s just peanuts to space. You won’t believe how mind-bogglingly big it is…

So, my idea was to use massive sized items for stars and planets (for the sake of this example, I’ll only be using stars) to dwarf the sizes of the various ships. To this end, I enabled world composition and have 40km x 40km x 40km levels, and I have 343 of them (7 levels x 7 levels x 7 levels). Now, I’m probably doing this wrong, but in in the details of each LevelBounds (In World Outliner, not World Browser), I assign absolute position on all the axes for each level. so level_0_0_0 is centered on 0,0,0 of the world. While level_1_0_1 is placed at 1,0,1 (not the actual distance, but in multiples of 40km).

I have yet to add the streaming volumes because I am wanting to know if I am on the right track. So many questions about level heights are referencing heightmaps and World Machine and I am not using that for space.

Sounds about right.

A lot of your method of handling this will be dependant upon your method of travelling in space.

Depending upon how proficient you are in C++, you may want to look at creating your own World Composition system for 3D spaces. I can’t imagine that would be terribly easy, or possible on a launcher build of the engine, but might be what you need.

If you have multiple chunks (levels, whatever you want to call them) containing random or similar areas (asteroid field, etc.) you may want to look at Rama’s system for spawning in multiple copies of the same ULevel.

EDIT: Also, take a look at World Origin relocation. The related function (RequestNewWorldOrigin) is publicly exposed in World.h, so you don’t need to go through World Composition.

There are multiple versions of space travel. Warp, Hyperspace (you’re sent into a different looking space volume (this game is a spiritual successor of Star Control 2)) and Jump drive (quick travel, just not that quick).

As for the world composition system, I’m almost done making the base map system which I will copy and paste into the system map folders so it’s all predone with the blueprints that hold standard info in the persistent level (skyboxes, player starts, gravity effects).


Each cube is one of the levels (they are not all currently placed, but will be soon).

How dynamic is your world going to be? If all content needs to be placed by hand, the manual approach would be a good idea; but if it is going to be more dynamic (random NPCs, structures, etc…), you might want to look into automating the creation of your level volumes.

It’s going to be mixed. The sector will have mostly placed with the occasional npc pop up from time to time (space being big, you’ll not often run into anything unless you’re looking for trouble)

Curious, how many stars will you end up with in your completed game? planets, etc. Gonna be huge…! (like you said) <grins>

The database all ready has 309 stars, 30 planets, 50 moons and 4 visitable asteroids. And those numbers are growing. Sadly, city and terrain mapping is still on paper. It’s pretty much just me, and I’m looking for a job, trying to get some donations to buy art assets (and trying to get interns from my university to help with art assets).

You storing information in actual DB? Or some sort of JSON text file? That’s a ton of space for 309 stars…??? You are really going to have open space, which is really cool…true feeling of being “out there”. How about doing a kickstarter or some sort of patreon page?



I started a gofoundme:

My game’s gofundme.

Done. Can’t wait to see the final product.