Developer's log, stardate 18072.3: We may have discovered a new way to land on the planets. Our chief programmer is currently working on getting this done.
If you've watched Star Trek, you probably know they invented the teleporter because landings were too expensive to shoot back in the 1960's. I face a similar problem with Cube Universe: Teleporting to the planet and back to the ship is quite easy, but landing on the planet is challenging.
I had some time late at night while trying to fall asleep and thought about that idea. Was it possible at all? Landing on spherical planets, but with a block terrain? No Man's Sky had this feature, but they didn't use cubes. I recently discovered Seeds of Andromeda, but they used a different approach to deal with the distortions when mapping a rectangular grid onto a spherical planet. From what I understood, they used six faces of a cube and mapped them onto a sphere. But no matter how you do this, you will end up with problems at the edges, where three faces meet. And you will also end up with the problem that voxels need to get bigger the further they are away from the center of the planet.
Those problems were the reason to simply use a rectangular world, then mapped to the sphere that represents the planet when you look at it from the universe. Because of this though, you cannot simply fly to the planet and land without any kind of transition, i.e. a loading screen. Additionally, landing a big spaceship on a planet is quite a challenge, too.
Anyway, back to what came to my mind when I was awake, listening to the sounds of the night, staring into the sky and watching the stars as I thought about what would have happened if I just had said yes when I met... wait, that's not the story I want to tell here... Computer, delete the last paragraph.
So landing a big spaceship was not an option, but what about a small shuttlecraft? You could just hop into it, leave your spaceship and fly down to the planet. And all the way back. It is almost impossible to do this without any loading screen, but at least you will be able to fly down to the planet and land on a spot based on where you entered the atmosphere.
There are a few major things that have to be implemented in order for this to work:
- Transitioning from the spaceship to the universe (and the other way around), probably the easiest part although the universe and the spaceship use different coordinate systems.
- Level of detail system: When entering the atmosphere, you will spawn above the terrain's building height after the loading screen, meaning you will have to fly about 2 km down to the actual surface. In this time, you should see the surface, so there has to be some kind of LoD system in place since rendering the normal blocks is not feasible.
- A shuttle is pretty fast and the voxel world doesn't load fast enough for collision detection while flying at high speeds. In most of the cases, this should not be a problem because you are slower when near to the ground, but if you fly at a height of 1 km, you may glitch through flying islands and tall buildings. Those are not implemented yet, but when they are, this may be a problem. There is probably a solution for this, maybe limiting horizontal speeds to something about 50 m/s (180 km/h, ~112 mph), while vertical speeds can exceed 150 m/s (540 km/h, 336 mph).
Additionally, there have to be markers so you know where to go to. And other small things may also take a lot of time to implement in total.
All of this combined is a big challenge, but I feel ready for it and I see no other way, because being able to teleport kind of ruins the game. Why build a base when you have your ship that you can teleport to quite easily? And how do you make dying feel like a bad thing when you can just teleport to your last location, even if you respawn at your base or on the ship? So clearly, teleporting has to be removed and replaced by landing on the planet.
