I’ve been working on the endless mode recently, trying to get some good gameplay out of it. As a reminder, the endless mode is all about defending your dungeon against incoming waves of attackers, trying to survive for as long as possible. The conquering aspect of KeeperRL is completely removed in this mode, and there is no victory condition. (if you are wondering how this will work with the recent progression changes, you will get mana rewards for resisting each attack wave).
The rates and the difficulty curve of the attackers will be very similar across games, in order to give a consistent experience, and to make different runs comparable for the sake of highscores. I don’t want to have to define every single attack wave by hand though, and I also want them to be randomized a bit, so I have to come up with a way to scale the difficulties of monsters automatically. The game doesn’t know how to compare the difficulty of creatures though, for example is a level 35 dragon more dangerous than 15 dwarves, level 20 each? I think the only way to tell is to simulate attacks with AI controlling both sides, but it’s not an easy task.
For now I’ve been playing around with scripted attacks, for example every 1000 turns, alternating between bandits and ants, and every wave is 4 levels more experienced than the previous. With the recent addition of full control mode, I came up with a simple tactic of trapping the enemies at the end of a corridor, with 3 of my minions fighting one enemy at a time, and a few healer minions supporting them from the second line.
It became really obvious that the enemies need better attack patterns. The simplest solution was the blast spell, and the AI will now try use it to push your minions away and advance through the choke point. My second idea was to give ants their natural capability: digging. Up to this point the enemies couldn’t breach the structure of your dungeon. It was time to change it. 🙂
This new mechanic comes with obvious balance challenges, as we wouldn’t want ants to be able to dig out a whole side of your dungeon. I came up with the following rules: they will only dig when it creates a significant shortcut to their target, and will mostly avoid digging through reinforced walls. They will also try to dig around choke points.
Having taught the AI how to dig, I realized it could also be a solution to another problem: sealed dungeons. At this point the “fill up tunnel” order is very limited: you can’t place more than one at a time, and you can’t cut off an empty area. The reason for this was that the game wouldn’t be able to deal with a completely sealed- off dungeon, and you could survive indefinitely, which would especially break the endless mode.
The problem is that, due to a bug, it’s still possible to trick the “fill up tunnel” order into sealing off the dungeon, and until now I didn’t have a good answer to that. With AI being able to dig, I gave that ability to all enemies, but with the exception of ants, only if there is no other way to reach their target, meaning that it had been sealed off.
Just to repeat this point :), if you don’t seal off your dungeon, the only ones to do any digging will be the ants, but if you do, all the enemies will happily dig through to your gold or your Keeper. On the plus side, you will be free to fill up any tiles you want.
I've been working on the endless mode recently, trying to get some good gameplay out of it. As a reminder, the endless mode is all about defending your dungeon against incoming... more
The previous blog post about progression has stirred a lot of discussion, and I want to follow up a little bit, before I go into the main topic of this post. If you haven't read... more
I recently stumbled upon an old Reddit "AMA" by Tynan Sylvester, the author of Rimworld. I hope he doesn't mind if I quote chunk of one of his answers here. "What designers need... more
KeeperRL Alpha22 is out! The update features a dedicated tutorial, as well as many technical and gameplay improvements. Check out the changelog below for details. As always,... more
It's slowly the time to wrap up the release of the twenty-second Alpha. The plans for this version were ambitious, but I had to postpone many of them, otherwise the update would... more