Voxel Planet tech demo ᕕ( ᐛ )ᕗ

Behold first texnoforge planetary tech demo!

In 1998 a very special videogame was released called Populous: The Beginning (Populous 3). It's one of very few god videogames ever created (wikipedia only lists 42) and it's also one of first games to feature dynamic 3D spherical maps - planets. As if that wasn‘t revolutionary enough, Populous‘ planets can be transformed using powerful magic - raise land above water to create bridges between islands/continents, lower land below water level to drown entire villages, summon explosive volcanoes, etc. I was really impressed back then and I‘m still impressed after replaying it in 2020. Even after 22 years of game development all over the planet, Populous 3 remains unmatched.

Planets in Unreal Engine 4

Even though technology to simulate planets is available for at least two decades, games that properly utilize spherical worlds are still rare to this day. I‘d like to lead by example and create games on planets, but Unreal Engine 4 isn‘t particularly helpful in this regard:

  • AI Navigation susbsystem assumes „up“ is always along Z axis, making it unusable on planets and requiring custom navigation.
  • Gravity always points down the Z axis which isn‘t the case for planets. There is a free plugin called Directional & Planet Gravity though.
  • Most skyboxes and various other assets assume flat map and thus are unusable on planets.

It‘s much easier to use classic flat map in UE4, but I insist on using planets anyway ¯\_(ツ)_/¯

Voxels, Math, and Asteroids

Unreal Engine is built for a workflow where artists create levels by hand and provides nice tools for doing that, but there is poor to no built-in support for procedurally generated levels or dynamic modification of terrain.

I want to create pseudo-random planets using math and I want the player to be able to modify the world in real time. After some research, I decided to use Voxel Plugin which allows me to do exactly that and and more in Unreal Engine without writing everything from scratch myself.

Look how simple it is to create a random planet using Voxel Plugin and its custom graph language:

To test that my voxel planets can be edited in real time, I created a tech demo with simple voxel planet and an option to bombard the planet with meteors that create holes after impact in order to measure Voxel Plugin performance. It's decent even with much larger planets than shown in the demo and I look forward to more testing in VR.

texnoforge logo 3D edition

I also had fun converting texnoforge logo from 2D vectors (SVG) to 3D model using Blender and then animating that in Unreal Engine.

It took quite some time but I‘m happy with the result and I learned a lot about Blender and its integration with UE. Blender is an impressive piece of open source software and I really enjoy using it, especially since version 2.8.

Conclusion