The past two weeks I have been mostly active on Twitter while actually working on our Ultimate ADOM game engine. It will be foundation for our next generation series of roguelike games (yep, plural) and thus the foundational work is extremely important (and fun - as I love building frameworks and complex architectures).
What has been achieved so far?
- I'm getting somewhat accustomed to Unity as that is the platform we will be using to deploy Ultimate ADOM games on many channels (desktop, mobile, console, etc.). So far - once you get the hang of it - it works nicely.
- I have started using JetBrains Rider which IMHO is a brilliant piece of software (as usual from JetBrains). It's a blazingly fast and pretty smart integrated development environment, works nicely in conjunction with Unity and provides excellent C# support. There are still a few rough edges (especially when used on MacOS) but general the support by JetBrains is very active and helpful and despite those rough edges Rider already now is leagues above any other IDE I tried for C#. Highly recommended!
- Ultimate ADOM is using an entity component system (ECS). My ECS is based on JSON configurations that are backed by C# classes to add complex behavior. It uses entity templates (basically classes) to describe entities (class instances, objects) and has been designed with the idea of supporting hundreds of thousands of entities at runtime because I envision a truly complex world with almost infinite means for interaction. All the infrastructure for the basic ECS architecture is in place, parsing is basically finished (I'm still optimizing my JSON-object mapper on a use case basis for special cases to make modding even more trivial).
- In order to be able to prototype features quickly I needed an ASCII based interface even in Unity. The basics for this also have been implemented and now are working.
- The ECS architecture uses an underlying event architecture to implement communication between disjointed components. This architecture also is implemented in its basics and already went through a turn of optimizations to make it scale for later more complex situations.
- The game engine is configured through the same JSON based setup used for all other content. The basic infrastructure to set up game variants also is in place (although a lot of work still needs to be done here).
- Movement for the player has been implemented as an example to prove that everything works as required.
- Jochen and Krys are familiarizing themselves with Unity, toying around with graphical concepts to elaborate our future graphical approach with Ultimate ADOM and have been testing particle systems, lighting and animation as we want to lift current ADOM graphics to a completely new level.
Next up on the roadmap are
- implementing basic combat (another interesting challenge as many already existing subsystems for containers etc. then will need to flex their muscles),
- resuming work on ADOM bug fixes (remember: we will continue to work on ADOM). Jochen and I already have discussed the next new features which probably will center on our Rogueleague portal and challenge games.
Finally we are talking to various people on order to extend Team ADOM somewhat. If all works out well, we soon will have a second graphical artist joining the team to supplement Krys' amazing skills and provide us with more concept and marketing artwork (at least initially).
Here are some more impressions from the past two weeks:
Body configurations can become complex in Ultimate ADOM (although we still have way to go before we rival Dwarven Fortress ;-) although that's not the goal):
Predefined maps are already very easy to create (great for modding, too):
The ASCII interface still is rudimentary but I'm nonetheless proud about having gotten there in the past couple of days because there are more than 10.000 lines of code of basic architecture running behind it (not for the ASCII stuff, mind you, but for the actual game content - and all that will shine later on):
This screenshot from a point in development time when I still had to add lots of architecture hints at the detail and complexity of what is going on behind the scenes:
And while this is not our 3D attempt it was fun to create it nonetheless ;-)
In summary about 15.000 lines of C# code plus another 870+ lines of JSON configuration were created in these two weeks and we are now moving forward to turning this into a game :-)
Talk to ya soon!