Stone Sigil Logo Stone Sigil Games Blog

Tombs of Telleran Christmas 2025 Update

Hello everyone! I hope you are all enjoying Christmas times. We got lucky with some snow just before Christmas. Everything is crisp, cold and calm.

The past autumn has been very busy. Job hunting, travelling, buying a flat. Big grown up things. Which means there has not been a lot of time for silly playful things, like developing Tombs of Telleran.

Fortunately things have calmed down lately and I’ve been able to develop the game a bit more. In particular, I’ve made a pretty large changes to the monster AI (isn’t it great to use the term AI for something that isn’t LLMs??). I rewrote it from a finite state machine implementation to a utility based AI. Why? To answer that let us talk about the goals of combat.

Combat Goals and the AI fits in

While roguelikes put heavy emphasis on collecting items and using them in the correct situations, I am trying to put more emphasis on positional tactical combat. My first step towards that was to add abilities and not solely have bump combat in the game. This brought the complexity of the AI up a few notches since I needed to write a system which could handle quite a few things more than just ‘run at player’. Each monster now has at least one ability which could be melee, or ranged, or it might cause corruption damage, or add a status effect, a something else. Crucially, some abilities might not be usable from melee range, which requires the AI to be able to inspect it’s abilities and navigate to where they can be used most efficiently.

In the beginning I had a finite state machine with states like (patrol -> combat -> search), and that worked fine when all I wanted the enemy to do was to fight the player. But after a while I added abilities that could target other things, like allies, floor tiles and remains to create more interesting monster behaviour. Creating states to handle this was very cumbersome, so that’s when I decided to move to a utility based AI.

Utility AI Description

Utility AI is very simple at it’s core. It looks at available data and actions, computes the utility of each action and picks the best one. In Tombs of Telleran that means each actor needs to look at all items they have and what abilities they enable. They also need to look at all the other actors they can see, which abilities they can afford, what potential targets each ability could have, their position, where the abilities can be used from, and then decides between

  • use an ability on an actor in range (can be player or another enemy. They can heal and buff!)
  • move towards a tile where they can use a high-utility ability
  • wait on the spot
  • swap equipment with something in the inventory
  • fall back to a guarding or wandering behaviour (this is basically an idle behaviour)

Immediate actions are prioritised, so using an ability this turn has higher utility than taking a step to get in range of using it the coming turn. Currently all actors use the same implementation. But it has parameters for how to weight different actions. For instance, it is possible to weight how much a specific AI will value dealing damage or restoring health to allies - letting me encourage specific behaviour.

Note: Utility AI is stateless

It is worth noting that the utility AI is a stateless function. It just takes in perception and outputs an action. This is a blessing and a curse; it is simple to understand but also not very expressive. Fortunately, for a simple turn based game it is a very good fit! After all, the goal is to develop a consistent and transparent AI system, not a system that is amazingly good at the game.

Ending Notes

Posting these blog posts are great for structuring my thoughts but is also a little bit scary. After all, putting your thoughts on the Internet could expose you to criticism! Or more likely: deafening indifference. It’s good practice though and for 2026 I want to try and publish more ‘stream of consciousness’ stuff (the stuff I put in local markdown files currently) instead of attempt to write on a specific feature. Most features I’ve blogged about have been changed or removed anyway, and I think my writing should reflect the fluid nature of this project.

If you like, you can subscribe to my newsletter below. Happy holidays!