Roguelike Games created by Thomas Biskup, the Creator of ADOM

Tag: tooltips

Realms of Ancardia (Weekly Update 5)

Lots of graphical details have been added in week 5. And work on character generation continues. It starts to feel like something almost complete. Overall the graphical fidelity has gone up another notch (while retaining the old school charm we are aiming for) and this will drive more changes in the weeks to come.

Also lots of infrastructure work happened in the background for the underlying game sytem as you can see at the end of this post by more than 160 new classes in the game alone (and “only” about 6,200 new lines of code… infrastructure often is not very complex per component but usually needs a lot of components to be extendable and efficient enough).

Animated main title image

Krys outdid himself animating our so far static main title image. We now have a beautifully animated title image:

Graphical frames

Dialogs, windows and tooltips now can have graphical frames in order to make them visually stand out more cleanly and be more attractive.

Here are is one example, more below with the other new features:

Visual upgrade for character generation

Everything was overhauled:

  • Typography
  • Spacing
  • Framing
  • Unified color scheme

All in all character generation (considering its basic state) now is looking a lot more pleasing and still fully aligned with our planned old school charme. Here are updated screenshots – compare them to last week if you like to see the progress:

The central character generation screen – from here you control everything
Definining talent category priorities – this basically shapes your former professional life
Selecting a race

The gender selection step already was shown in the previous section and skill selection still needs to be implemented (although most of skill infrastructure already is there).

Death screen added

Death always has been a big part of ADOM and it also will be a big part of Realms of Ancardia – even though the default game will have a wonderful twist by introducing permalife instead of permadeath. More on this at some later point in time… here’s the default death screen for your final death…

Item architecture created

It’s time to get items into the game in order to finish character generation. This usually requires a lot of infrastructure for a game with the complexity of Realms of Ancardia. So this week I did a lot of tedious groundwork by implementing these concepts:

  • items data structures
  • item templates
  • item template generators
  • item containers
  • item types
  • base items
  • template based items
  • item modifiers
  • item traits (that cause modifies to become real)
  • infrastructure for implementing random items based on some base template
  • infrastructure to randomly generate items based on type and desired power level

Not much fun but they enable one of the major fun parts – creating cool items 🙂

Also statistics now adjust due to equipping or unequipping items, etc.

Rules and architecture for initial equipment

Realms of Ancardia uses a system based on race and initial talent category levels in order to define the starting equipment of the player character. Both the architecture for this approach plus all rules to generate starting equipment based on on 12 races, 10 talent categories and 6 talent category levels for a total of

12 x 106 = 12,000,000 starting combinations for equipment

have been implemented. And since some of the starting equipment is randomized there is an almost infinite number of setups.

More details will be added to this system later when we implement star signs, background stories, feats, etc.

Started adding item templates

Adding items will be a forever job considering that ADOM had hundreds of them. To get character generation started we added 92 base item templates in 18 type categories. More to come – even character generation is not yet fully complete (we need a lot more scrolls, rings, wands and potions).

Inventory / information screen prototyped

I started with a prototype for an information screen about all data that makes up the player character (bound to the classical “i” for inventory – but it’s a lot more than that – so “information” seems to be the better future mnemonic for this).

Here is the unstyled prototype mostly used right now to confirm that data goes where it should while building a character (Krys already has prepared nice tab images but I was too slow to implement them before the weekly update had to go out):

Just some of the basics for now on the stats screen…
A basic inventory – all the item details still are missing…
And the backpack… again all details are missing and we probably will add category filters and… and…

The skill tab has not yet been built and the tabs themselves need to be upgraded visually.

Basics of a tavern generation system implemented

Taverns play a big role in any classical fantasy setting, even more so in Realms of Ancardia with its large number of highly variable settlements. Creative struck me like lighting and I designed a tavern generation system which provides the following features:

  • race-specific tavern names (e.g. dwarven taverns should be very differently named from dark elven or orc taverns)
  • randomized potential tavern activities (from standard stuff like dining and drinking to much more elaborate stuff like pitfighting or quest access)
  • room types and prices depending on the specific settlement data (and some randomness)
  • randomized rumors you might be able to hear while staying in the tavern
  • randomized special events (like a bar fight or the chance of your pockets being picked)
  • randomized special traits for taverns (like being haunted, a smuggler’s den or fey touched)

All this should help to make taverns truly unique places that are exciting and useful (and also sometimes dangerous) to visit. Besides all the avdenturing opportunities you can rest and recover in taverns and learn more about the settlement and the world.

Calendar component added to screen

The Ancardian calendar always played a prominent role in ADOM with it’s star signs and stuff. So it will in Realms of Ancardia, maybe even more so, now that we have complete civilizations, compex government forms and a whole world to be affected by the stars…

For now the map now is graced with a beautiful calendar widget that shows the time of the day (and in coming weeks will be enhanced with a star sign display). Here is a sample screenshot:

Day and night are important… especially in settlements

