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.
It's my pleasure to announce that KeeperRL Alpha23 is ready. It took four months to finish and because it consists almost entirely of gameplay changes, it's a very, very juicy... more
I've been back to working on KeeperRL the last week, and things are progressing smoothly. There are only a few bugs and some balance issues left to fix. I will also be defining... more
The work on KeeperRL Alpha23 is slowly coming to an end. The only things left to do are bug fixes and final changes to the endless mode. I was aiming to release this update at the... more
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