Words of Power devlog #3: Lessons from Prototype MK1

I consider Words of Power prototype MK1 finished as I grow tired of Unreal Engine so I took my time to think about what I actually learned and how to get closer to a great game while having fun.

In first iteration I focused on core systems for magic symbol creation, training, and recognition. I've created proof of concept symbol and alphabet editor using Unreal Engine featuring:

  • drawing symbols using mouse
  • realtime visualisation of symbol drawing using particle systems
  • save drawn symbols into data files
  • use Gaussian Mixture Models (GMM) to model individual symbols
  • use GMMs to classify/detect user drawn symbols
  • integration of mlpack scientific C++ library into Unreal Engine as a plugin
  • procedurally generated voxel world

I was able to implement core systems but it was a painful and long process, especially compared to prototype MK0 in python in which I was able to test entire symbol recognition pipeline in about two weeks of slacking.

You can look at these screenshots from prototype MK1 and optionally press F to pay respects.

Power to the People

Why go for a single alphabet when I have a tech for training symbol models from human drawings? I need to aim higher and make it possible for the strange beings of the internet to create any symbols and alphabets they want.

I've already experimented with mod.io modding platform which I like a lot and I've designed symbols/alphabets to be mod friendly so Words of Power should feature full integration of user-generated content from early versions.

Furthermore, I should make the entire TexnoMagic framework (including all the user content) easily reusable in various projects such as future texnoforge games but it'd be even better to make it available to everyone to play with or even use in games of their own in the spirit of open source.

Powerful editor required

I guess modders would enjoy messing with my data files directly in their favourite editors but in order to penetrate the cyberspace, a convenient and comfortable editor must be created and made easily available.

However, as I attempted to create in-game editor I realized that the needs of a game and the needs of a symbol/alphabet/model editor vary greatly. In fact they're completely different problems and I should treat them as such. Thus I've decided to make a dedicated Words of Power editor independent on the main game so I can use right tools for each job.

More info (including exciting news) on the editor is coming soon.

Complexity of Presentation

After playing with various Unreal subsystems I discovered most of them are dedicated to some aspect of presentation:

  • materials/shaders
  • lightning
  • character design
  • character rigging
  • character animation
  • asset design
  • level design
  • particle systems
  • UI

This made me realize I'm a single person and I want to focus on interesting concepts and tools as opposed to chasing beautiful graphics. I need to be minimalist in all aspects but in graphics especially.

Going along the minimalist lines I further realized most of my favorite games are top-down 2D or isometric and screens also happen to be 2D so it kind of makes sense. Taking into consideration VR isn't really comfortable enough for long-term use yet I can afford to drop one dimension and go full 2D without Unreal which would significantly simplify... everything.

Simple but well done graphics allow players to focus on what's going on in the game as opposed to how things look and leave room for imagination to fill in the details. Games like RimWorld, Prison Architect or Dwarven Fortress offer unrivaled level of immersion while using very simple graphics.

To further prove my point, let's look at one of the oldest board games still being played to this day after 4000 years - the game of Go (also known as Weiqi or Baduk). I consider Go the best board game in existence which makes Chess look like a kid's toy. Graphically speaking, it's extremely simple. The board is a grid. Only pieces in play are round stones. No AAA graphics are needed in Go because the game is interesting on its own. Anything other than basic shapes would be a distraction from incredible patterns on the board.

Beauty of Simulation

The game of Go only has 1 piece/token/unit type - a stone. Players place stones on the board in turns one at a time. There are only 6 basic rules which can be explained in few minutes.

However, even though the rules are simple, the game itself certainly isn't. On the contrary, Go was one of the last human games to resist the rising power of AI opponents long after Chess grandmasters suffered an overwhelming defeat.

Similarly to Go, I'd like to connect simple atomic elements using simple rules to form a complex living system. In other words I plan to create a magic simulator. So far I focused on the simulation of magic casting/invocation but the effects of individual spells on the game world must be simulated as well in order to be belivable and provide sense of power.

All objects in Words of Power including terrain, buildings, and units must properly interact with magic as well as each other through the means of simulation.

Power of Python

Finally, I noticed that the scientific subproblems involved when processing data, models, GMMs, language, and similar are incredibely pleasant to work with in python using numpy/scipy and other scientific libraries and I should stick to it if possible. Python is too slow to write entire game in, but it's excellent for great number of problems I need to solve in Words of Power so I should find a way to solve these in python while writing the game's core in a performant game engine/framework.

The Prototype is dead, long live The Prototype!

This concludes the summary of lessons I learned in Words of Power prototype MK1 and I already started working on the next (hopefully final) iteration using completely different tools. Let's see how it turns out this time, I'll keep you updated.

Next log: #4: Free and Open Core

Words of Power