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 working on the next KeeperRL update at full steam for the past few weeks. The changes have all been oriented around gameplay and not very hard in terms of programming,... more
The direct download version of KeeperRL has been updated with a few bug fixes. I've also starting working on Alpha25 already, and will post an update on that in the next few... more
It's my pleasure to announce that KeeperRL Alpha24 is out! It's another big gameplay patch, bringing in many new features: Overhauled prisoner system. Enemies are explicitly... more
In the last few weeks I've been very busy fixing bugs, optimizing, and polishing all the new features queued up for this update. The patch has finally reached a point where I can... more
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... more