Sunday, January 14, 2018

Two weeks of Ultimate ADOM development (UADOM Update #1)

Hi everyone!

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!



  1. If some time adom on browser base then three.js probably good and use similar thingy as

  2. I'm a long time lover of the ASCII aesthetic in roguelikes (especially ADOM). Will the new games using Ultimate ADOM still provide an ASCII interface or will we be forced to "upgrade" to a graphical interface?

    1. Currently I think that there will be an ASCII interface (because I need it for testing and prototyping anyways) although our focus definitely will be on the graphical version.

  3. I had a few questions -- the first is, why did you decide C# over Java? I had heard you interviewed (I think on Roguelike Radio), and you mentioned why you like Java for roguelike development.

    My other question is -- have you given any thought to multiple rings per hand? I think that would be cool, though I understand it might create overly powerful characters.

    My last question is -- any thoughts to a futuristic roguelike? I feel ADOM is the closest feeling game to D&D...I would love something like Gamma World.

    Lastly -- yay, yay, yay on the the game engine framework approach. Very excited to see where this leads!!

    1. Like the idea of being able to eqiup 10 rings at a time. Of course hoping they won't conflict, won't interfere and amount of their magical energy won't tear my hand apart. I guess tearing an entire hand with all the fingers and equiped rings isn't a big deal for Ultimate ADOM :P

    2. Maybe we will have a future corruption that will allow you to wear more rings... technically it would be easily possible in Ultimate ADOM.

      Regarding C# over Java: The sad fact is that - while Java probably still rules the server world - it sadly is no longer the language of choice to run on many platforms. We have found no sane way to run Java based software on iOS and we didn't find any information on how to get Java software to XBox, Playstation or Nintendo Switch. As we eventually want to have game versions of Ultimate ADOM on all these platforms Unity3D evolved as our platform of choice. And you are doing Unity3D you IMHO _must_ use C#. It#s the only sane choice.

      If you want to play something like Gamam World, search for "Caves of Qud" by Brian Bucklew and Jason Grinblat. Both are awesome guys and CoQ is an awesome game. Highly recommended. If they hadn't written it I probably would have felt tempted to try something Gamma-World-like at some point as I just love that game... many years ago I was the maintainer of the official Usenet Gamma World mailing list :-D

  4. A lot exited to see these concepts and can hadly wait to see all the upcoming features which have never been implemented in any roguelike yet. Seeing body structures like in Dwarf Fortress in json map templates like in Cataclysm DDA after only two weeks of development promises a lot of new breathtaking stuff and hints we might see it really soon.

    I wonder is there already a way in your minds to avoid ADOM problem where PC cannot differenciate "move" command from "attack" command? (where I weirdly kick friends to start killing them and equiping two shields to avoid killing invisible cats)

    1. Just today I started implementing the architecture for interactions with the world (as entities can be usable, interactable or game command providers [and more]). The easiest way probably would be to do something like "always offer chatting/attacking/aborting" if you move into beings on coward tactics (or something like that).

      I have not yet decided upon the final way to do it - at one point "modes" seemed like a good idea (melee/missile/interaction/spell mode) but that OTOH might be too complicated.

      Another option: Shift-direction always pops up all options, normal direction has the default attack behavior.

      Many possibilities and we definitely will be doing prerelease tests to gather feedback and ideas. As we are going to release a number of games based on Ultimate AGE (ADOM Game Engine) we might start with a free game or two (probably specialized) in order to early on perfect the UI.

  5. Cooler than ever! Btw how would you accomplish internationalization?

    1. Still not decided. It is a very complex topic and I'm still not convinced that it's worth the effort.

  6. hello.
    I'm very happy to see those developments.
    in the same way, I know friends of me who like those type of games, but who are reluctant to play to an English game.
    It would be great if people (as for youtube videos) can help you for doing the translate for texts... if they are in an independant .txt file or any other solution.