This blog post will be devoted to a number of changes that I made to mining, minerals, and map generation.
The main theme is that the geology tech will be removed, and all minerals are going to be placed on the map during its generation. Their locations will be uncovered immediately, which is how things used to be in earlier versions of KeeperRL.
The geology tech was originally implemented to slow down the player’s growth, but it wasn’t a great solution, and some players suggested replacing it with exploration and other challenges. Working towards that, I added a few enemies that are generated next to patches of minerals and will attack if you try to mine them. This does the job of slowing down growth and adding challenge, although for future updates, I’ll keep on researching ways to make maps more interesting and varied.
Another change that the screenshots reveal is that the steel resource will be renamed to adamantium, and will be mined instead of produced in furnaces. I felt that the extra production step was unnecessary and wasn’t adding much in terms of gameplay. Placing the adamantium ores on the map also gives me the possibility to have them guarded by adamantine golems, which are of late-game difficulty level.
With the upcoming changes to the prisoner system, players have the option to supplement their imps with a large number of prisoners. To make capturing them worthwhile, I added a new type of rock that takes longer to mine. The harder rock starts about 20 tiles into the mountain, and will stand in your way to the ores and to building a bigger dungeon. There are more possibilities for different rock types, such as one that’s completely undiggable, and that will also be part of my research on more interesting maps that I mentioned earlier.
Finally, after implementing the above changes, it became very obvious that imp AI needs improvement, as the little creatures get in eachother’s way a lot when mining. One of the problems was that multiple imps would try to occupy the same tile in order to mine the minerals around it. As a principle KeeperRL doesn’t allow many creatures on a single tile, so the imps would either switch their positions at a very fast rate, or one imp would stand and wait needlessly, even though other mineral tiles were freely accessible nearby.
The solution was to assign an empty, neighboring tile to each mineral tile. An imp is then ordered to occupy the matched tile before it starts mining. Of course no empty tile can be assigned to two different mineral tiles, which makes this task identical to the maximum matching problem. The assignment needs to be updated dynamically, as mining tasks get created and are finished continuously. Luckily, a reasonably fast algorithm is easy to implement, and from now on the imps will use it when trying to mine. There are still some nuances that need to be solved, but a nice improvement in imp intelligence should be noticable.
In the following animation you can observe how the empty tile assignment changes when a new mining task is created.
The last few KeeperRL patches improved modding support to the point where you can change or replace the majority of the game's content. I'm very happy that a few hardcore fans... more
KeeperRL Alpha 28 is out! This update focuses on modding support, and also features new content and many quality-of-life improvements. At this point most of KeeperRL's content... more
It's been almost two months since the last patch came out, and during that time I've been working full time on bringing you Alpha 28. At this point I'm done with adding major new... more
KeeperRL Alpha 27 is out! This is another big gameplay update, introducing many improvements in playability and AI. You can now build your dungeons across multiple Z-levels,... more
The past month saw a big number of small improvements added to KeeperRL. Below is a brief rundown. Z-level variations Implementing Z-levels doesn't end with simply... more