Note that this calendar version is just a first draft. We are right now working on an improved design where the surface world map will show a calendar focussing on the star signs (due to the extended movement time frame on the surface world) while the settlement maps will show the day and night cycle (because that really makes a difference in the settlements).

Miscellaneous minor changes and additions

  • Krys added a cool font to be used for headlines.
  • Kry generally spent time improving our fonts and typography.
  • Krys started to work on star signs.
  • Added a tab component to our UI framework.
  • Added a video component to our UI framework. And will have more of them in the future (think of small animated sequences like e.g. tavern images, etc. – a little like in my beloved Bard’s Tale I-III and Wasteland). Just a tiny bit of movement and animation – but enough to be fun.
  • Windows now have shadows.

Total size of the codebase after this week

  • 34,385 LOC in 603 files for the actual Realms of Ancardia game
  • 22,761 LOC in 383 files in my own underlying TBRLAPI framework library supporting my most recent roguelike games
  • plus extra external configuration files, images, tilemaps, audio files, etc.

The running total is available here.

Realms of Ancardia (Weekly Update 3)

Week 3 was a bit slow because I was away with family & friends on a five day vacation trip to the wonderful isle of Borkum. I’m still happy with the progress I managed. All in all Realms of Ancardia is shaping up nicely, considering that we probably need at least 12-18 more months for an early alpha release. Let’s look at what was accomplished.

My personal goal for week 3 was to work on the graphics framework of the game and introduce lots of new UI elements plus a dynamic layout composition system for UI elements. But before I could tackle that I had to clean up issues left unsolved during week 2:

Refactoring of movement system finished

I failed to finish the (un)planned refactoring of the movement system during week 2 and thus had to continue working on this. Major subsystems now have been fixed or integrated:

  • There are now time-based actor lists that control who acts when. And what happens on the sidelines.
  • There is now a standard way for switching maps back and forth including PC positioning.
  • The internal main loop has been greatly simplified.
  • The way to calculate time spent has been standardized.
  • The movement system has been fully standardized.
  • About 50+ bugs related to his system created in week 2 have been fixed.

UI component set implemented

Currently we still use an underlying Curses implementation of my own for the text on the screen. Eventually I want to be able to use a smart configurable component library to place elements as needed. This week I implemented the framework for a library that allows various layout managers, nested elements and scaling. Neato!

At this point I really feel happy with the decision to use MonoGame as the foundation for my framework. It is stable, clean and has few areas of weirdness (keyboard handling being one – but we’ll see about that later). And so far it seems to be extremely efficient for rendering which makes me very happy,

Also the APIs are elegant to use. All around bliss and for me a much better experience than with Unity or GameMaker (although GameMaker had a certain charm – but in the end it was a convoluted puzzle box with strange bugs… so I will continue to please my NIH syndrome and move forward building my own game engine 😉 ).

Option selection UI added

Already now the player is faced with options (although peculiar due to testing purposes – like “which group of commoners in a settlement should I attack?”). So far we had no UI for this. During this week I added a nice component framework setup (see above) and a dialog for option selection was the first use case.

I am quite happy with the results (although we still need to work on visual decorations). This is the code sample:

_optionDisplay = G.C.Element(G.C
  .Framed(G.C
    .HorizontalLayout()
      .VerticalLayout()
        .FormattedTextArea(textColor: TBColor.White, 
                           text: text,
                           maximumWidthInCharacters: 30)                                                                  
        .OptionList(textColor: TBColor.White, 
                    model: _optionSelectionModel)
      .End()
      .Image(_image, fraggedBorder: true)
   )
);

The code above creates this kind of dialog on the screen:

Obviously this needs a lot of graphical sugar and we already have ideas we want to explore. The following is a very early sample design and once Krys and I finalize the actual UI design I’ll integrate the design into the code:

(please ignore the typos – rapid prototyping here 😉 )

Tooltips

I have implemented the basic framework for tooltips. Tooltips will get lots of more detail and visual enhancements over the next weeks and months but now there is a rock solid foundation that allows arbitrarily complex and detailed tooltips. This will help us make the game a lot more accessible than ADOM ever was.

Here is a sample screenshot of a (yet unstyled demo) tooltip:

Tooltip on the surface world map
Tooltip for a settlement map tile
Tooltip during an encounter

Website content

I finally started adding content about Realms of Ancardia to this website. And Krys designed this amazing logo for the website:

Realms of Ancardia: Eternal Strife

Miscellaneous minor changes and fixes

  • Lots of tiles have been refined with more loving details by Krys.
  • Enemies in encounters now are placed with more variance and more available positions.
  • Player coordinates now are shown on the world map to allow easier information exchange between players.
  • Lots of feature and tile descriptions have been added.
  • Encounters with settlement inhabitants now have better descriptions.

Total size of the codebase after this week

  • 24,906 LOC in 402 files for the actual Realms of Ancardia game
  • 20,959 LOC in 361 files in my own underlying TBRLAPI framework library supporting my most recent roguelike games
  • plus extra external configuration files, images, tilemaps, audio files, etc.

© 2025 My Roguelike Games

Theme by Anders NorenUp ↑