Thank you for your kind comment, I have been working on this for 4 months.
The generation of a planet takes less than 1 second, it takes around 10 seconds to generate a Solar System.
I improved the terrain shader to allow it to have up to 10 layers (instead of 5) now based on the red channel of the vertex colors, this allows me use the other channels for ambiant shadows or illumination.
I wanna also add that it feels like in the movie you posted, you have chosen a good feel for the size of the planet (makes the curvature interesting of a given planet, not too flat, not too curved), as well as your spacing between planets, in order to make it interesting.
That makes me thing: are planets going to be arranged hierarchically in solar systems, or will it just be a network of “strings” of planets laced all over the place?? I suppose you could do either. Do the planets orbit each other in any way?? Couldn’t tell right off… I could see all kinds of things that would introduce that you’d have to deal with.
It’s a very fascinating idea you have there. It appeals to me on some fundamentally geeky level. I was thinking about it during yesterday’s solar eclipse too.
I chose a size range that would make the planets big enough to be called planets, but small enough for a player to be able to move from one pole to the other without spending too much time (which could be boring)
It also avoids having landscapes that would feel like repeating themselves in a planet that would be too big.
I want the player to remember things about a specific trait of a planet.
The goal is to have planet in hierarchical order, that will orbit around the sun, the orbit thing requires some work on the shaders to make them recalculate the light direction (this is done once for the moment), this is in the TODO list.
As much as it makes sense that the planets would be in orbit, from a game level world knowledge standpoint, it would make it almost impossible to begin to memorize how the world layout is, such as to work out in your mind “How long will it take me to get there… should I bother right now or save it for later when I’m closer?”
Those types of mental calculations would become impossible and/or irrelevant if things were in a constant orbital flux… but it does seem odd that massive plants would just hang in place without motion.
My geek sense is torn between the two possible realities.
Do you have used third party assets (planets, rings) or is this your own development?
I like especially the space-atmosphere transition.
The control reminds me on Spore.
The glowing parts on the volcanic moon should be in the lower areas?
I’m interested in the resolution of you planets. Is it fixed or do you have a dynamic LOD? What do you use as basemesh for the subdividing (sphere, icosaeder)? I would apreciate if you could describe the process in some sentences.
I’m also interested if your planet types are meaningfull for the distance to the satr or do you allow ice planets close to the star. Do you have/plan gas giants which atmospheres can be entered?
This is a feature that will be implemented on the engine, but not necessarely on the game, as it can be a real pain to synchronize positions for planets.
No third party assets were used for the planets (except the trees), the spaceship is from the asset store though. I made all the shaders myself.
The Volcanic moon was just a test but you have a point.
The lod is dynamic and was made to have an infinity of levels, but in the actuall game i only use 2 levels. The base can be any mesh since all the vertices will be subdivided, It is more convenient to use a cube for the uvs though.
The distance to the sun is definitively a factor that affects the planets, is still need to think about the way I will organize this.
Also yes i plan to make planets with only gaz.
This is so freakin cool! Would love to hear some stuff about the technical cleverness going on in the background.
These are ico spheres I assume, right? But how do you project uv mapping on the sphere? Is is heightmap only or actual voxel based? How do you store entities on a planet? Are they persistant or just stored via seed? How are you handling view distances like this? And why are there water splashes in space?
Would love to hear some insight on some of your magic trickery
The base mesh can be anything, i use a subdivided cube, then i process heights using a list of Simplex noises with weights based on heights.
The textures are rendered using my Vertex based terrain shader, I assign a vertex colors instead of projecting a heightmap texture on a sphere, the shader will then decide what texture to display based on the value of one en the color channels. This method is less precise as it requires more vertices but it allows me to save memory.
Nothing is preventing me from implementing a voxel system, this is not the case for the moment, I am not focusing on this point because I want to make a multiplayer game, and this can be quite the pain to synchronize.
I am not quite sure what you mean by entities, if you are talking about the trees and other details, I use the value of my simplex noise to determine what detail/texture should be loaded.
Nothing is persistent in the system, the whole point of it is to be calulated on the fly via seed.
For the distances (not sure I really understand what exactly you want me to explain here), I simply created a controller that slows the movement speed when getting closer to a planet, this gives a smoother experience for the user.
About the water splashes you see in space, this is a bug with the Z-Buffer, it should be rendered after the terrain.
I hope I helped you have a better idea on how this all works.