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.
I've been back to work in the last few weeks, after a longer-than-usual Christmas and New Years break, and I'd like to share all the cool stuff that I worked on! Z-levels,... more
This update fixes a few issues and crashes, including a video driver issue that stopped a few players from running the game. There is one crash that I'm still investigating... more
KeeperRL Alpha 26 is out today. This is a big content update with new game mechanics, basic modding support, and if that's not enough, it also introduces dozens of new animations... more
KeeperRL has always had all its data defined in the source code, which is not a great design - it slows down development and doesn't allow any modifications without recompiling... more
I've got the same piece of good news for you as always: the KeeperRL team is working on the game continuously, and the next patch is underway! But there is more: I'm also happy to... more