Words of Power devlog #7: In Search of a Better World

I'm very pleased with the accuracy and speed of TexnoMagic symbol recognition system while its universal interface allows integration with any other system/engine/language.

With the technomagical core of Words of Power in existence, I need a world to cast this magic upon!

The Dream of Dynamic Destructible World

For magic to really shine and feel meaningful and powerful, it must affect the world in meaningful and powerful ways. Magic should affect and interact with all objects in the world as well as the world itself in a persistent manner.

Quite a few games presented really dynamic and interactive worlds but it's still far more common for game worlds to be mostly static with only selected few objects offering meaningful interaction with rest being static decorations impervious to any change. Grenade, rocket, laser, a nuclear blast... nothing has the power to change these static meshes.

I understand this is for performance as well as for simplicity reasons as it's impossible to simulate all the subtle complexities of reality but Populous 3: The Beginning was released in 1999 with:

  • 3D spherical worlds (planets)
  • dynamic terrain (could be terraformed in real time)
  • dynamic buildings (simulated damage part by part)
  • dynamic units (affected by magic, world, and each other)

What an impressive technological feat! I thought this would be a standard some quarter century later but I feel the industry regressed towards prettier graphics instead.

Worms presented randomly generated fully destructible levels in 1995 and I'm sure we could trace dynamic worlds farther into the past but I hope I've made my point that game worlds can be dynamic, devs just don't usually bother.

3D Voxel Terrain

To my best knowledge, no mainstream game engine of current generation supports dynamic destructible worlds out of the box, a custom solution is required which involves nontrivial amount of programming.

To that end, I've experimented with Voxel Plugin for Unreal Engine and I was able to create worlds using math and destroy them dynamically with satisfactory performance and visuals. However, it's impossible to simulate every voxel every frame. On the contrary, many smart tricks are used within voxel engines to cast the illusion of consistent world, but in reality it's all smoke and mirrors.

The difference between 2 and 3 dimensions is fairly small as far as math goes, but it's a huge difference from performance perspective.

Let's assume I'd like to simulate each cell of a 200x200 grid map ("Normal" map size in Age of Empires 2) based on neighbouring cells in the spirit of cellular automata such as Conway's Game of Life. This gives us 40 000 cells to update each simulation tick. Each cell has 8 neighbours.

Now let's add one more dimension - a cube voxel world of 200x200x200 cells has 8 000 000 cells to update each tick. Each cell has 26 neighbours.

Computational and memory complexity of such simulation increases drastically with extra dimensions.

I think I prefer to simulate 2D world in greater detail. Furthermore,
dominant human input interface is still the 2D screen and I can't afford to waste too much time with performance optimization.

Heightmap Terrain

2D matrix can be used to describe surface elevation of each map cell effectively representing 3D terrain. This is commonly called a heightmap.

Heightmaps are supported by most game engines and terrain related software and they're very fast to work with including runtime generation and modification. However, heightmap can't represent overhanging terrain which might be an acceptable compromise for games with top-down camera such as RTS, but it becomes problematic in first person games especially with dynamic terrain deformation. No holes, no caves...

Start Simple

After experimentation with tools and resources currently available to me, I've decided to go for the simplest possible approach first and only add complexity (such as dimensions) later when it turns out they're really needed.

I'm currently prototyping a 2D grid based world for Words of Power rendered from a top-down 2D perspective as a simplest possible approach with following advantages:

  • primary PC output interface is still 2D (screen)
  • Godot Engine supports 2D rendering well
  • 2D graphics are easy to create
  • I like games with top-down camera the most

If I don't hit any fundamental issues in my retrofuturistic 2D journey, Words of Power 2D might become a thing. Or it's yet another prototype - only one way to find out ᕕ( ᐛ )ᕗ

Next log: #8: Online Magic