T2: Curve and nyan roadmap

After a very long planning and development phase, two of our new core components are implemented: nyan and the curves.

Both are designed to work together: nyan provides the configuration building blocks, the curves enable our tickless, event-based game engine to work. Now, we only have to combine them in order to run openage.

Replacement strategy

The current simulation, which is implemented with a classic time step loop, will be replaced by the new event based game simulation system.

The replacement will be done in several steps:

  • Design of the game state structure
  • Design of the nyan model (i. e. API objects) for configuring the game state structure
  • Creation of a mod pack format
  • The convert script has to create a mod pack with assets and nyan files from the original game
  • The engine has to load mod packs and start a basic game with a moving unit
  • The new renderer has to be combined with the new simulation core

Those steps are tracked in a github project board.

The first step is the cleanup and merge of the eventsystem code. Meanwhile we think about the nyan API and the modpack format.

Once the eventsystem is merged, we create a demo, which basically is a new main(). In this, we slowly add features so game entities are instanced by nyan until we have a simple standing unit (militia, for simplicity).

In order to see this on-screen, the new renderer has to be able to display the terrain and units.

After that, we should add create the Movement ability, which allows walking around. The pathfinding can remain very stupid (like our current implementation is), but in the future should be far more sophisticated. It should be quite easy to improve and extend.

Likewise, we have to add many other abilities to the new simulation.

Once the demo is nearly as good as the current game, we just enable it as the new main function of the game.

Sounds easy, right? Then let's do it.


Do you have something to discuss? Visit our subreddit /r/openage!

And you can reach us directly in the dev chatroom:

  • Matrix: #sfttech:matrix.org
  • IRC: #sfttech on libera.chat