





🌟 Special thanks to our amazing supporters:
✨ $10 Tier: [Geeks Love Detail]
🌈 $5 Tier: [Arch Toasty][Benedikt][David Martínez Martí]
Since the launch of v1.0, I've been focused on fixing bugs and releasing content patches. As 2024 comes to a close, I wanted to do something fun and share a few facts and stories from KeeperRL's 11-year journey. Let's start from the beginning. In late 2012 I quit my programming job and went on a four month bicycle trip in South America, where I crossed the world's greatest salt flat and reached almost 5,000 m (16,400 ft) a.s.l. on my bike. After I got back I was a bit bored, so I started coding a little roguelike game that I had in my mind for a while. Since I didn't have a job at that moment, I was able to put in a lot of hours, and by mid-2013 I had a little working game with over a hundred downloads. [previewyoutube=kRxxejoodzk;full][/previewyoutube] I was thinking about a way to pay homage to Dungeon Keeper, a game I really loved in my youth. A little later that year, I learned about Dwarf Fortress and its basic idea of a grid-based dungeon-building simulation. At some point everything clicked and I realized that I could add a real-time building mode to my little game, but keep the turn-based mode for controlling individual minions, similar to Dungeon Keeper's possession spell. I wrote a simple demo over a weekend, posted it on roguebasin, and went on a hike. When I came back, I had a bunch of emails in my mailbox asking about the game. This is how KeeperRL was born. One comment I received strongly suggested to try crowdfunding. A few months later I created an Indiegogo campaign, which yielded $7,000 USD, prompting me to work on the game as part of a full-time job. How about some financial stats? KeeperRL went on sale on Steam in March 2015 and has since sold over a 100,000 copies. The total sales have exceeded 1.5 million dollars, of which I saw around one third, after platform commissions and taxes. The best years financially were 2021 and 2022, each with over 10,000 copies sold, most likely thanks to the Covid pandemic; and of course 2024 after the v1.0 launch, with over 30,000 copies sold. A significant portion of KeeperRL's overall sales can be attributed to two streamers: SplatterCat and Nookrium. Together, they have posted over 70 YouTube videos showcasing KeeperRL to hundreds of thousands of viewers. Ill always be grateful to all streamers who help introduce indie titles to new audiences. According to Steam, the average player has played for about 19 hours, so we can estimate the total playtime to be just over 200 years. Since KeeperRL v1.0 was released, about 30,000 players have started 150,000 games (counting only those who have agreed to send me anonymous statistics from the game). About 15,000 games were started with at least one mod enabled. Over the whole life of KeeperRL, about 1 million games have been started, and the game has crashed 22,000 times. If you're a fan of programming, then you might want to know that KeeperRL is written almost entirely in C++, with over 100,000 lines of code. Most of it was written by me, but my friend from university, Krzysztof Jakubowski, contributed particle effects and Steam workshop integration. Because KeeperRL is open source, and available on Github, a number of people have also contributed various gameplay changes and bugfixes. The game also features a custom language for all data definitions, and the included Effects system is actually a funky programming language by itself, letting modders do some very weird things. There is also a custom programming language dedicated to random map generation, which is available to be used separately in other projects. The game contains another 20,000 lines of code in these languages. As I'm a fan of creating software for my own use, I made a custom text editor for developing KeeperRL, and the text editor is written in my own programming language called Zenon. Want to read a funny piracy story? There is a small piece of functionality in KeeperRL for my own use, which generates a unique id the first time you launch the game from a given folder, and stores it in a file. This id is referenced in crash reports, so I can find the right report when someone tells me about a crash they experienced. Why is this relevant? Sometimes I download KeeperRL patches from BitTorrent, to see if they contain malware. One time I realized that whoever uploads these, first launches the game before packaging it, which generates an id that all these illegal copies then use connect to my server. I was able to use this fact to get a glance at how many people pirate my game. When I released the next patch, I also gave myself the ability to send a custom message to these players, asking kindly to purchase the game. I could have also easily tracked down the Steam user who posted the illegal downloads, but decided that this would be a big breach of privacy, and it would be unlikely that Steam actually agreed to take action against them. How about some bug fixing tales? One memorable bug, which caused the biggest hair loss on my head, appeared just as KeeperRL was launched on Steam Early Access. It made the game crash while saving, if a Doppelganger was currently assigned an absorption task. This is the worst kind of bug, because it essentially caused the player to lose their game entirely, as the previous save file got rewritten by a corrupted one (I recently fixed this, the previous save is now overwritten only after the new one is completed successfully). To make things worse, an unrelated bug prevented this particular crash from being reported to my server, stopping me from getting any information. It took me three whole weeks before I found the reason and could fix it. As you can imagine, many players were angry after losing their games. Another fix-resistant bug caused weird screen corruption in the game on some players' computers. Without replicating it, this kind of bug is almost impossible to fix, and I had never seen this in person. A possible solution came from the fact that this only started happening after a new alpha update. A kind soul from Reddit agreed to test about a dozen custom game builds that I prepared, narrowing down on the location of the change that caused the corruption. Eventually it turned out that merely swapping a couple of unrelated lines in the game's graphics code made the issue go away. Because it was a very rare in the first place, I suspect this was actually a bug in a graphics driver. These are just a few tales that randomly came to mind from the long, crazy adventure of creating KeeperRL. It culminated in the release of v1.0 this year, but I still have ambitious plans that make me excited for 2025. I wish the same excitement for all of you!
Hi everyone, I wanted to leave you all with a little Christmas gift before the holidays. This year KeeperRL finally went 1.0 and youve all shown such incredible support for me and the game. Theres more in store for KeeperRL next year but for now I hope youll enjoy this Holiday update.
I know that a lot of players have been confused by the newest mods being tagged as Alpha37, which was actually an unfortunately named tag used by the 1.0 builds. Since I don't intend to break mod compatibility from now on, I've marked all pre-1.0 mods as incompatible in the Workshop, and I've removed the tag category altogether. This means that all mods you see in the Workshop should be compatible with the most recent versions of the game. If you run into any compatibility problems, please reach out to the mod author or myself.
It looks like I'm in an unlucky streak of urgent bug fixes, this time it's to stop crashing in mods that use the previously removed InferniteEffect() macro.
This fixes another two other issues found in 1.1.3. If you find that any other enemies are too hard or too easy to kill with recent changes, please let me know.
The previous patch caused excessive limb injuries required to kill living creatures, which this should fix. Thanks to Tooca for bringing up the issue.
Some more bug fixes and gameplay improvements incoming. Please note that some of them will only take effect after starting a new game.
This patch contains a few minor gameplay improvements and fixes.
This small update fixes a few bugs and balance issues.
The KeeperRL team wishes to entertain you this Halloween by releasing a new playable faction called the "Corrupted Church". Playing either as a Bishop or a Mother Superior, you will build a church for yourself and your congregation, hold Masses, pray, and craft devotional items. However, the KeeperRL world won't allow you to stay holy. Soon enough you will start to give in to temptations, such as luxury, alcohol, courtesans, and dark crafts. Before you know it, you will perform Black Masses in the name of the Evil God Adoxie, summon his minions, and do other, terrible deeds.
Here are the main gameplay features of the new faction:
A few months ago, I was contacted by a company called Elda Entertainment about a possible collaboration on KeeperRL. Elda is a small publisher based in Sweden, comprised of industry veterans who have worked on games such as Cities: Skylines, Surviving Mars, and Magicka. After a bit of back and forth to understand each other's needs, we have agreed to start working together. Of course, KeeperRL v1.0 has just recently come out, so this isn't going to be a traditional developer-publisher relationship. Still, there is a lot of opportunity for them to help me with things such as marketing, community management, product strategy, and all the other things that publishers do. Personally, I'm excited about this arrangement, as the folks at Elda Entertainment are going to pick up parts of my work where I've always fallen short. Because of this, I'll be able to focus more on the game itself. I'm still going to be involved in the community, but they are also going to pop in on Steam forums and Discord, perhaps helping me stay a bit more in touch with important things going on among the players. I'm also very happy to have them on the team. For the past eleven years, I've had to make all the important decisions by myself, so getting advice from someone with so much experience is going to be a big relief for me. Hopefully, you will also notice the results of our cooperation in the game itself and everything around it.
Again, big thanks to everyone for submitting bug reports! If you run into any trouble playing the game, please get in touch via the comment section, Discord, emailing me at miki@keeperrl.com or by submitting a bug report using the in-game button in the lower right corner of the window!
I'm very proud to announce that KeeperRL v1.0 is out! In addition to being the most important milestone for the game, this is also a huge update with major gameplay additions. These include a much larger and more interesting world map, a longer difficulty curve and player progression, more content, and achievements. You can read more about these changes here here and here. [previewyoutube=-HNtEdsPw7U;full][/previewyoutube] I'd like to thank all community members who have been involved in this project over the years. Without your support I wouldn't have been able to make KeeperRL in its current state. Therefore it's also your game and I congratulate you for reaching this milestone. We did it! :) Even though KeeperRL is an eleven year project, the last year saw very rapid development and big changes. I've done my best to test as much as possible before the launch (and so have you), but it's very possible that there are some bugs and balance issues present. I'm committed to fixing them as soon as they are reported, so that you can have a flawless playing experience. This is a huge moment, but it's not the end of our journey together. I'm planning to work on a 1.1 version of KeeperRL and release it later this year. It will contain more content and gameplay that didn't make it to the 1.0, including another playable keeper faction. I'll write more about it soon. I'll skip the patch notes this time, because they would be way too long for this patch. Have fun and don't burn all the elves!
An unofficial v1.0 build is out on the BETA branch. Check it out if you're an experienced player and want an early glimpse of all the new stuff! Please post your feedback in the comments below. If you are new to KeeperRL, it is strongly recommended that you stick to the official Alpha 36 patch until February 29th, as this build is very unstable, and I'm still making last minute changes and adding fixes. Please also note that until the patch is officially released, the save file format may change at any moment, and you saves may be lost. (although I'll do my best to avoid this). To opt into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
KeeperRL will leave Early Access in exactly three weeks. The last major patch was released one year ago, so you can imagine that this will be a pretty huge update. In the August blog post I revealed the major features that will be introduced. Since then, my work was more focused on testing, balance, and adding content.
I have important news for you today. KeeperRL version 1.0 will be officially released on February 29th! More details about the patch will follow, and for now let's celebrate this upcoming milestone with this short clip [previewyoutube=Gg0YfLrc0go;full][/previewyoutube]
In the last news update I revealed that KeeperRL will leave Early Access in the next (major) patch, and that it will bring some big gameplay changes. It's finally time to share some with you. I'll only write about features that are already implemented and working.
When I launched the Indiegogo campaign to fund KeeperRL nine years ago, I promised a 1.0 release by the end of 2014. This kinda didn't happen, but I've always been committed to hitting that milestone some day. It's just that I never felt it was the right time for it. Well that time is finally coming, and I will explain the reasoning behind my decision. The way I see KeeperRL is, first and foremost, as my job, as it has been my main source of income for the last eight years. Even though there have been swings in the sales, they've mostly been stable over the years, affording me a comfortable life. Looking at things financially, it was just a wise decision to keep working on it instead of moving on to something else. On the other hand working on the same thing for so many years is very tiring, and can hinder your personal growth. I've been yearning to start fresh for a long time, and I envy other creative fields, where projects take months instead of years to finish. As some of you may know, I actually have started quite a few projects on the side, but they've been much smaller in scope and not really intended to make money. The financial and creative components have more or less cancelled each other out, leading me to the deciding reason for KeeperRL's long development time, which is that I've always felt it has a lot of unrealized potential. I've heard similar comments from many people over the years. Because I'm a very stubborn person with big dreams, I've kept going back to the drawing board looking for ways to improve the game and make it more enticing and replayable, aspiring to make it as good as some popular games in the genre, such as Dwarf Fortress and Rimworld. In the last few months I've had some breakthrough ideas on how to improve KeeperRL, and their initial implementation has been very promising. With this in mind I've decided that the time to leave Early Access is now or never. There are two reasons for this. The first is that I need to put an end to my "one more feature" mindset and finally reach the goal or admit defeat. The second is that releasing major features in the 1.0 update is important for the game's promotion, as it brings back old players, and catches the attention of press and influencers, hopefully leading to decent sales on launch day. And it's unlikely that I'll ever be able to put out as meaningful an update as this one. With the big announcement out of the way, I'd like to add some caveats. First of all, I don't intend to make the 1.0 update final, and it's very likely that I'll keep working on KeeperRL to some extent. Of course these won't be big updates, because I will finally start maintaining save and mod compatibility. I'll also be 100% committed to fixing bugs, performance, and other issues. The second caveat is that I still have no idea how long releasing the coming update will take, so there is no release date yet. Besides working on new gameplay, I also have to cross off things like proper sound effects, Steam achievements, hiring a marketing specialist, etc. It will very likely be 2024 before everything is done. It may be disappointing that there won't be any (major) official patches out before then, but this is the way it has to be. I'm going to write another post soon revealing all of really cool stuff that I have been working on. If you're impatient, and would like to get more involved, I recommend popping in on Discord, where I often post updates and share development builds.
If you missed the last week's live stream where I was adding new procedural Z-level content, you can now watch an edited version where I cut out all uncomfortable silences and my dog misbehaving. [previewyoutube=zZvVkZl8ku4;full][/previewyoutube]
Come in for another episode of KeeperRL Live Steam on Friday! This time I will be creating new Z-level content using my awesome moddable proc-gen framework. A youtube link will be posted shortly before the live stream starts.
Big thanks to Rarasek and Ghost for reporting and help with bug fixing.
The Lag Fest finished last Thursday! I've received a total of three save files from Rarasek and Soft Monster, and I analyzed them during the live stream. I managed to come up with one fix, which is now live in the latest KeeperRL patch. I also identified two areas in the code which need improvement, but the scope of the work was too big to be done during the stream. Big thanks to Rarasek and Soft Monster for taking part! They will be rewarded with KeeperRL swag of their choosing. The live stream went well, even though it was my first time, the volume was too low and my dog puked. You can find a shortened video with the volume fixed below (dog was edited out). I will be making more live streams in the future, maybe even on a regular basis. If you have comments or special requests as to what should be featured, let me know! [previewyoutube=CqszzinMapw;full][/previewyoutube]
This patch was created during the Lag Fest live stream. A summary of the stream will be posted soon.
Do you want to see the inner workings of KeeperRL development? Tune into the Lag Fest stream on Thursday, where I will be optimizing the game using dungeons sent by players, live!
This patch fixes a crash when digging down past Z-level 17.
This patch adds more Z-level types with new content in order to make digging down more entertaining. It also fixes an AI issue where workers would get stuck on staircases, unable to dig horizontally.
I've been working a lot on optimizations for the past few game updates, and my impression is that the game has started to run really fine even with large dungeons.
Now I want you to prove me wrong! Send in your most lagging dungeons, and I will use them to profile and optimize the game further, on live stream. Submissions that end with successful optimizations, as well as the most ambitious/cool attempts (judged at my own discretion) will be rewarded with KeeperRL merchandise.
This patch fixes the biggest issues with the most recent release. Big thanks to everyone for reporting bugs and being patient with me!
KeeperRL Alpha 36 is finally out! This update includes full support for Steam Deck, a number of UI improvements and massive gameplay optimizations and fixes.
Check out the patch notes below for more detailed information.
Id like to thank everyone involved in crash testing this patch, sending bug reports and suggestions. Your help was invaluable!
If you would like to continue your saved game from Alpha 35, you can opt-in into the "Alpha 35 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha 36 when you're done!
An unofficial Alpha 36 build is out on the BETA branch. Check it out if you're an experienced player and want an early glimpse of all the new stuff! This is especially directed towards Steam Deck owners, as this patch features full Deck support. Please post your feedback in the comments below. If you are new to KeeperRL, it is strongly recommended that you stick to the official Alpha 35 patch for now, as this build is very unstable, and the tutorial doesn't work at the moment. Please also note that until the patch is officially released, the save file format may change at any moment, and you saves may be lost. (although I'll do my best to avoid this). To opt into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
A few months ago I've received a Steam Deck and quickly fell in love with the device. KeeperRL has received a "Playable" status from Valve already some time ago, but in practice it meant using the emulated mouse for everything, and it wasn't a great experience. I've decided to go all-in and make KeeperRL run super smooth on the Deck, including full controller support in all the menus. I got to work and it quickly turned out to be a massive undertaking due to most of the UI in KeeperRL being mouse focused. It was a lot of work both to design the new UI interactions as well as to implement the changes, as the code responsible for UI is not great and quite inflexible. I'm proud to say that most of the work is done, and it's currently super fun to play KeeperRL on Steam Deck. I've just resubmitted a new build for review by Valve and hope to finish up the whole undertaking before the end of the year. Now you might ask, why would you care if you don't own a Deck? The answer is that while making these changes I've made other improvements as well. I've revisited and overhauled a lot of old menus, including adding keyboard navigation and improving visuals. Because of using the Steam Input library, KeeperRL will also support all controllers used by Steam. Finally, with controller support out of the way, there is now big potential for console ports, which I will be looking at next year.
Big thanks to Rarasek and Chronos0305 for their help in pinpointing these crashes.
This patch fixes the most common crashes. More fixes should be coming out soon.
This patch fixes crashes when interacting with Steam Workshop on Linux and Mac.
KeeperRL Alpha 35 is out! This patch includes a number of changes to combat mechanics and visuals, makes more of the games content moddable, and adds customizable keybindings.
Check out the patch notes below for more detailed information.
Id like to thank everyone involved in crash testing this patch, sending bug reports and suggestions. Your help was invaluable!
If you would like to continue your saved game from Alpha 34, you can opt-in into the "Alpha 34 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha 35 when you're done!
An unofficial Alpha 35 build is out on the BETA branch. Check it out if you're an experienced player and want an early glimpse of all the new stuff! Please post your feedback in the comments below. If you are new to KeeperRL, it is strongly recommended that you stick to the official Alpha 34 patch for now, as this build is very unstable, and the tutorial doesn't work at the moment. Please also note that until the patch is officially released, the save file format may change at any moment, and you saves may be lost. (although I'll do my best to avoid this). To opt into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
Alpha 35 will be a less exciting patch than its predecessor, although not for the lack of ambition on my part! I had planned a world map overhaul as well as a new minion progression system for this update. My attempts failed though, as after creating basic prototypes, I realized that they didnt mesh well with the game, and didnt feel good overall. I try to only add features to KeeperRL that I feel 100% certain about, so for now they go to the bin. To get some some actual stuff done, I changed my gears a little and went for easier features.
It has come to light that some graphical assets in KeeperRL infringe 3rd party copyrights. I wasn't aware of this, as these were made by someone hired for sprite creation recently. This is very bad news and all assets made by that person have just been taken down from the game. [strike]Unfortunately this includes the whole Necromancer faction, which is now unavailable in the game starting menu[/strike]. Saved Necromancer games will still load, but a majority of sprites won't be displayed. If you have a Necromancer game in progress I suggest waiting a few days until we sort it out. Other factions should be playable outside of an occasional missing sprite here and there. In the next few days we will figure out exactly which assets are non-original and add replacements for them, and everything should be back to normal. I am terribly sorry for this blunder and inconvenience to all players. From now on I will make sure to have a 100% certainty about the origins of new assets. If you have any suspicion that a KeeperRL asset may be "stolen", please get in touch, but also keep in mind that some older sprites come from the 16-Bit Fantasy sprite pack by oryxdesignlabs.com and you may see them in other games. Update: the Necromancer faction is back, a few "offending" sprites are still missing but will be replaced soon.
Out of solidarity with our neighbor Ukraine, the KeeperRL team will give away a free copy of the game to anyone who donates to any Ukrainian charity. You can find a list of reputable charities here. You should donate at least 20 USD. To redeem your copy of the game, please forward the email confirming your donation to miki@keeperrl.com. The team will also donate all proceeds from the sales of our game coming from Russia.
This patch fixes a wildlife spawning crash introduced in the previous patch.
KeeperRL Alpha 34 is released! The update includes the addition of steeds, an overhaul of the Z-level system, and numerous quality-of-life improvements. Check out the patch notes below for more detailed information.
Id like to thank everyone involved in crash testing this patch, sending bug reports and suggestions. Your help was invaluable!
If you would like to continue your saved game from Alpha 33, you can opt-in into the "Alpha 33 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha 34 when you're done!
The last post talked about some major gameplay changes coming in KeeperRL, but the upcoming Alpha 34 patch will also feature some nice, ordinary improvements to your everyday dungeon life.
An unofficial Alpha 34 build is out on the BETA branch. Check it out if you're an experienced player and want an early glimpse of all the new stuff! Please post your feedback in the comments below. If you are new to KeeperRL, it is strongly recommended that to stick to the official Alpha 33 patch for now, as this build is very unstable, and the tutorial doesn't work at the moment. Please also note that until the patch is officially released, the save file format may change at any moment, and you saves may be lost. (although I'll do my best to avoid this). To opt into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
When creating KeeperRL I took a lot of inspiration from Nethack, and one of my memories from playing this classic roguelike was riding a tamed dragon to victory. I think steeds are a necessary component of a rich medieval fantasy world, and they bring a lot both in terms realism as well as opportunities for interesting combat mechanics (as I found out when playing Nethack). So it was only a matter of time before they made it into KeeperRL.
Well, the time has come! At the basic level the implementation is simple, and steeds are represented graphically by drawing the steed and the rider sprites slightly overlapping. Not all combinations look as good as the necromancer riding a bone dragon, shown below, but I dont want to dwell too much on looks as its the game mechanics that are important in KeeperRL.
The rider inherits all movement traits from their steed, which is necessary for us to be able to ride our dragons over lava! Other than being stuck under the rider, the steed makes full use of its AI and abilities, fighting enemies and casting spells as you move around.
When we look at steeds from a base management point of view, the space of possibilities opens up, and we need to consider such topics as obtaining steeds, assigning them to riders, and the rules of when riders should mount and dismount their steeds. I wanted to avoid burdening players with a lot micromanagement, so most of the decisions will happen automatically. At the minimum, youll simply to recruit some horses, wolves or bats, and youll see your minions in saddles on your next incursion or your imps riding bats to cross water bodies.
To make it easier to obtain steeds, the game now allows capturing most non-humanoid creatures (as long as theyre not made of fire or other elusive material). I recommend catching some bats or rabbits for your imps to ride! Ive also added a few unique, high-value steeds that youll find if you explore your map a bit.
Its not obvious to me when minions should dismount their steeds, as from a mechanical point of view there is no downside to riding them everywhere, even in their own quarters. To keep some realism, your fighters will always dismount when entering the base. But what if there is an attack, should they hop back on? Perhaps a better solution will emerge with some more playtesting and player feedback.
The base-building department of KeeperRL is also getting a big update, with the availability of building and digging upwards. Level topography becomes three-dimensional, and most of previous limitations are removed, for example you can now build multiple stairs per level and even inter-level portals! Judging from my own play sessions, base-building has become much more sandboxy, and Ive personally played with such ideas as mountainside castles or a series of towers connected by portals.
To make these changes possible, I had to shrink the base map a bit and remove some content from the ground level. This is not a bad change since there is a lot of content now spread across z-levels anyway, so there was little reason to keep a lot of enemies and resource patches on level 0. Thanks to this change all z-levels can be aligned now and staircases lead straight down, instead of to the middle of the next level. Its very possible that Ill add a setting to use bigger base maps in the future, as its mostly an issue of RAM requirements.
I also simplified roof support mechanics a lot by removing the requirement of supporting walls. Now its enough to designate a building interior area, and the game will consider that area roofed for the sake of building furniture or adding another floor (lets assume that there are tiny pillars holding the roof if no wall was added). Roof support was pretty confusing for new players, and with building up added, even I had often trouble with figuring out why some tiles arent roofed. Im therefore very happy about this change.
The Alpha 34 update is getting close to being finished, and you can expect a testing build being available on Steam pretty soon. Ill also write another blog post about some new quality-of-life and modding features that are coming along in this patch. 2022 is looking bright :).
The Necromancer is released! This patch introduces a new playable faction focused on putting new life into dead bodies. Its highlight is the embalming mechanic, which lets you mould your minions to your liking by using various combinations of balsams.
This patch is compatible with Alpha 33 save files, retired dungeons, and mods.
Fixed crash related to torches or paintings being destroyed by the red dragon using fire. Fixed retirement crash that happened when there were active phylacteries (Unholy mod)
After automaton crafting was added to KeeperRL last year, someone suggested that a necromancer could similarly craft zombies from the body parts of fallen enemies. This was the evilest thing I could imagine, so I started working on a playable Necromancer faction right away. Unfortunately even though the mechanics were super fun, I wasn't able to come up with enough new content to make something releasable.
Around the same time the prolific modder Swish released his Unholy Mod that contains a necromancer and a lot of interesting undead creatures. I've reached out to them recently and we decided to collaborate on an official Necromancer Keeper, to be released on Halloween.
As a Necromancer, you'll choose recipes from a fine bouquet of undead creatures and use special balsams to mold them to your liking. Two special minions will be, as mentioned above, assembled from severed body parts.
While designing the Dwarves I wanted to create a feeling that each minion is unique and irreplacable. The Necromancer faction will be completely opposite to this. Your undead will be created in large numbers (there are no population limits), will fall easily due to weak defense, and the available balsams will let you specialize them against specific foes or even explicitly shorten their life in exchange for stat boosts.
This craziness will be countered a bit with phylacteries, special constructions that can renew a chosen minion's life.
The Necromancer is currently undergoing polish, and balancing, and will go live (but smell funny) on October 28th. If you are super curious or want to help out with testing before the official release, drop by on Discord!
KeeperRL should work on Macs now. Sorry for the mishap.
Due to my mistake the tutorial wasn't working in the new Alpha 33 patch, but it's fixed now.
KeeperRL Alpha 33 is released! New additions include a playable dwarf faction, overhauled z-level content, as well as numerous gameplay improvements, such as new crafting materials and an improved storage system. Check out the patch notes below for more detailed information.
Id like to thank everyone involved in crash testing this patch, sending bug reports and suggestions. Your help was invaluable!
If you would like to continue your saved game from Alpha 32, you can opt-in into the "Alpha 32 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha 33 when you're done!
An unofficial Alpha 33 build is out on the BETA branch. Check it out if you're an experienced player and want an early glimpse of all the new stuff! Please post your feedback in this thread or in the comments below. If you are new to KeeperRL, it is strongly recommended that to stick to the official Alpha 32 patch for now, as this build is very unstable, and the tutorial doesn't work at the moment. Please also note that until the patch is officially released, the save file format may change at any moment, and you saves may be lost. (although I'll do my best to avoid this). To opt into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
Whats a dungeon building game without dwarves? Of course the little neckbeards have always been present in KeeperRL as an enemy, but a playable dwarf faction has long been due. As a rule I try to add unique gameplay with each new faction so that its not a mere reskin of existing content. The dwarves are no different.
The main dwarf characteristic is that you start with exactly twelve of them, and its impossible to gain any new minions for the entire game. This is accompanied by a promotion system that lets you specialize your initially blank dwarves with various combinations of skills. The promotions are awarded together with new available technologies, as your faction gains levels.
Together, these two mechanics will force you to take long term strategic choices, as well as to choose your battles very wisely. This is unlike most other factions in KeeperRL, where minions are quite expendable. From initial playtesting it seems like this will be a very roguelike experience, which Im super happy about.
New content is always fun, but I also remember about adding important quality-of-life features to KeeperRL. One that has been requested for a long time is item smelting. It allows you to get rid of unneeded equipment, while recovering some resources. Another such feature is the unclaim tile order, which lets you remove parts of territory that you arent interested in.
To add some variety in the landscape, Ive added a fog effect which simply obscures vision. Since KeeperRL has already had a similar poison gas effect, I decided to merge these two into a general gas system. This is of interest mostly to modders, as its possible to add custom gases with various effects, and they can be placed on the map permanently during level generation or temporarily, for example as the result of a spell or crashed potion.
These are only some of the new features that Ive been working on in the last weeks. If youre interested in finding some fun surprises, you can try out the Alpha 33 testing build on Steam, which Im going to release right after publishing this blog post. Stay tuned for another announcement with the instructions on how to opt into the new build.
After a bit of a break following the last patch, Im back with some new, exciting gameplay features that will arrive in KeeperRL Alpha 33.
This is another bug fixing update.
This patch fixes some common bugs that have crept into the recent update.
KeeperRL Alpha 32 is released! This patch features major gameplay improvements, including an AI and combat overhaul, as well as new content additions, including adapting the Goblin Keeper faction from the Bonus Mod. Check out the patch notes below for more detailed information.
Id like to thank everyone involved in crash testing this patch, sending bug reports and suggestions. Your help was invaluable!
If you would like to continue your saved game from Alpha 31, you can opt-in into the "Alpha 31 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha 32 when you're done!
An unofficial Alpha 32 build is out on the BETA branch. Check it out if you're an experienced player and want an early glimpse of all the new stuff! Please post your feedback in this thread or in the comments below. If you are new to KeeperRL, it is strongly recommended that to stick to the official Alpha 31 patch for now, as this build is very unstable, and the tutorial doesn't work at the moment. Please also note that until the patch is officially released, the save file format may change at any moment, and you saves may be lost. (although I'll do my best to avoid this). To opt into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
Its been a while! KeeperRL Alpha 32 is slowly reaching its final shape, so I want to update you on all the latest stuff that made it into the game.
News number 1: The Goblin Keeper.
Many of you probably remember the Goblins from the Bonus Mod. For those that dont its a super unique faction in one of the most popular mods. Go check it out!
With SoftMonsters and RighteousSinners permission (the latter given before Righteous sadly passed away), the Goblins are making it into the vanilla game! Ive made many adjustments and added quite a few ideas of my own into this hilarious faction, while trying to stick to the original spirit. I feel like this will be an amazing addition to the game.
Having added the Goblins, I decided to scrap Orcs and Ogres from the whole game, and copy some of the goblin specializations back to the Dark Mage and Dark Knight keepers, since they have much more character, and I never liked the Orcs and Ogres visuals.
On the topic of factions, another one coming up is the Necromancer, but it requires more work, so not wanting to postpone Alpha 32 for too long Ill leave it for the next update. There are some nice ideas in there, including an Abomination minion thats assembled from body parts of fallen enemies, and a phylactery mechanic that makes a creature semi-invincible. So Im still very optimistic about what should come out of it once the Necromancer is fully fleshed-out.
Another new feature is a continuation of combat improvements described earlier, which allows giving go-to orders in the turn-based game mode. For now the order ends once the minion reaches the target, and in the future I want to add UI for more sophisticated orders, like go-to and wait X turns, go-to and scout, etc. But even in its basic form I find this feature very useful, especially when stand ground is turned on, you can easily position your team for combat.
On the topic of combat, another important change is the speed system. From now on speed and slowness will only affect movement, and all other actions, like attacking or destroying stuff will always take one turn for all units. This levels the playing field a bit, since these effects used to give a massive (dis)advantage to the unit. Ive also allowed creatures to be affected with both speed and slowness and the same time, causing them to cancel each other out, which lets you temporarily boost your slow minions with a speed potion or vice-versa.
There have been improvements in the visuals as well. Sprites are now drawn in a way that gives a bit more realistic 3D effect, and creature sprites will change orientation horizontally based on movement (see the first gif).
At this point all thats left is some testing, and helping out modders with updating their mods to Alpha 32. You can expect a testing build released to Steam very soon, and the official update not long after.
The turned-based roguelike mode is an important and distinguishing feature of KeeperRL, yet something that still causes a lot of friction for players. The main problem is that roguelikes are normally single-character games (outside of an occasional pet or companion), in which you make very frequent and fine-grained decisions. But in KeeperRL you typically lead teams of unlimited size, which either makes you dependent on disappointing team AI or forces you to take control of every team member, which slows down the game massively.
Improving the AI should make the experience much more pleasant, in particular for non-melee units, which until now had a tendency to get killed in the front lines of combat. The first, and biggest challenge was to identify effectively which units are non-melee, since a lousy bow doesn't turn an ogre into an archer. Ultimately the melee/ranged designation will be explicitly stated in creature definitions, which is something that modders will have to remember when adding new ranged fighters. The player will also have an option to override this setting for every minion, so you'll be able to tell your ogre with a bow to stay in the back of the squad.
Once a creature is known to avoid melee combat, the game checks for any offensive spells and abilities, and keeps just enough distance from the enemy to take a shot at them. The same logic will be used for non-combat creatures, like imps, which will automatically avoid enemies altogether.
KeeperRL has special squad AI that causes creatures to assemble in simple line formations. To make it work nicely with non-melee creatures Ive made them stay two lines behind by default. The game will also need to take special care of healer creatures, who have to stay close to the melee fighters, but at the same time try not to get slaughtered in combat.
All these ideas are tricky to implement, since they need to work for all types of creatures and in different scenarios ranging from open areas to tight corridors. To help the AI a bit more, Ive given more experienced archers and mages the ability to shoot past their allies, which you can notice in the above gif. This should make them even more effective and overall combat more satisfying.
While tweaking ranged combat, Ive also added a warning for when youre about to attack you own minions with a spell or arrow, which should take care of the confusing situations when your own minion turns against you.
There has also been a more internal change, which reworked ranged weapons as spells/abilities. This makes it easier to define weapons with special properties, such as cooldowns, custom effects, attacks that hit multiple enemies at once, etc.
In other news, to give you more crazy experiences, the game will now feature a polymorph spell. It will have a few variants and will be used by creatures in several different situations. Im intentionally keeping the details vague in order to make the surprises more exciting. I encourage modders to check this feature out, since it allows creating some new, fun gameplay.
Ive also been working on a new load game menu, which will come before the character creation screen, because you usually load games more often than start new onces (unless youre very new to KeeperRL, ha, ha). Its very likely that Ill also design a wholly new main menu for the upcoming update.
This patch adds the following content:
This is another bug fixing patch.
This patch, which I've released gradually over the last two days, fixes the following issues:
Coming to you straight from wooden coffins is a new zombie-only faction. Have some brains for Halloween!
KeeperRL has been in development since early 2013, and in a few weeks it will be seven years since the release of Alpha 1. When KeeperRL went on sale its initial price was $15, and when it was launched on Steam Early Access, I promised that it would not change for the final release.
However, since that time I spent another 5 years working nearly full time on KeeperRL, which was something I hadn't anticipated. Because of this, I feel that the market value of the game has increased quite a bit, also considering the prices of other similar games. My personal circumstances have also changed throughout that time, and I need to make sure that my small business stays afloat so I can keep working on KeeperRL and other projects.
Therefore on November 15th I will be increasing the price of KeeperRL to $20 in all stores. If anyone feels that this is unfair, I'm announcing this change in advance, so there is plenty of time to buy the game at the current price. I also plan to not make any discounts until KeeperRL reaches a 1.0 release.
KeeperRL Alpha 31 is released! The two major features brought by this update are the new Warlord game mode and moddable randomly generated maps. Check out the rundown below to get an idea about all the rest of the new stuff.
Id like to thank everyone involved in crash testing this patch, sending bug reports and suggestions. Your help was invaluable!
If you would like to continue your saved game from Alpha 30, you can opt-in into the "Alpha 30 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha 31 when you're done!
An unofficial Alpha 31 build is out on the BETA branch. Check it out if you're an experienced player and want an early glimpse of all the new stuff! Please post your feedback in this thread or in the comments below. If you are new to KeeperRL, it is strongly recommended that to stick to the official Alpha 30 patch for now, as this build is very unstable, and the tutorial doesn't work at the moment. Please also note that until the patch is officially released, the save file format may change at any moment, and you saves may be lost. (although I'll do my best to avoid this). To opt into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
I'm slowly wrapping up the Alpha 31 update, and while it won't be nearly as massive as the previous patch, it will bring two very interesting features.
This patch fixes some of the most common crashes and other bugs. Note: parts of this patch had been released in June, but were rolled back due to breaking save file compatibility.
You might have noticed a bit of radio silence from me in the last couple of months, and this is because I've been somewhat burnt out after the six-month push for the Alpha 30 patch, and I needed a bit of a break. As KeeperRL has been in development for more than seven years now, I think it's good both for the game and for me to distance myself every once in a while to take a breath. Alpha 30 was originally intended to be a milestone update, after which KeeperRL was going to transition into a Beta stage, but I ultimately decided against using these official terms to avoid confusion, since nowadays they mean different things to different people. Nevertheless the focus of development has been shifting and will shift even more. If you're interested, these are the areas that I intend to work on the most in the upcoming year or two.
The Alpha 30 hotfix patch that went out a few hours ago has been rolled back due to a new critical bug that got introduced by accident. The patch will come out at a later date. If you have started a new game in this new patch, it will fail to load after the roll-back. Sorry for that!
This patch fixes some of the most common crashes and other bugs.
KeeperRL Alpha 30 is out! This is a huge gameplay and content update, which took whole six months to produce! Check out the rundown below to get an idea about all the new stuff. Id like to thank everyone involved in crash testing this patch, sending bug reports and suggestions. Your help was invaluable! If you would like to continue your saved game from Alpha 29, you can opt-in into the "Alpha 29 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha 30 when you're done!
The unofficial Alpha 30 build is now available for Mac and Linux! I would greatly appreciate if Mac and Linux players could confirm that this patch works, as I've updated my release toolchains, and there might be small issues that need fixing. Note: this build is still unstable and the tutorial doesn't work, so if you're a new player it's better to stay on the official Alpha 29 for now. To opt into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
An unofficial Alpha 30 build is out on the BETA branch. Check it out if you're an experienced player and want an early glimpse of all the new stuff! Note: this build is available on only Windows for now. Please post your feedback in this thread or in the comments below. Please don't opt in if you are new to the game, as this build is very unstable, and the tutorial doesn't work at the moment. To opt into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
Being stuck in self-isolation myself, I decided to release a free download of the Alpha 29 patch, to hopefully sweeten everyone's time a bit! This is the most recent version of the game. Some strings attached:
After releasing the last Alpha 29 fixes I've been very busy with adding new, shiny features to your favorite game! In order to keep you excited for KeeperRL Alpha 30, here is a quick rundown of what's coming.
This patch fixes most of the remaining crashes in Alpha 29 and improves end-game performance by a large margin.
This patch fixes a critical issue with downloading Steam Workshop items that caused the game to crash. Opening in-game links on Mac has also been fixed. Using the opportunity I put some pumpkins in the game too.
This is a bug fixing patch that gets rid of the most common issues in Alpha 29.
KeeperRL Alpha 29 is out! This update features Steam Workshop integration along with gameplay improvements and a big amount of new content, including two new biomes!
Id like to thank everyone involved in crash testing this patch, sending bug reports and suggestions. Your help was invaluable!
Scroll down for a detailed change log.
If you would like to continue your saved game from Alpha 28, you can opt-in into the "Alpha 28 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha 29 when you're done!
An unofficial Alpha 29 build is out on the BETA branch. Check it out if you're an experienced player and want an early glimpse of all the new stuff! Please post your feedback in this thread or in the comments below. Please don't opt in if you are new to the game, as this build is very unstable, and the tutorial doesn't work at the moment. To opt into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
Besides Steam Workshop support, Alpha 29 is going to bring a large amount of new content and mechanics for your enjoyment!
The last few KeeperRL patches improved modding support to the point where you can change or replace the majority of the games content. Im very happy that a few hardcore fans jumped at the opportunity and published some really cool things, and the most popular mod is played nearly as much as the vanilla game! The game features a very simple interface for downloading mods, but a far better framework made for mod sharing is the Steam Workshop, which supports commenting, ranking, subscribing, searching and all the other things necessary for a great sharing experience. And thus I brought the coding guru Krzysiek onboard again, to integrate it into KeeperRL. Once at it, we also plan to support sharing of retired maps through the Steam Workshop. I hope to release a testing build integrated with Steam Workshop in late August/early September, so we can work with mod creators and players to make sure the experience of content exchange is as perfect as possible. For players that dont use Steam, all content will also be hosted on the keeperrl.com server, as usual, but without the extra functionality that Steam Workshop supports. I feel bad about creating this inequality, but since more than 95% of players play on Steam, it would be a mistake not to make use of the extra free features that it provides.
This is a bug fixing patch that gets rid of some common issues found in Alpha 28. Please note that the first three items take effect only in newly started games.
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 has been exported to data files and can be modded. Mods can be shared at keeperrl.com and downloaded directly from the game! A few veteran players have already published a mod with massive amounts of new content.
I'd like to thank everyone involved in crash testing this patch, sending bug reports and suggestions. Your help was invaluable!
Scroll down for a detailed change log.
If you would like to continue your saved game from Alpha 27, you can opt-in into the "Alpha 27 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha 28 when you're done!
I've uploaded a pre-release build of Alpha 28 for all three platforms. I invite all seasoned players to take a look and post their feedback in this thread or in the comments below. Please don't opt in if you are new to the game, as this build is very unstable, and the tutorial doesn't work at the moment. To opt-in into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
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 features, and will work on finishing everything up and turning it into something that can be released. Here's a rundown of what you can expect. Tighten your seat belts!
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, and digging downwards gives you access to extra resources, enemies and other surprises. Check below for the full change log.
I'd like to thank everyone involved in crash testing this patch, sending bug reports and suggestions. Your help was invaluable!
If you would like to continue your saved game from Alpha 26, you can opt-in into the "Alpha 26 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha 27 when you're done!
I've uploaded a pre-release build of Alpha 27 for all three platforms. I invite all seasoned players to take a look and post their feedback in this thread or in the comments below. Please don't opt in if you are new to the game, as this build is very unstable, and the tutorial doesn't work at the moment. To opt-in into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
The past month saw a big number of small improvements added to KeeperRL. Below is a brief rundown.
Z-level variations
Implementing Z-levels doesnt end with simply adding a Z-axis, the levels themselves need to have some interesting content. Besides the obvious mineral veins, youll find enemies, whole settlements and sometimes even special levels. For example, you may encounter the following situation after digging down:
Temples and ruins
Ive added new locations that are scattered around the maps randomly. They have some interesting interactions, but I wont spoil them for you. I realized that this is something that KeeperRL is missing very much, so Ill be adding many more in the future. Including bigger, multi-level ones.
Crafting upgrades
In one of the recent updates Ive added the ability to craft magical equipment, but the system was very basic it was totally random and the types of items were predefined. With this change youll be able to craft unique items by combining multiple upgrades. These upgrades can be found in the form of glyphs while exploring the world.
Modding
In Alpha 27 youll be able to modify and add new creatures to the game. They can be used for keeper and adventurer characters or as immigrants. For now its not possible to add new creatures to world generation (although you can modify existing ones), and you also have to reuse existing sprites. Ill work on these two things in the next update.
Ive also made it possible to switch between mods in the games settings, and they can be simply placed as subdirectories in data_free\game_config.
Im planning to release a testing build on Steam some time next week, so stay tuned!
Ive been back to work in the last few weeks, after a longer-than-usual Christmas and New Years break, and Id like to share all the cool stuff that I worked on! Z-levels, which essentially mean building your dungeon over multiple floors, are probably the most requested feature in KeeperRL of all time. Ive been resisting them mostly due to lack of a good vision on how they would work with the rest of the game. They obviously increase dungeon building possibilities, but also make the game more complex. KeeperRL already features a decently sized world to explore horizontally, so how would vertical expansion complement it? I gave it some more consideration recently, and realized that Z-levels could solve a lot of the mining progression problems:
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 involving pathfinding - you may see the error "couldn't track path" or such. If you have a game that ends with this crash repeatedly, please use the bug reporting button to send it to me. Any information leading to the smashing of this bug will be rewarded.
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 and special effects!
This update allows you to construct buildings outside of the dungeon. You can choose to dwell in a castle if you're not a fan of caves. There is also a new Keeper character, the White Knight, with a new set of minions and enemies. He/she is similar to the Duke nemesis found in the campaign.
If you would like to continue your saved game from Alpha 25, you can opt-in into the "Alpha 25 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha 26 when you're done!
The full change log:
Gameplay
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 the code. On the other hand, moving data into text files requires quite a bit of effort, like writing a parser and reorganizing a lot of code, which is why I kept putting it off.
On a whim, I finally decided to give it a try, and moved some basic data structures into text files. I started with campaign villain lists, which have a very simple form, and moved on to more complex things, like the building menu, workshop menu, immigrant definitions and technology. I developed a handy algorithm that can read the game's internal data structures directly from the files without any extra effort. There is still a lot more data that's defined in the source code, like furniture, creature and villain definitions, and I'll move them in later updates.
When it comes to modding, there are a few more things necessary to make it easy: being able to add mods by simply dropping in new files as opposed to editing existing ones, managing mods from the game's menus, and ultimately hosting mods on the servers, and possibly on Steam Workshop. (I don't promise the last two yet, because they're quite a bit of work).
If you're interested, you can check out the current data definitions here.
Now let's talk about gameplay. Something that's always been on my mind are outdoor buildings. Because not every Keeper likes to dwell in a cave! It was quite an easy addition, the hardest part being how to define indoor/outdoor areas after the player has built some walls (you are only allowed to build most furniture indoors). You can go wild and build a castle. :)
Yes, and you can play as the knight faction now :). It was also added on a whim and is quite basic for now, but it's a great start to adding more factions and more differentiated gameplay. Below are your current Keeper options. Of course with the new modding support one can actualy easily add more.
With the new leveling system, which I described in the previous update, Artur and I added a small touch to the Keepers that makes them upgrade their avatar as you advance. Initially, you start with the young girl or guy on the left. :)
Finally, some minor esthetic improvements include a rock cracking animation as you dig and candelabra as a new room decoration.
This sums up all the new changes coming in Alpha 26, and at this point I'm going to work hard testing the game, fixing all remaining issues and releasing the update as soon as possible. If you're curious and would like to help with testing, you can try out the testing build by opting into the 'dev' branch on Steam.
I've uploaded a pre-release build of Alpha 26 for all three platforms. I invite all seasoned players to take a look and post their feedback in this thread or in the comments below. Please don't opt in if you are new to the game, as this build is very unstable, and the tutorial doesn't work at the moment. To opt-in into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
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 announce the addition of a new team member! I've managed to convince my friend from university, Krzysiek, to join me in programming efforts.
Krzysiek is a graphics expert, and he took upon himself the task of adding new animations to KeeperRL. Initially we planned to animate spells and creature effects, but it turned out that there is potential to add a lot more. All the new animations are implemented using particle effects, so in a sense they are procedurally generated, and can be easily tweaked and extended to other parts of the game. You can see some examples below.
Besides the eye candy, they will also convey useful information about what's happening in the game, especially in the battle field, although we are trying to keep them moderate to avoid unnecessary overload. I also hope that they will make the game feel more alive and help the players get more immersed.
Meanwhile, the other part of the programming team, which consists of me, is working on gameplay improvements and various fixes. The biggest change so far has been the replacement of mana with a leveling mechanic. Superficially, the change is small: after defeating an enemy, you are awarded experience points, and after earning enough, your level is increased. With each level you unlock a chosen technology.
The subtle difference is that the higher your level, the more experience points are required to advance. As a consequence, defeating minor enemies only helps you at the beginning of the game, and as you grow in strength, you need to tackle the major ones to advance. Add another side to this: if you're an expert, you can make quick progress by defeating a major enemy early in the game.
In other words, the difficulty and progression will scale better. Besides that, I also plan to allow other improvements when gaining each level, which I temporarily call "dungeon upgrades". In contrast to technologies, they can be applied repeatedly, and include things like more effective prisoner conversion, faster immigration, training, crafting, mining, etc. What's important is that they are independent of technologies, so you'll get to choose both a technology and an upgrade when reaching a new level.
Another new feature is what I call a "luxury system", which replaces the efficiency modifier in furniture. Instead, some constructions have a luxury modifier, which continuously increases the morale of nearby creatures. Thus, minions who get to live in more luxurious environments, get more efficient at training, crafting, combat, etc. To amplify this change, I've added bed and coffin tier levels (undead will from now on sleep in coffins, and graves will only be used to store corpses). Your favorite minions can now be made very happy by sleeping comfortably and being surrounded by shiny things!
Most of the things described above are nearly completed, so I hope to be able to upload testing builds for you to check out very soon!
This patch fixes a few issues in the Alpha 25 update. Many of them have been reported by players through the in-game "report bug" tool. Thanks to everyone for helping out. This version may still have occasional issues with hauling AI, in particular with workers carrying around items needlessly instead of dropping them at a storage. Since the problem is quite complex, a fix will only come in Alpha 26. Sorry for that.
KeeperRL Alpha 25 is finally out! This is another patch with a lot of gameplay improvements, focusing especially on dungeon development. It includes moat building, special items and minions and a new Keeper character. Check out the change log below for details!
The full change log:
Gameplay
A member of the community, KoopaSamurai, has started a discord server for KeeperRL, and I have decided to make it an official server. Please take a moment and join, it's a great place to ask a quick question or have a chat with me or other players. I always love talking about the game! https://discordapp.com/invite/XZfCCs5
As promised, I have uploaded a pre-release build of Alpha25. There are still various issues to be fixed and this version contains some placeholder artwork, but I believe that it's quite playable. I invite all seasoned players to take a look and post their feedback in this thread or in the comments below. The new version allows submitting bug reports from within the game, optionally attaching a save file or screenshot. Please use this feature to submit as many reports as you like, including suggestions, minor issues or typos. Please don't opt in if you are new to the game, as it's very unstable, and the tutorial doesn't work at the moment. To opt-in into the build, please go into the game's properties, BETA tab, and choose the "dev" branch.
I haven't posted updates for a while, but KeeperRL's development has been quite steady. Among other things, I've done a lot of work in the UI department, of which you'll find a short rundown below.
Overhauled villains UI
I've received a lot of reports of players being confused and angry about being attacked by stronger enemies. While they always have a good reason for attacking, the game didn't do a good job at communicating this. With this update, you'll receive notifications about triggered villains along with the specific reason. The game will also tell you when you can pillage a defeated enemy or trade with an ally. In general, this piece of UI replaces the villains tab, providing the information in a much more player-friendly way.
Creature inventory and lying items
You can now inspect any creature's inventory or what items are lying on the ground both in the real-time and in control mode. Very useful when looking for items in your storage room or on the battle ground.
Bug reporting tool
I've made it possible to report bugs without leaving the game. You can optionally attach a screenshot or a save file, which is a big improvement over players having to find the file on their disk and email it to me. :P
Imp hauling AI improvement
Imps will now be able to pick up items from many locations before heading back to storage, instead of bringing items one by one.
In terms of features, Alpha25 is almost ready, and I'll be uploading a testing build to Steam very soon. The update will be released officially once Artur finishes some necessary artwork, and I iron out all remaining (known) bugs and missing features.
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, so they were great fun to work on. I'm happy to say that the development of the game has recently transitioned more into adding smaller features, polish and content, as opposed to revolutionary changes.
Let's take a glimpse at the new goodies. :)
Moat building
Constructing arbitrary water or lava channels is an important tool in the hands of a Keeper, so it had to find its way into the game sooner or later. An important issue to solve was how enemy AI should deal with players who completely surround themselves with a moat. As you may recall, I faced a similar problem when allowing to freely fill up tunnels, and the solution was teaching AI to dig into sealed-off dungeons. A similar strategy will be used to breach moats: enemies will simply build bridges over them. Everyone knows that dwarves carry spare wood planks on their backs in case they encounter unexpected bodies of water in their way.
Portals overhaul
Portals are great dungeon feature that allows instant travel between distant locations. Up until now they could only be used when manually controlling a creature, because KeeperRL's finely optimized path-finding algorithms didn't play nicely with such abuses of the laws of physics. However, I was able to find a reasonable compromise between speed and the use of portals, so now all your minions (and enemies!) will include them when calculating their shortest paths around the dungeon. Even complicated arrangements will work! Also as you can see, connected portal pairs will be color-coded.
Ego items
At the urge of the most dedicated KeeperRL fan, SoftMonster, I added the ability to craft so called "ego items", which are items with special effects, like a flaming sword or a helm of telepathy. To craft them you'll need a minion with crafting skills above 90% and with high morale, which will drop after the act of creation. With these changes I also modified the underlying architecture to make it much easier to add new item and effect combinations, so your minions will get a lot of new shiny toys!
Special minion traits
Having new special items, I decided to make minions a bit more special, too. Every new immigrant will have a small chance to possess one or more special traits, not necessarily positive. So now and then you'll attract a goblin with an unusually high crafting skill (necessary for ego items, btw), an orc with night vision or a harpy that's straight insane (watch out for her). A lot of interesting traits are in development, and I hope they'll add a nice twist to the immigration system. It's possible that special traits will come with special requirements, too.
"Stand ground" and "ignore enemies" team orders
This is a nice quality-of-life improvement when controlling teams. Outside of full-control mode, team members have always had a mind of their own, chasing unimportant enemies or blindly charging at a dragon while you are trying to get your whole team to retreat. Switching to full-control to get them to do what you needed was a very tedious option. The "stand ground" order forces the whole team to stay in place even if the leader moves away, and "ignore enemies" stops them from chasing anyone (they will still attack adjacent creatures). The first one is great when you create a formation that you don't want your minions to break, and the second one is best used when retreating or when you don't want your minions to get distracted while traveling.
This patch should hopefully wrap up bug fixing for Alpha24. I've also started working on Alpha25 already, and will give you an update on that in the next few days.
It's my pleasure to announce that KeeperRL Alpha24 is out! It's another big gameplay patch, bringing in many new features:
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 share it with you on the beta testing branch on Steam. I kindly ask all seasoned players to take a look and report all issues in the comments below or in this thread. Please don't opt in if you are new to the game, as it's very unstable, and the tutorial doesn't work at the moment. As for the next steps before release, there is only one feature that I need to work on: prisoner rebellion. It is necessary in order to stop players from amassing too many prisoners, and will be triggered when the number of prisoners approaches the size of the armed forces. The logic is quite simple: all prisoners suddenly become hostile. I only need to design an interface that will warn the player about possible rebellion and explain the reason why it might happen. The last necessary change I will need to work on is to update the tutorial to include some of the new features of Alpha24. It's not a huge amount of work, so I estimate that the new patch should be officially available within the next 2-3 weeks. Hold your thumbs!
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 began the new year with some cool gameplay improvements in KeeperRL that I'd love to share with you :) . In the previous dev update I talked about various ideas on how to overhaul prisoner capturing mechanics, so I'll start with that. I want to give credit to the community for overflowing me with suggestions, it helped a lot!
I wanted to come up with something relatively simple, while giving the player plenty of control, and forcing them to take some trade-offs.
The first step to capturing a prisoner is tagging the selected creature. You can do that in both the turn-based and the real-time modes. This gives your enemy extra damage resistance, and a separate hit-point bar dedicated just to capturing. This way you can't cheat by severely wounding them first and only then ordering their capture.
When a tagged creature loses all their hit-points, they get knocked out instead of dying. They also won't lose any of their limbs. A critical feature is that you can always swap position with a knocked out enemy, so they don't block anyone's movement.
Knocked out creatures are given a timer, and when it runs out, they die. But before that happens, they show up in your immigrant list where you can enslave them, provided that you have built a prison. When you do that, they get up and walk into your dungeon. And now you have a prisoner!
Prisoners retain their identities after being captured, so you can use them in various ways, depending on their skills. Of course every prisoner gets a basic mining skill, because that's mainly what prisoners are for. :) Torturing will have a chance of converting them to your side, which lets them join your armed forces. But it will sometimes kill them instead.
There are still a lot of side features needed to be implemented around prisoners, but the core of idea is here at it works well, which I'm very happy about.
Every once in a while I got reports about players locking off separate mini-dungeons for chosen minions, and that it doesn't work due to bad AI, which insists on going to the locked-off parts. I fixed the AI issue, but decided that this strategy requires a dedicated feature in the game.
You can now designate living quarters for chosen minions, and they will try to perform their activities within that area, and other minions will try to stay out. Although if some piece of furniture is not available in their area, then they will break that restriction.
I've made many other small improvements in the last month. I added hand torches, which you can use to light up the area around you when travelling in darkness. The other use is of course... throwing them to set things on fire :D . Which, by the way, also emits light so it's more fun to watch now. :)
In the first gif you may have noticed the new UI for interacting with creatures in the turn-based mode. It should greatly improve the experience when playing using the mouse, and even perhaps let you discover interactions that you weren't aware of before.
I'm also working on improving the base map generation algorithm to make dungeon building more interesting, but I'll talk more about it in future updates.
One of the big things that KeeperRL is still missing is a good system of capturing and exploiting prisoners. I'm committed to fixing that in the coming patch, although I don't have a very clear vision yet. I'll lay out what I've come up with so far, and I hope to get some feedback from you.
At the moment prisoners can only be captured inside your own dungeon, and the rules of how it's done are hidden, so the system is unclear and random for the player. The main goal is to make the requirements explicit, so it's clear what you need to do to capture a prisoner.
The main approach that I'm looking at is using the immigration UI. In the example screenshot above the player can schedule capturing of prisoners, provided that the prison is big enough. Once the orders are placed, minions will try to capture prisoners at the nearest opportunity, for example when raiding a village.
The disadvantage of this system is that if the player forgets to place the order before a battle, they will lose the opportunity to capture anyone. It's also unclear how captured prisoners should travel back to your dungeon. Should they join the raiding team and return with them? What if you want to continue raiding, are you going to drag the prisoners with you to the next battle? They could also return by themselves, but it wouldn't be realistic - they could easily escape.
A much simpler idea is to implement prisoners as regular immigrants. The two requirements would be building a prison and capturing a village. The remaining civilians in the village would, at the press of a button, turn into prisoners and come to your dungeon.
Just like above, having prisoners travel alone would be unrealistic. The idea also seems too automated and lacking any challenge. The system also doesn't easily accommodate capturing non-civilians. One major advantage is that it's very easy to explain to and to use by the player.
There are some vague ideas of gamifying capturing a bit more, so that it requires more effort or strategy from the player than just killing enemies. A special "slave master" minion could be the only one capable of taking prisoners or there could be a special weapon, like a throwing net, or a trap. But I'm afraid of making the system unwieldy and requiring too much micromanagement.
Once prisoners are captured, we need to decide what to do with them. The current options are execution, which aggravates enemies, torture, which produces mana, or having them supplement your imp force. Every captured creature turns into a generic prisoner minion, and they are all identical.
There are a few ways to make things more interesting. One is letting prisoners retain their identity, making some more useful at certain tasks than others. Or even letting them join your armed forces. I think enemies should also try to break in and free prisoners.
I was also thinking about making prisoners more essential for progression by limiting the capabilities of imps. For example after some length of digging the rock could become harder and only possible to mine by prisoners. Same thing could be done to some or all minerals. Acquiring a large number of prisoners would thus be critical to have a successful dungeon.
All of the above are just ideas floating in my head or being partly implemented. I'll do a lot of playtesting before I settle on a solution, and I also expect that things will need to be refined in later patches. Hopefully I can come up with a system that will add a lot of meat to the game. Meanwhile, I'm eager to hear your thoughts!
After releasing a few bug fixing patches to Alpha23, I got right down to working on the next major update. I'll give you a summary of things that are already implemented, and in future posts I'll talk about more plans for Alpha24.
The first thing I decided to work on was polishing the full-control mode. It has become an important feature of the game, so fixing the very rough edges is high priority, especially that I got a lot of complaints.
The first issue was the chaotic move order of team members. The movement system in KeeperRL was very flexible, allowing varying speeds of different creatures. Unfortunately this made team members "overtake" each other in the movement queue in a very unpredictable manner. The only way to solve this issue was to change to a proper turn-based system, where every creature normally gets one move per turn. This allows processing creatures in a "stable" order, which can be altered by the player, for example if they want to postpone one team member's move (without them losing their turn). As another "win", a player-controlled creature that has a speed buff and gets two moves per turn can perform them in sequence. The "slow" debuff makes creatures skip every second turn.
What are the disadvantages the new system? Creatures lose the fine-grained speed attribute, and almost everyone moves at the same speed. I don't think this will have a negative impact on the game, but if it's a major issue then it's possible to add more speed levels, where a creature gets an extra move every other turn, every three turns, etc. This emulates the old system very well, while having an advantage of being much more predictable.
Having that change out of the way, I added the UI to manage team members, where you can see and change the move order and can decide if a minion is controlled manually or by AI. This also makes the way for UI for giving orders to the AI, which many players ask about, although this feature will likely not come in Alpha24.
I have big hopes that these changes will make the full-control mode much easier to use and more fun.
The screenshot above reveals another new feature. Every creature now has a set of intrinsic attacks, which by default are active when it is not wielding a weapon. Each attack is attached to a body part, and is made unavailable when the body part is lost or injured. If a creature has multiple attacks, then one is chosen randomly when attacking. It is possible to make attacks active even while wielding a weapon, which is useful if a creature can inflict a poisonous bite, for example.
The feature gives me a lot of new options for designing creatures, and should result in some new interesting gameplay. Note that every attack can be inherited by a doppelganger!
Here are the intrinsic attacks that have made it into the game so far:
Today's patch includes some important gameplay changes, and a few bug fixes. I still haven't tracked down the graphical glitching issue that makes the game unplayable for some players. If you experience this, and would like to help with the investigation, please contact me.
This is a very small patch. I'm still working on fixing a couple more bugs, including a graphics corruption that happens on some platforms, so expect more patches soon.
Some of the dust has settled after the last patch was released, so it's time for a summary. Thanks to a promotion and Steam's autumn sale, there has been an influx of new players. I would like to welcome everyone on board, and encourage you to participate in discussions and take part in the development of the game. I'm always open to ideas and your input is very important to me. Alpha23 was probably the biggest gameplay update released so far, and as much as I had high hopes that it will be a big improvement of KeeperRL, it received a bit of negative feedback. Processing negative comments is pretty hard. First of all there is a danger that they are not representative of overall player opinion - of about 2000 people that tried out Alpha23, only about 1-2% posted their comments. I take feedback very seriously, but my decisions will be different depending on whether it's only that 1% that are unhappy, or if there are another 1000 players who didn't like the update, but didn't comment. There can also be clashes of my personal vision of the game, and people's expectations and playing styles. I've recently learnt that some players have been building dungeons with over a hundred minions. I never planned gameplay around such big bases, so it's understandable that some of the changes can conflict with such playing style. I need to take that into account when deciding if a particular piece of feedback is related to a bad design in the core of the game. Of course I try to cater to as many types of players as possible, but I also need to make some compromises to stick to my vision. To get to specific feedback, it was mostly related to people not liking the new mana progression, having to use the full-control mode all the time or just generally finding the game too hard. I think the last two are very connected, as full-control gives a huge advantage to the player, so it forced me to increase enemy stats. Now staying in the real-time mode or even controlling just the team leader is not an option in most battles. I can definitely see how it breaks the game for some people. It may sound dumb, but for me a big thing is that I personally enjoy playing KeeperRL with the new changes. The new tactical gameplay introduced by the full-control mode is very fun for me, and the mana progression gives me more challenge. While the new features will stay for now, I'll try to improve them and remove as many rough edges as possible to give everyone a better playing experience. I'll improve the interface and general handling of the full-control mode, and work on creature AI so that its tactical disadvantage is smaller. An early patch was already released to tone down the difficulty of the early game. I will also try to improve the progression, although I think that tying it with conquest was a good decision. Besides fixes, I already have some plans for the next update. As with Alpha23, it will continue the trend of adding new gameplay features and content, although I'm quite certain that this time they will be much less revolutionary. Once the plan is laid out, I will write a blog post about it.
This patch contains a few quick fixes to the last update. I received a lot of feedback and there are some bigger things that need addressing, and I'll discuss them tomorrow in a separate blog post.
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 release! The new features can be divided into three major groups. The first one redefines progression in the game, making it more dependent on conquest. Mana is no longer generated in the library, but is instead awarded for conquering enemies. A lot of construction and item prices were rebalanced to accommodate this change. You can optionally turn on mana generation in the library in the 'free play' mode, for those who will miss the old system. You can read more about these changes here. The second set of changes involves combat and training. Combat has been made more deterministic and slower, and creature attributes were changed to empower spellcasting characters. There are also health-bars! A major addition to combat is the 'full control' mode, in which you control every minion in the team. This redefines the combat experience in KeeperRL in a major way, making it much more tactical and fun. The last big addition is the 'endless mode', where you are tasked with defending your dungeon from incoming enemy waves for as long as possible. This is a game mode for players who don't necessarily enjoy venturing out and exploring the world. Conquest is optional. The highscores for this mode will be based on how many turns you were able to survive. If you would like to continue your saved game from Alpha22, you can opt-in into the "Alpha22 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha23 when you're done! The full change log: Gameplay
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 endless mode enemy raids by hand. The automatic difficulty scaling method that I announced earlier proved to be too difficult (pun intended) for now. The raids will still be randomized, but their difficulty curve will be created by my trial and error, rather than a mathematical method. This is something to be fixed in future releases. At this point my aim is to release Alpha23 this Saturday. This is the first time that I announce a release date ahead of time, I hope I won't regret it. :P I've uploaded another testing build to the Steam 'dev' branch. Below is a summary of changes since the last upload on September 5th. Please report any bugs and other issues!
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 end of August, because I'm taking 3 weeks off in mid-September. Unfortunately this plan has failed, so I'm going to finish as much as possible before leaving, and release when I'm back, in early October. Players who play KeeperRL on Steam have had the opportunity to test Alpha23 for a while already, and today I've uploaded another testing build with the newest changes. It's the first build that has the endless mode enabled, even though some thing are not completely fleshed out yet. For now the attacking enemy waves are fixed, but the final implementation that I have in mind will have randomized villains with automatic difficulty scaling. My aim is to create a fair, but re-playable experience. It's actually an interesting problem, and the solution that I came up with can be used to balance the game in all sorts of other scenarios. I'll very likely write more about it in a future blog post. You can opt-into the testing build through the game's properties in the Steam client (choose the "BETAS" tab). The build is available for Windows, Mac, and Linux. I encourage everyone to try out the endless mode and share their opinion either below in the comments or in this thread. Here are the changes since the previous build released on August 16th:
Linux and Mac users can now download the new testing build. To do so, opt-into the testing branch through the game's properties in the Steam client (choose the "BETAS" tab). Here's a list of changes introduced since the build uploaded on July 31st. * Unicorn villains * Demon villains * Archery range * Ants can dig into your dungeon * You can cut yourself off with "fill up tunel" but if you do, all enemies will dig to get to you * Enemies will try to destroy walls to break choke points * Magical weapons * Fixed night and elf vision combination * Fire dragons, lava golems, fire elementals and fire spheres resist fire. * Fixed game speed dialog * Enemies don't panic on low health anymore * Added proper spell icons * Some new tiles (throne, demon shrine) * Fixed memory leak reported above * Fixed healing when sleeping on beds * Fixed visibility issues * Minions have common visibility with eyeballs
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.
KeeperRL Alpha23 is not ready yet, but a lot of new features are already implemented, and you can test them out! Opt-into the testing branch through the game's properties in the Steam client (choose the "BETAS" tab). Only Windows builds are available for now. Below is a list of all major changes. You can read discussion on the changes here and here. I'm awaiting your comments and criticism :-). Please post in this thread or in the comments below.
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 the previous post, I recommend doing it first.
First of all, my comment about my lack of desire to implement complex management a'la Dwarf Fortress made a few people worried, so I want to clarify. I didn't mean that there won't be any new features of this kind, only that it's not the main focus of KeeperRL, which should be obvious by now :) . So you won't see detailed tracking of minions' emotions, fluid simulation, etc., but there is new stuff coming even in the next update.
Second, some of you were worried that the new progression based on mana would interfere with other elements of the economy. I had a nice discussion with Steam player WarMaster GoreHowl, and he postulated that major expenses, like technology, should use different resources than more minor things, like crafting, because otherwise the player is too conflicted about spending on the minor things.
It's a fair point, and it made me play with another idea of using gold for technology and population advancement. Unfortunately this didn't work well, because there are multiple sources of gold in KeeperRL, and it's hard to make sure the rewards for conquest are balanced well. Mana, on the other hand, can be more easily curated to make sure that players are getting the right amount, for example two technologies per each major villain conquered. My current choice, therefore, is to use mana only for technologies and population (everything else that uses mana will be switched to another resource). Exact amounts of tech and population costs are to be resolved later, of course. Note that nothing is set in stone, and further testing or feedback might change my mind again. :)
Together with the progression overhaul, I've planned a set of drastic changes around the combat in KeeperRL, as this part of the game is severely lacking right now. My main motivation was to make spellcasting creatures more significant. This includes the Keeper, most importantly. I decided that all damage dealt in combat will be of one of these three types: Melee, Ranged, and Magical. Every creature will have an attribute for each of the types that dictates how much damage it deals. For example, an orc with Melee Damage 25 and a +8 sword will deal 33 damage, and when an orc shaman with Magical Damage 18 casts an offensive spell, it will deal 18 damage every single time. The current attributes Strength and Dexterity will be removed, and as a consequence, there will be no missed attacks anymore (although an attack against a well protected opponent may deal zero damage).
It was tempting to also add a separate Defense attribute for each type of damage, but it proved to be too convoluted. So instead every creature has one Defense value against all types of attack, although it can receive a "resistant/vulnerable to
Naturally, the three damage attributes need to have training possibilities. Each will have a separate path: the Training Room will train Melee Damage and Defense, the Library will increase Magical Damage, and a new room, Archery Range will improve Ranged Damage. Every creature will have predefined maximum levels that they can reach at each kind of training, for example an orc shaman will train up to +3 in the training room, and up to +7 at the library. The library and archery range will require upgrades to train minions to the fullest, just like the training room does at the moment.
Since we will have more offensive (and also healing) spells now, they will add more interesting tactics to the game. I decided that this should be accompanied with a long planned tactical feature: full turn-based control of a team. By default you control only your team leader, but you can switch to a mode where you make moves for every minion on the team, which is extremely useful in combat! Sorry for the horrible gif. :P
This makes combat more similar to the Civ games, with the difference that creatures act sequentially, and thus almost always make only one move at a time, and you can't "wait" and go back to a creature later in the turn. The play is a bit clunky because of that, although it still feels extremely fun to me. I've also added common line of sight between all minions, so if one minion can see something, then everyone can (even outside of the team).
You're probably getting dizzy from all these new features, so let's move on to the last one. As you can see above, the game displays health bars over wounded creatures. This feature comes with underlying changes to damage and health calculations. The result is that combat is much slower and less random, there are fewer surprising insta-deaths, and also it's easier to overwhelm a strong enemy with a large number of weaker creatures. Things that many players have asked for.
This was a very speedy summary of all the incoming new stuff! In reality, it also comes with a lot of smaller, accompanying changes, including many in the UI department. All of the things mentioned are already implemented, but the game is now terribly unbalanced and needs a lot of testing. I'm eager to hear your comments and criticism, although I think that to get concrete feedback I need to release a testing build with all the changes, which will hopefully happen soon.
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 to do is figure out the core of their game very early and just make that. Don't get caught up in polish, or art, or start thinking that adding ancillary features will make the game sing. If that core doesn't hit really hard and really grab players, the game is pretty much doomed. But if that core really works, everything added on will add huge value." I think it's a very important point, and I've always felt that there is some wasted potential in the core gameplay of KeeperRL. I'm always trying to find ways to improve it, and the most recent effect was the immigration overhaul. The Alpha23 update will contain more major changes in KeeperRL's gameplay in two major departments: progression and combat mechanics. I'll split this post into two parts, and start with progression, leaving combat for part II. Most games don't make all of their content available right from the start, but instead uncover it piece by piece, such that when playing the game, you feel that you're on a path that's leading somewhere. I think we can define progression as a mechanic that prevents the player from reaching all of the game's content at once. It's pretty obvious that it's a hugely important feature, and it can make or break a game. I came up with the following methods of creating progression in base-building games.
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.
If you would like to continue with your saved game from Alpha21, you can opt-in into the "Alpha21 save compatibility" BETA branch under the game's properties in Library. Make sure to opt-out of the branch to go back to Alpha22 when you're done!
Gameplay changes:
Alpha22 is ready for you to test on Windows, Mac, and Linux. Besides adding support for all platforms, I've fixed a lot of bugs and issues that were reported by testers. Thank you all for helping out! Alpha22 will be officially released soon, so this is the last chance to help with bug hunting. :) You can opt into the testing branch by going into the game's properties in the Steam client, switching to the BETA tab, and choosing the branch 'dev'. Please post any feedback in the comments below or on the community forums.
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 have taken way too long. Nothing is lost though, as the remaining features will make it into Alpha23, and whatever is already done, will be out earlier. So, what's coming in Alpha22? The main feature is the dedicated tutorial mode. I've already written a little bit on what it will look like here and here. The tutorial is almost finished, and I'm taking feedback from testers right now to make sure that it covers as many basics of the game as possible. As you can imagine, having worked on the game for 4 years, I can be prone to overlooking many things. :P There are some other nice features coming along, like the 2-3 times faster saving and loading, smaller save files, portals reworked as dungeon furniture, and fixes in equipment management. These are not huge changes, but as I've written in previous posts, they involved a lot of work under the hood, and have easily taken at least half of development time of this release. The other big features that I promised before, like the endless mode, content additions from the wiki, and key mapping configuration, are going to come in Alpha23, as I've mentioned in the beginning. My plan right now is to finish up the tutorial. In the meantime, many Steam users are already testing the new build, and I've received quite a few bug reports, for which I'm very thankful. Once all the known bugs are fixed, and the tutorial is finished, Alpha22 will be ready. Sounds easy! I'm hopeful that it will happen in early June.
You can now purchase the soundtrack of KeeperRL to listen to through the Steam music player. It includes the classic piano pieces from adventure mode produced by Marcin Brzozowski, as well as the fantasy tracks by Krzysztof Łoza. There are also bonus tracks that are not present in the game. In total over a 100 minutes of music! All proceeds from the DLC will support the two independent artists. Follow this link to buy the soundtrack.
I uploaded a testing build of KeeperRL Alpha22 to Steam. You can opt into the testing branch by going into the game's properties in the Steam client, switching to the BETA tab, and choosing the branch 'dev'. Please post any feedback on the community forums. Below is a rundown of changes to this day. In another post I'll talk about the plans for when Alpha22 is going to be released, and how the new features that I've promised recently will be divided between future updates.
Many changes have happened in KeeperRL land in the last few weeks. Most of them were in the game's internals, so they may not be very interesting to you, but they are important for development. I treat KeeperRL as a very long term project, so I spend a lot of time trying to improve its internal architecture. Badly written code, much like a messy bedroom, decreases your morale, and causes you to trip over things as you're trying to reach your goal. Not to mention bugs!
In this spirit I spent a whole week switching to a new serialization library, which is the backbone of the saving and loading system. The new one, Cereal is more modern than Boost serialization, and easier to use on multiple platforms. As it turned out, it also decreased saving and loading times about two to three times, and reduced save file size almost twice!
This encouraged me to do some cleaning and remove a few obsolete classes from the code. Traps, torches, and portals are now regular Furniture, much like all other static things on the map. This was an opportunity to rework portals a little bit, to make them more useful. From now on they will be constructed by imps, and will not time out. You will use them actively, just like stairs. I think that in such form they will be a great addition to the dungeon. Unfortunately, teaching the AI to use them for pathfinfing is a much bigger deal, so for now they are there only to the advantage of players. But I will revisit this problem later, because having the AI use portals, and be smart about it, would be really, really fun.
As another gameplay change, I deflated the quantities of all resources in the game, except mana. Everything now costs five times less wood, gold, iron, and so on, and you also receive less of everything. The only real effect is on the size of stockpiles that are generated, because every unit of resource in KeeperRL, except mana, exists in the game as an individual item. This used to inflate save file size quite a bit.
Going back to technical stuff, I noticed that switching off Vertical Sync in the window configuration, which ties the game's framerate to the refresh rate the monitor, fixes some severe frame dropping that I experience on the development build of the game. I'm not sure if this has much effect in the real world, but I added the option to switch off V-Sync in the game's settings. I'm also contemplating just switching it off by default. I need to research how other games approach this issue.
Last, but not least, I had some time to work on the tutorial. It's going to take the form of very small, detailed tasks for the player to perform as they build their dungeon. As KeeperRL is fairly complex, there will be a large number of these steps, so it's going to take longer to finish than I expected initially. This is what the tutorial will look like. In addition to giving you instructions, the game also highlights the relevant UI elements for the current task.
It's been a while since I last wrote on the blog, and let's be frank, regular updates are not my strongest point :P . But that doesn't mean that I'm not busy working on your favorite game! Let's start with a short summary of the Alpha21 release. I received a lot of positive comments about the immigration mechanic, which surprised me quite a bit. I thought that it was less important than the free furniture placement in Alpha20, but maybe I underestimated how much the random immigrants were getting on people's nerves :) . In any case, I'm very happy about the feature. Alpha21 was also important because I fixed a few long standing bugs and compatibility issues, and it's also the first version where FPS stays at decent values throughout the game. Working on technical stuff has taken a LOT of my time and energy in the last two years, and it feels really good to have most of it done, especially that it's not really something that I enjoy. There are still things that I would like to fix, like a better saving framework and rendering improvements, for example, but they're mostly optional and don't stand that much in the way of a 1.0 release. After releasing Alpha21 I spent a couple of weeks taking things slow, and planning out the next update. Meanwhile, there has been a great initiative by SoftMonster aka Keeperman to gather player requests for new content on the Wiki. Many of the ideas are very good, and I decided to implement a bunch of them in Alpha22. Here is a list of the ones that I picked, if you are curious. I mostly chose things that are easy to implement and don't modify the gameplay significantly, in other words I went for the 'low hanging fruit'. But I'll keep looking at the request page in the future, so if you have anything on your mind, please add it! Besides new content, the new update will feature a tutorial and key mapping customization. The tutorial will be full blown with a dedicated non-random map, and will teach all the basics of the game from controls to gameplay. The main goal is to keep players from leaving the game within the first hour, which happens a LOT now. I also do that often when I play other games, and I think that a good tutorial can be a tremendous help to keep the player's interest. I'm also curious if any veteran players discover anything new. I've already started working on the tutorial and it's going really well. I'll post some screenshots soon. (I'm not sure though if this is a very interesting topic for players who already know the game :P ). The next blog update will coincide with the 2nd anniversary of KeeperRL's Steam launch, so I'll try to write a bit about my thoughts and experience with Steam EA. A few weeks ago I discovered the chat feature on Steam, and that I can create chat events, and invite players. We already did one, and today at 7pm UTC is another one! To enter you need to the Steam client installed, although you don't need to own the KeeperRL on Steam.
Fixed a common bug that caused the game to crash or go into an infinite autosave loop after opening a chest. PS. Sorry for not appearing in the chat event on Sunday! I'm scheduling another event for tomorrow (Friday) and at the same time setting an alarm on my phone so I don't forget again :-)
KeeperRL Alpha21 is finally here! This update features a new immigration system, which allows the player to accept or reject incoming minions. There is also a new campaign mode aimed to make the game more competitive. Last, but not least, there are female keepers and adventurers!
There is much more! Check out the changelog below for details.
Gameplay changes
You can now help test Alpha21 on Mac and Linux. Please report any issues in the comments below or on the Steam community forum. PS. The official Alpha21 release is very close now!
You can now playtest Alpha21 on Steam! To do this, opt into the dev beta branch in the game's properties in your library. For now only Windows builds are available (both 64 and 32-bit). Please post any feedback in the comments section or in the discussions. The patch will be ready for release once I get rid of all bugs!
The battle for the next release is underway. The new immigration system is mostly finished, and only needs some more playtesting and balancing. It turned out to be quite a beast to implement, even though it doesn't appear very complicated from the player's perspective. But it sure solves a lot of gameplay issues!
A few months ago I promised new gameplay modes, and I'm working on them right now. The main obstacle so far has been the campaign starting screen, which has always been pretty cramped, and now I need to squeeze in some more knobs and dials. From now on it will also be used for single map configuration, which will make it easier to add more settings for that mode.
Unfortunately I have to hold off the release of the endless mode for now, as there are still a few loose ends in terms of gameplay to figure out, and I want to wrap things up as soon as possible, so that Alpha21 can arrive soon. So for now you will only see the addition of a new "campaign" mode, and the current mode being renamed to "free play".
On the bright side, female avatars for Keepers and Adventurers are finally arriving! I also took this opportunity to improve the Adventurer's looks. Here they are:
For now the avatar choice has little effect on gameplay, except that the females are weaker and more dextrous, and the starting spell of male keepers will be "strength". I hope to add more differences here in future updates. Ideas are welcome.
I don't have any estimates yet on when Alpha21 will be out, but I hope to be able to post a testing build for volunteers in a week or two. Or at least as soon as I plow through the remaining list of bugs and features.
Another year of development has passed like a lighting! As promised, here is a short summary of what has been going on in KeeperRL land.
There were only 3 major updates this year, compared to 5 in 2015. On the bright side, they contained big gameplay improvements: campaign mode with retired dungeons controlled by AI, adventurer campaign, free furniture and floor placement, and manual production. They all required tons of architectural changes, which is why the updates took quite long.
In addition, I managed to complete a lof of technical work, like moving graphics and audio from the SFML library to SDL + OpenGL. Besides getting rid of some bugs, it allowed some nice UI improvements, like the pretty mouse cursor, and smoother text scrolling (ready to be released in Alpha21). The framerate has also improved drastically, although optimization is more of a continuous battle, and it's not over yet. :)
At Alpha19 the game started gathering anonymous statistics, which gave me a lot of insight into how people are playing the game. Below is a breakdown of what types of games players choose. It seems that adding the campaign mode was a good idea, although a number of players still like the single map mode.
Note that single map games are not broken down into keeper and adventurer types, due to my oversight in the tracking system.
KeeperRL's difficulty can be read from the percentage of won games. The graph below also shows that over half of keeper mode games are left unfinished, which is a bit worrying. Presumably these are games where the player got bored or was unhappy with his or her dungeon. I'm going to add further tracking to figure out why this is hapenning.
Finally, the chart below, courtesy of Steam, shows how much time players spend in the game. About 25% of players have only played the game for less than an hour, and the median time played is 3h:38m. I'm not happy with these numbers, and they suggest that KeeperRL doesn't have a lot of replay value. Most likely it needs big additions of content. Adding a tutorial should also help with keeping more players engaged with the game.
In terms of sales, 2016 has been good, with around 7000 units sold, compared to 11000 in 2015. The previous year saw the release on Steam Early Access though, so there is no surprise here. What's important is that I have a stable income and can continue working on the game full time without any distractions. :)
Time to talk about plans for 2017 :) . With most major gameplay features more or less finished (and a few more coming in early 2017), I think that I will have quite a lot of extra time to add more content. I don't think that the length of individual games will change much (maybe with the exception of the new endless mode), but I want to add a lot of random events and encounters, which should make invidual games more engaging, and more varied between playthroughs. And I will also add more secrets :) . In other words, the kind of things that make roguelike games very replayable.
I don't think that KeeperRL will leave early access in 2017. Perhaps it will reach something close to a beta stage, after which I'll focus more on polishing the gameplay, bugfixing, visual and audio improvement, etc. But it's a very wild guess, as the project lives its own life, and I've never managed to predict its future as far as a year ahead :) . All I know is that it looks bright, and I can't wait to see what's going to happen.
I wish all the best in the new year to all the fans of my game, and I hope you have loads of fun with KeeperRL, and a little bit with other games, too. :P
In the last week I’ve been mostly busy with adding more functionality to the new immigration system. There is now a nice help screen containing almost all minions that you can get in the game, along with their requirements and other information. You can set to automatically accept or reject specific minions, and you can auto-accept all immigrants (which is almost like going back to the old, random immigration) or turn off the immigration altogether.
I put a lot of effort to adapt the new system to almost all methods of acquiring minions. This means that you will use it to spawn imps, recruit allies, and use pregnant succubi to mutate humanoids and beasts. I’m very happy about it, as some of these mechanics used to be pretty hidden, and the new system makes them much more visible to the player.
There is still a lot of tweaking left regarding the immigration rate, and the choice of which immigrants to present. As I said before, you will mostly be presented immigrants that you can immediately accept, but from time to time there will be one with some extra requirements, and you will have fulfill them in a limited time window. Sometimes an immigrant won’t be shown at all, for example any of the demons before you have built at least one demon shrine.
It’s almost time to leave for the holidays, and I’ll be without my development machine for almost two weeks. I’ll reserve some time to play-test the new features though, and next week I’ll make a post summarizing the development in the last year.
In the last few weeks I've been working more or less in parallel on the new major features (selective immigration, and new game modes). It's definitely not hard stuff, compared to the furniture update in Alpha20, which required redesigning big parts of the game's engine. I've had some struggles though, particularly when trying to design UI for the new features. Below is an early take on the immigration UI.
I also changed the way the game tracks items (I started using reference counting, for all the programmers out there). This allowed a more elegant design of equipment management that fixed a few bugs and quirks. For example I'm finally able to enforce the limits on the number of specific consumables owned by a minion. I could even add a UI for that, although for now it's hard coded: 40 arrows, 6 healing items, and 6 combat consumables per minion.
While I'm at equipment management, I'm planning to add a clever command that combines production scheduling and assigning equipment to minions. In the menu where you order a minion to equip existing items, there will be buttons to schedule various new equipment in the workshops, and automatically assign them to the minion when they are produced. Hopefully this will reduce some of the micro-management that players have complained about.
Since Alpha20 was released 6 weeks ago, a lot of bug reports have arrived (about 15 thousands games have been played out since its release though, so there's no surprise). In particular, there's seems to be a major issue with loading textures on some older video cards that prevents many people from launching the game. Therefore I'm planning a bug fixing update soon that fixes as much as possible.
There is still a lot to do in every corner, and with the holidays coming soon, I optimistically estimate the release of Alpha21 around the end of January.
I've already made several attempts at the immigration system, which defines how you acquire new creatures for your dungeon. In the early versions of KeeperRL, minions were simply purchased for mana. This gave a lot of control to the player, but felt boring and made the game repetitive, as you would normally buy the strongest available creatures. About 2.5 years ago I implemented the current semi-random system, where various dungeon features, mostly rooms, attract different creatures. The randomness is good, but the attraction mechanics are too hidden, and players don't understand why they are getting specific minions ([cough] orc shamans [cough]). This in turn causes players to banish or kill their own unwanted minions, which is totally unnecessary and sad. What's needed is a system that combines randomness with control, and whose inner cogs and levers are not hidden from the player. I claim to have found such a solution :D (jokes aside, this is something that has been suggested by several people). The basic idea is to use the existing attraction rules, but instead of simply spawning the immigrant, give the player the choice of accepting or rejecting them. Thus you have complete control on who ends up in your dungeon, although to some extent your fate is still decided by the RNG gods. There is more though. Since a dedicated UI with accept/reject buttons is required for an incoming minion, it's pretty straightforward to also display all the information on what they are attracted by. This teaches the player how the system works. All the stats of the creature will also be available, to help with the decision. While we're at it, the game will also present creatures whose requirements are not met yet. There will be a timer on every incoming immigrant, so you'll have to make fairly quick decisions on whether to rush to fulfill the requirements, by building that bigger training room, for example. Since obtaining strong minions is one of the main goals of the game, I think this will give a lot of guidance to the players on how to proceed with developing their dungeons. It will also serve as a teaser of what you can get. :P There are some nuances to work through, for example immigrants with unmet requirements should be shown much less often than those that you can recruit right away. (Perhaps the chance of presenting an immigrant should decrease with each unment requirement). And of course I need to create the new immigrant UI, although I'll probably ship a minimal working design in the incoming update, and improve it sometime later. So summarize the new system: control, randomness, transparency, and guidance. I probably need to write that on the wall somewhere. Back to coding!
The dust has settled after releasing Alpha20, and it seems that most players are greatly enjoying the new update. To those that had complaints about some of the new features: I heard you, and even if in the meantime I work on other things, I still remember about the old problems. It may take me some time to come up with solid fixes, though. With this in mind, it’s time to announce the new upcoming features in Alpha21. This time I’m planning more high level changes, mostly involving new game modes. First of all, I’m going to make the campaign mode more competitive by removing most of the settings and limiting retired dungeons to just a few pre-made ones. This will make the runs more comparable between each other, and it will allow meaningful highscores (which will most likely be based only on the number of turns taken to win). The act of winning the game will also regain its meaning. Rest assured that the current campaign mode will stay in the game, it will just be called ‘free play’ from now on. There will actually be more settings (more about them in future posts), and it will be something intended for more advanced players, who want to play the game by their own rules. The only caveat is that there won’t be highscores for this mode. I feel that this is necessary because of the possible abuse of the retired dungeon exchange, and the custom settings. But that’s not all! I’m also introducing a new endless mode! The idea is quite simple: instead of conquering enemy bases, you are raided by creatures of increasing difficulty. The longer you survive, the higher your score. This mode will take place on a campaign-like world map, but only with lesser villains and allies. Visiting them will be optional, and your main activity will be guarding your dungeon. There will be some tweaks and additions to prevent abuse, and to add an ongoing supply of resources. I see it more as an experiment for now, but I think it will be a fun mode. It’s something that quite a few people have requested.
Today is the 3rd anniversary of the release of KeeperRL Alpha1. Enjoy the discount!
I've made some important changes shortly after releasing Alpha20, and instead of waiting till the next major update, I decided to release them under the number 20.1. The update includes some nice gameplay improvements, bugfixes, and major optimizations. The changes have already been rolling out incrementally on Steam. Here's the changelog going back just to the preview released two days. For the full changelog going back to Alpha20, click here. Gameplay
This is a quick follow-up update after Alpha20. It's a "preview" release, and it will be announced officially within a few days. Since it fixes some major issues, I decided to make it available to all Steam players now. This update doesn't brake save compatibility. Gameplay:
I'm pleased to announce that KeeperRL Alpha20 is out! This is a major update in the base-building department, featuring free furniture placement, manual workshop production, and the new steel resource, along with various room and item upgrades.
As always, the update is already available on Steam, Itch.io, and Humble Store. You can also get the free version from here.
Save format has changed since the previous update, so if you'd like to continue playing your old save file, please opt into the old_saves BETA branch in the game's properties in the Steam client. This will download Alpha19 for you. Remember to switch back to Alpha20 later!
Gameplay changes:
You can now playtest Alpha20 on Steam! To do this, opt into the dev beta branch in the game's properties in your library. For now I only uploaded Windows (both 64 and 32-bit) builds. I'm not planning to add any new features before releasing, so if no major problems show up, you can expect Alpha20 to become official within one week. Please let me know of any bugs or other issues! The changes from the last two weeks include:
I'm slowly trying to wrap up this release, and having added a lot of new features, it may take a bit of time. Steelmaking is here, as I described in the previous blog post. The steel furnace is just another manufactory, and requires a minion to attend it. It auto-schedules production based on demand, like the workshop does with traps, although the player can manually order extra steel if they have such need.
It quickly turned out that minions need to be smarter about attending manufactories, otherwise the player would have to micromanage them a lot. A typical example is when minions are forging weapons, and they run out of steel. They switch to the furnace, produce as much as they need, then go back to the forge. To make this automatic, I merged all the crafting tasks into one, and a minion will always try to work at a manufactory that's not idle at the moment. You can still change their choice by drag and dropping them somewhere else, but you can't forbid them to attend a specific manufactory anymore.
This works nicely within the crafting task, but minions still won't switch intelligently from training, studying, etc. to crafting, and vice versa. So when all production is done, they will sit idly at the manufactories. To solve this, I would need to add a priority system, like in Rimworld, for example.
Steelmaking is probably the last major feature that I added to Alpha20. Let's go into the smaller stuff now. I've added wall reinforcing, which mostly makes your dungeon look nicer, improves tile efficiency, and gives use to that extra stone lying around. You can see the new walls in the screenshot above. I've added a dedicated skill for every manufactory, and it affects minions' efficiency there. An orc won't be as good at the workshop as a goblin anymore. There is also a skill that affects mana production.
Something that I needed to do for a long time was fixing the sokoban level generation. It was always taking too long, as the algorithm uses a lot of computing power. The easiest solution was to take it out of the game, run it separately, and add a bunch of pre-generated levels to the game in the form of a data file. So it's technically not random anymore, but there are plenty of levels, and they can actually be harder, because I can run the standalone generator for as a long as I want on my machine.
Generating random sokoban levels is actually a pretty interesting topic, and it seems that there hasn't been much research on it. My current generator isn't very sophisticated, and the levels it spits out are rather easy to solve, so I want to take the time to improve it. If you want to have a look, you can find the its source code here.
I've been also looking for other puzzles to insert into the game in the form of special levels that would leverage existing mechanics (Sokoban and boulders are an excellent example of this). If anyone knows of such puzzles, please let me know.
Every tile where work is performed (workshop, library, training dummy, etc) has a certain efficiency number attached to it, which affects how quickly the work is done by minions. The base efficiency is 100, and it is modified with the use of floors. The three types of floors that I've added so far (wooden, stone and carpet) add 2, 4 and 6 points of efficiency, respectively, to the nine tiles in the closest vicinity. Therefore, a tile's efficiency can grow to 154, if it has the best floor around and underneath. It is also dependent on the amount of light, and it can go down by 50% if you don't place torches in your dungeon.
I'm also planning other floor types that have magical effects on whomever is standing on them, and they will be used as part of dungeon defenses. They are yet to be designed, though.
Another feature that I planned were room upgrades, and I started with adding new types of training dummies. I also used the occasion to modify the experience leveling algorithm. The three types of dummy (wooden, iron, and steel) allow gaining respectively 3, 7, and 12 experience levels. The number is the same for every creature, so both an orc and a legendary humanoid can gain 7 levels on iron dummies. The training speed is now constant, and it takes 300-400 turns to gain a level (the number will be subject to balancing :)).
I'm also going to tone down leveling during combat, as it's hugely overpowered now. I need to figure out some clever algorithm to make it still relevant, though.
The last feature that will go into Alpha20, probably, is a new material: steel. As you know, steel is produced from iron and other elements by the means of metallurgy, and it will be the same in KeeperRL. After researching appropriate technology, and getting enough materials, you will build furnaces that produce steel plates. The amount of resources and time that you'll have to sacrifice to produce a meaningful amount will be large, therefore this will be a late-game advancement.
You'll use the steel plates to create weapons, armor, training dummies, and other nice things. Cool stuff!
I'll also test whether it makes sense to add an analogous method of iron production, such that you'll melt iron ore in furnaces to create iron plates, which will be used for buildings and crafting. It would be a nice way to add even more progression to the game, although I'm not sure if it will work nicely with other systems. Any input will be greatly appreciated.
For now, that's all folks. :)
A few days ago I finished the big refactoring that I wrote about in the previous update, and now it's time to do more fun things. The minion management UI is pretty clunky, so I added a way to change minion tasks by drag-and-dropping them into appropriate rooms. It's much faster!
With this in place, it was easy to add a simple go-to order by dragging a minion, in case you want to quickly explore some area or order them to join a fight, without having to control them. It's more of a convenience feature than full blown RTS-style commanding. For example you can't give this order to an entire team.
With the new manual production there is potential to make minions smarter, for example have them automatically switch to whichever manufactory is producing something, or revert to training or studying. It's still unclear how to reconcile it with manual assignment, and it will probably require larger internal changes, so I'll leave this for a later update.
Right now I'm going to finish the new floor features, like efficiency bonuses, and I'll maybe add a few special "magical" floor types. I haven't decided whether I'm going to prepare a new release next, or keep adding more gameplay changes.
Let's have a quick look at some of the game statistics that the game now gathers. Since Alpha19 was released 44 days ago, 1644 players played 6103 campaign and 1253 single map games. Of the campaign games, there were 3650 keepers and 2453 adventurers.
The above numbers are nice, however it turns out that only 7% of players played 10 or more games, 21% played 5 or more. 42% played only one game (this single playthrough lasted 6500 turns on the average). This confirms that I need to work more on the gameplay, to make it more absorbing, and try to make players come back more often.
Between adding features and making other changes visible to the players, I spend quite a bit of time working on the code architecture in KeeperRL. It pays off given the long term nature of the project, and also because working with well designed code simply makes me a happier programmer. There is a particular bastion of bad design that goes back to the days when KeeperRL was a simple ascii roguelike. All non-moving objects in the game are described by one type of entity, called a square (because each one occupies one square on the grid). There may be only one square at a given position, so when, for example, a chest is placed on a floor, it replaces the floor square. A square is also responsible for tracking any creature that enters its grid cell, and any items that are dropped on it. When I added the dungeon management features, building and digging was as simple as replacing one square with another. Even cutting trees meant replacing a tree with a tree trunk. When I added graphics to the game (about 10 months into development), the squares had to remember what they replaced and draw that as a background, so you could see the grass under a tree (with ascii you don't have this problem, as each position is always rendered as one character). As I was adding features to the game, more logic piled up on top of this design, and it stopped being pretty. The right way to do it was to have another type of entity represent all the objects that can be built, replaced, etc. It would also take care of all interactions between the static object and a creature. The change is not simple though, as a lot of things would be influenced: pathfinding, building, lighting, spreading of fire, etc. On the other hand, there was a solid reason against it: the existing code was already well tested and working. Until a few weeks ago, when I started implementing manual placement of floors. I wanted to allow replacing the floor under an already existing object, like a door, but the existing design couldn't handle it. This was the straw that broke the camel's back, and I went and added the new type of entity, temporarily called "furniture", although it includes other things, like trees, walls, etc. These existing objects and their functionality needed to be translated to "furniture", which caused a chain reaction of other necessary changes deep in the game's internals. The resulting design will be much better, but it will need a lot of testing before it's released to the public. Anyway, this is what I've been doing in the past week. It's just an example of what I work on, when I'm not adding new features. If some updates seem to take too long, it's because I have to embark on this kind of adventures. :)
The first feature that went into the next update is manual control over workshop production. The randomness in the previous versions was temporary, although it took me a while to get to that :P. Items also have their cost now, and the economy will be modified to accommodate that fact: resources will be more plentiful, but they will take longer to extract. I'll also have to change imp AI so that they don't get stuck mining when there are more important things to do.
The new system is pretty smart: traps are auto-scheduled for production as you place them in the dungeon. Minions will also look for something to do in other workshops if the queue in their current workshop is empty.
You can also notice another change in the screenshot above. Floors and various furniture have been discoupled, so you'll have much more freedom in designing your dungeon. All the furniture, like book shelves, training dummies and workshop tables will block creature movement from now on. The various types of floors might influence things like efficiency, minion attraction, combat, etc. (I still have to design that part). Rooms will be upgradeable.
It might also be time to let the player reinforce dungeon walls and make the prettier.
I'm planning to add one more gameplay feature, which I will discuss in the next blog update. Besides that, I won't try to stuff much more into Alpha 20. I think just polishing and balancing the new features will take enough time. There are also a few things from the campaign updates that need fixing, like travel constraints.
Now that Alpha19 is out, fixing many technical and other issues introduced earlier, a lot of weight is off my chest . Players seem to enjoy the Adventurer campaign greatly. So far 782 Adventurers have been played, compared to 838 Keepers. The total number of turns spent by Adventurers is only 886 thousand compared to 5.4 million in Keeper mode, but that was expected as the games are much shorter. Big thanks to everyone who agreed to sending game statistics, I promise not to target any ads based on your sadistic deeds in the game.
KeeperRL Alpha19 has finally arrived! This update, among many small features and fixes, allows adventurers to play in the campaign. This makes the adventure mode much more attractive, as you can now visit allies, buy from shops and level up on smaller enemies before tackling the dangerous guys. See the changelog below for all the changes.
Changelog:
I've been fixing a LOT of things in the last two weeks, and there are still more to work on, hence Alpha19 will be delayed a little bit. The previous versions were a bit too unstable, so I think it's a good idea to take some more time and clean things up. Plus I'm in the process of moving to a new country, so I'll have to spend some time packing and unpacking those boxes. :)
One serious bug that I'm pretty ashamed of concerned autosaves. By principle there should always be a recent autosave that can be used to recover the game after a crash (unless it's a new game). Because KeeperRL is a perma-death game, it deleted save files after they were loaded. Which included autosaves. So if the game crashed within 1500 turns of loading, it was completely lost. In the fix, regular save files are renamed to autosave files after being loaded, and files are only deleted after the game ends (when you win, lose or abandon it). This makes cheating a little bit easier, but it's a better alternative than players loosing their progress.
I spent a few days optimizing the rendering code, which brought about a 50% increase in frame rate in the early game. Later in the game other things take more of the CPU, so the improvement gets smaller. I'm planning to optimize gameplay code too, though, so hopefully everything will get faster.
I've fixed lots of other bugs, including one that was almost a year old. On top of this, I'm still replacing parts of the code related to the recent move to SDL2. I've had to implement my own audio library on top of OpenAL and Vorbis, because anything I could find didn't work well enough. This is definitely a downside of not working with a game engine like Unity or Unreal. But when I'm finally done with this s**t, imagine all of that steam going into gameplay improvements. :)
Right now I predict that Alpha19 will come out in about two weeks.
An early Alpha19 build is available for testing on Steam on the 'dev' branch. It's fairly complete in terms of gameplay features, but it still needs some bug fixing and optimizations. One of the non-gameplay changes in this update is to switch back to the single-threaded mode. It used to be just an option, and by default the rendering loop ran on a separate thread. The main purpose was to have a more responsive UI in case the gameplay loop lagged. In addition, it generally increased FPS, but not by much (less than 25%). The problem was that it wasn't very well designed, and there were some subtle bugs. There were also problems with very low FPS on some multi-core systems. I decided to go back to a single thread for simplicity. The code needs to be more optimized anyway. With proper optimizations, a single core shouldn't have any trouble with handling both rendering and gameplay. With this in mind, I'm going to spend the next week or two optimizing the hell out of every line of code. (or to be more precise, rewriting entire badly optimized chunks of code) :) As a bonus for this week, I compiled a list of the most deadly enemies in KeeperRL. Keeper games:
The basic parts of adventurer campaign are done. It's not much different from the keeper campaign, except that you don't build a base, and some enemies are turned into allies and vice-versa. The retired keepers are still hostile, of course. The influence zone works identically, but you start the game on one of the existing locations (it can be both hostile or allied).
The big benefit of this mode, compared to the single map adventure, is that you can build up your character in various locations before you engage with your main enemies. The allied settlements like the castle and dwarf cave have shops where you can buy equipment. I'm also planning to add some generic dungeons specifically to the adventure mode to turn it into more of an rpg experience.
There still isn't nearly as much progression in the game as I'd like of course. Ideally, there would be various strategies to progress your adventurer, and the characters would be very differentiated by the end of the game. At this point, we could think about uploading retired adventurers to spawn them as enemies in keeper games.
Another thing that I want to add in later updates is getting companions by hiring and other ways.
I've finished the mechanism of uploading game statistics. I think they will be extremely useful. I'll get info about what game modes are being played and how long individual playthroughs are. This will give me good data on whether we can remove the single map mode from the game (I won't remove it if a lot of people keep playing it). All the data will be anonymous, of course, and there will be a description of what exactly is being sent, and you'll be able to turn it off.
I've also implemented message boards. As I've already mentioned, they can be built by keepers and anyone passing by can write anything on them. The messages are stored on the server and are automatically updated.
I'm planning to upload a build to the testing branch on Steam in the coming week. My current estimate for release date is early July.
Porting to SDL took about a week. A little bit more than I thought, because it turned out that text rendering and audio playback are a bit lacking (actually, they are not part of the core library, and of much lower quality). So I had to search for replacement libraries. They seem to work well, but I still need to test them on platforms other than Linux. I sincerely hope that the game gets more stable after the whole ordeal of moving away from SFML.
After the last three weeks of refactoring and platform stuff, I finally had some time for gameplay changes! I added wildlife to the maps. So far: deer, foxes and boars. Their simple AI tries to run away from everything else and attack only when adjacent to another creature. Other creatures normally don't chase nor attack wildlife.
I also added some extra settlements to maps. They don't take much part in the game except just being there and adding variety. For now they are: human, elven and lizardman cottages, and dwarf and kobold caves. Besides the usual civilians, they now also have a small number of guards. I want to add a lot more content like that (and also some surprises and mysteries), but probably not all of it in this release.
Finally, I worked a bit on sending game event statistics to the server. It was already used in the last update for stats on retired dungeons, but it was somewhat broken. This time it should be more reliable and I will get richer data. It will super useful to have when working on gameplay, and also to know about any problems that might happening in the game. The statistics are of course completely anonymous, and you'll be able to opt-out in the settings. I'll also display text with all the details, so you'll know exactly what is being gathered.
I'll talk soon about more gameplay changes. At the moment I predict Alpha19 to come out in the beginning of July.
I always try to make bigger code changes right after releasing a new version, so they get tested as much as possible before seeing the light of the day. This time the first task was to factor out creature body simulation out of other creature logic (like movement and other interactions). It was partly to have cleaner code, and partly to introduce new features. In essence, all the code to simulate the body, like keeping track of body parts, health and attributes like size, weight, applying damage, etc. is now self contained and independent of other calculations. This breaks ground for more detailed features, like new body materials, different damage models or attack types. Before, they had to be implemented as special cases, so it’s a nice step forward. After working on bodies, I dove in to decrease memory consumption of the game. Alpha18 typically uses a bit over 1gb of RAM for the maximum campaign settings, but there is also a rapid increase during saving the game (up to 500mb). Most of the memory is used for storing the terrain, as there are about half a million squares altogether in all of the maps. I used some tricks to have much of the terrain objects share the same memory, so for example, if there are a thousand trees on a map, they are all actually represented by the same object. If you make any change to a square, for example burn a tree or drop an item, the game creates a separate copy of that square to be to modify it. Memory usage was this way reduced by half. I have further plans for another 50% decrease, which will give some room to increase map numbers in campaign. Lastly, I started to port KeeperRL to SDL, which is the standard library in the game industry used for graphics, sound and other things. It should let me get rid of a few annoying bugs, and add some minor features, like a custom mouse cursor and more detailed minimap. Last time I promised another hotfix update to Alpha18, but I decided to rush with releasing Alpha19 instead, as it’s not a huge update, and have most of the (known) bugs fixed there. I hope that 2-3 weeks will be enough to wrap it up.
It's been more than two weeks since the last alpha release, so it's time for a short summary, followed by general plans for Alpha19. Let's start with bugs :). This release was especially prone to them. The first type are bugs caused by changes in game logic to accommodate the campaign mode. Those are usually simple to figure out (as they exist purely in my own code). Most involved breaking something in the single map mode, which I didn't test enough before releasing. I hope to have the majority of them fixed in the next "hotfix" update in the following week. The other type of bugs were caused by porting the game to the Microsoft Visual Studio compiler. One does not simply copy sixty thousand lines of code into software developed by Microsoft and expect everything to work :D. There is one nasty bug that crashes the game during saving (or perhaps only while autosaving). The nastiness comes from the fact that it doesn't get reported, i.e. it crashes the program so badly that reporting also goes down. All my knowledge about it comes from anecdotal reports from players, which is a very bad situation. I suspect it might have to do with high RAM usage by the game. I'll work on improving this in Alpha19. Meanwhile, I hope to get more data on the crash. If it has happened to you, I'll be very grateful for an email or a post on the forums with your system specs (especially RAM), details on the game you were playing (whether single map or campaign, number of villains in the campaign, etc), and if it has happened to you just once or more frequently. There are also a few low level bugs, mostly concerning the graphics and multimedia library SFML, which I'm planning the replace with SDL soon (which will replace current bugs with new ones, hopefully fewer :P). They usually manifest themselves by the game not starting at all or by weird crashes not connected to gameplay. There are also missing dll errors caused strictly by the port to the Microsoft compiler. I think I've done everything correctly to resolve them, but some players still have problems running the game, so I'll have to spend some more time on this. The feedback about the campaign mode was very positive, which makes me very happy. I think it adds a lot of freshness to the game, and breaks the routine of the old single map gameplay. I hope to continue this trend with future updates, watch out for big announcements soon :). Alpha19 will feature various small gameplay improvements, mostly involving the campaign mode. Among them, adventurers will be able to roam the campaign and fight multiple keeper dungeons. Maps will be filled with extra content, besides the main occupant. On your home map you will find minor enemies and some surprises. Keepers will be able to place notice boards on their maps, where passersby will be allowed to add notes. The notes will be stored on the server, so the boards will function as primitive, medieval chat rooms. :) More details on Alpha19 coming soon.
Note: retiring in single map mode is currently broken, I'm working on a fix. For now I recommend just saving your game and not retiring until I fix this.
The "campaign" update is finally out! For those of you who haven't followed the development, campaign is a new game mode that takes place in an overworld, divided into a grid of smaller maps. The player builds his or her base on one single map throughout the whole game, but can travel to other maps to attack villains. Those villains may also include retired dungeons made by other players. Thus we now have Keeper vs Keeper battles! Games have gotten longer this way, and have much more replay value. The classic "single map" mode is still included, although it will be subject to changes in the future. Check out the video and changelog below for more details. https://www.youtube.com/watch?v=j402fYUtWcw Save file format has been changed, so If you'd like to keep playing your saved games from Alpha17, you have to go into the game's properties in the Steam client, and choose BETA branch "old_saves". The Steam client will then download the Alpha17 version for you (don't forget to change back to Alpha18 later!) Unfortunately, due to a bug in an external library, sound effects are still disabled on Mac, sorry. :(
Alpha18 is almost ready to be released. There are still some bugs that need fixing, and I want to make a few more minor content additions. When it comes to gameplay, I'm really happy with how this update has shaped. Keeper vs Keeper wars are really fun, and there is a lot more challenge to the game than previously. Players who complained that it was too easy, will now have a huge number of retired dungeons to fight against. And knowing you, I'm sure some of them will ridiculously hard. :)
Following up on the previous news, I ended up implementing my own error reporting. Just like in the case of Steam's reporting, the game generates a memory dump file when it crashes. The launching script then compresses and uploads it to my server. The dumps take much longer to analyze than the previous text reports that arrived to my email, but contain a lot more useful information, and I can't wait to get my hands on some of the ancient, mysterious bugs.
A few of you have been bravely testing the update on Steam, and I want to thank you for that. Introducing the campaign mode required a lot of changes in the game's engine, so it's important for me to weed out as many bugs as possible before releasing.
P.S. Speaking of bugs, I think I accidentally created a new religion...
All brave souls are invited to help with testing of Alpha18! Please keep in mind that it's a pretty unstable build for now, and frequent crashes are expected. To help you a little bit, the game won't delete save files upon loading them, and retiring your dungeon is possible at any point in the game. Obviously the hottest feature of the update is fighting against retired Keeper dungeons. Note: sharing retired campaign dungeons via keeperrl.com isn't working yet. The campaign setup is a bit cryptic at the moment, but I'll add some help text soon. Please report any encountered bugs and crashes (I will also be getting much more detailed crash reports from this build, but reports from you about the circumstances of the crash are always welcome). To enable testing of Alpha18, go into the game's properties in the Steam client, choose the BETA tab, and choose "dev" from the dropdown list.
Things keep getting delayed unfortunately, although I'm still planning to release Alpha18 at the end of April or very early May. I was hoping that hooking up crash reporting through the Steam API would be easy, but I just can't get it to work. I might have to use a back up plan in the form of the Google Breakpad library or my own, old crash reporting scripts. It's something I need to get done before I can roll out a testing build to Steam. Last week I added a slightly unrelated feature. Minable resources aren't spawned at world generation anymore, you have to discover them by researching geology (to be fair, the game actually only spawns them at that point). The are currently three levels of the tech, and maxing them out, which will give you large amounts of iron and gold, will require a significant mana investment. Overall, I think it will add some needed balance to the game, and the ores can be generated around your base in a convenient way. Also, it will help me add more ore types later on, which has to do with a major gameplay feature that I'll announce soon. The campaign mode is mostly under control. Before writing this, I've been at war with Alderyk the Keeper, whom I had retired just an hour earlier. The last major fix I had to add involved stopping undead from traveling and, as a consequence, killing themselves during daytime. I still need to do some balancing, and fill the maps with more content, but that's easy and pleasant stuff compared to my chores discussed in the first paragraph!
I was finally invited on the legendary Roguelike Radio! The podcast features Mark Johnson of UltimaRatioRegum, DarkGod of Tales of Maj'Eyal and me of KeeperRL :). We had a 40-minute chat about the game. Go and listen to it now :) http://www.roguelikeradio.com/2016/04/episode-120-keeperrl.html
In the past week I've been working on lots and lots of little fixes, hence this update is a little late - there wasn't much to write about. It's good news, because this is typical for the late stage of an update.
The campaign setup window is shaping nicely. Artur is working on new assets, so it will look even better. The functionality is almost there. One big feature to add is downloading maps from the server, but for this I will reuse existing code, so it should be pretty straightforward.
The main campaign gameplay is basically ready. I left out some features to finish after the release, these involve some travelling and attack nuances. It will be easier for me after I get some feedback from you. And I also want this update to be out as soon as possible, because frankly, it's really exciting stuff. :D
After I'm done with map downloading, I'll concentrate on putting out a build on the 'dev' branch on Steam, so the brave souls can test it already. Maybe by the end of the next week?
Fixed a crash introduced in yesterdays hotfix, involving removing members from team. Fixed missing exe in Windows 32-bit build.
Note: this update is independent of my work on Alpha18, it fixes a few major issues in Alpha17.
Retiring in campaign mode proved very tricky. We need to save only a slice of the game - the relevant site that contains the player's base, and discard everything else. The saved site is then downloaded by other players, and loaded somewhere onto the map grid in their campaign.
The problem is that various game entities keep references to each other, for example a creature remembers the enemy that it was chasing, or a shopkeeper keeps a list of his items. The saving algorithm traverses this graph in a recursive manner and writes to disk whatever it stumbles upon. If it follows a reference that crosses to another site (for example if you stole an item from a shop, and traveled somewhere else), it ends up saving the other site too.
We definitely don't want that to happen, as the save files would possibly grow very big, and contain a lot of useless information. So the game just crashes when it's about to do that. :) I spent a big portion of the last two weeks examining these crashes and modifying the troublesome references such that they don't point to other sites.
Speaking of crashes, I recently made another dive into the crash reports that piled up since Alpha17 was released. I use an open source library to print out stack traces of crashes, and a simple batch file to send them to my email. The reports provide hints at what caused the crash, but finding the actual bug is a detective's work. In the last four months I received 669 crash reports (compare it to 17700 runs that ended with a highscore, which means that about 3-4% of all games ended with a crash). I managed to figure out a few of the most common ones, and I'm planning a "hot" fix to Alpha 17 in a couple of days.
Nevertheless, the crash situation should improve very soon, as I've made good progress in porting KeeperRL to Microsoft's Visual Studio. Among other things, it will provide much richer crash reports that are also automatically gathered and processed by Steam. This will definitely help keep the game much more stable!
I went ahead and added retiring in campaign mode. A retired base can be loaded as an enemy. It required a lot of code gymnastics, but we can finally have Keeper vs Keeper battles. :) I'll need to hook it up to the map sharing service, and implement some kind of rating or comment system, so that you don't have to download insanely hard bases or ones with dicks carved out from the mountain. :)
In the future I'd like to tie this to the accounts on the homepage, so you could see how your retired bases fare against attacking players.
I also experimented with areas of influence that I described last week, and they morphed into a simple progression system of the campaign. At any given moment, interaction is limited to the three closest enemy sites. If there are ties, then all tied sites are included. Any allied sites that happen to be inside that circle are also included.
The highlighted sites are ones that you can interact with. Red - enemies and green - allies.
As you conquer your enemies, the interaction circle expands. It's your job to make good choices on where to embark and who to attack and in what order. I hope that it will add a nice strategic layer to the game.
At this point the biggest building blocks of this update are placed, and I'm left with implementing or fixing a lot of little details to make all of this work nice and smoothly. I estimate the update to roll out at the end of April.
I spent most of the week fixing various parts of the game that stopped working after the introduction of multiple sites. Since every site has its own local clock, in addition to the global game clock, I had to go through all the game mechanics that work with time and decide whether they should use the local or global clock. There were also problems with portals, summoned creatures, immigration, recruitment and more. I'm trying to keep everything simple and not introduce a lot of special cases in the code, but it's not easy :) (but then, developing this game has rarely been easy :) ). I realized that free movement in the overworld map isn't very interesting. Choosing the base location also lacks any consequences. As things stand, there is no reason at all for the world to be set up as a grid. This needs to change. I decided to introduce the concept of "area of influence". This will be a set of sites on the world grid where the player is allowed to travel and attack, and only these sites will ever attack the player. Conquering enemies will enlarge the area, and will activate more enemies and allies, where one can trade or recruit. Hopefully this will create some interesting decisions, including where to locate the base. I'm still torn whether or not to add fog of war to the world map to initially hide some areas. This would obviously add a surprise element, but on on the other hand I want to give the players control over what enemies they'll face. Especially when they download retired bases from the cloud. You never know what's in there.
Last week I had coded the generation of the campaign grid, individual maps and their inhabitants. The next step was implementing the various ways in which the creatures interact between maps.
The most obvious is allowing a player-controlled creature to travel around, optionally followed by team of minions. Movement is completely free: you can choose any site on the world map, and the game puts you and your team on the edge of that map. As I explained earlier, at this moment the clock on this map starts ticking, and whichever site you came from is frozen.
If you let go of control of the team, they automatically travel back to your base, and you can continue building. If the creature that you are controlling is killed, you have the option of controlling another minion or letting go of control. You can also switch control to a different team member at any time in control mode.
Your enemies can also attack you, and the timing of the attacks stays the same as in the single map mode. The attacking team is transferred to the edge of your home site and starts doing whatever their AI tells them to (like stealing your gold or eating your orcs). If the attackers decide to flee, they will walk back to the edge of the map and travel to their base. It gets tricky if you aren't present in your base at the time of the attack. I haven't coded this yet, but when you come back, you have to deal with the attack before the team you were controlling is placed back on the map. It also seems that you shouldn't be allowed to leave your map during an ongoing attack.
There are some corner cases showing up, like when a player-controlled creature falls asleep on an enemy site, and gets stuck. I think that in such situations the clock needs to keep ticking, until they wake up and travel back. This will also be needed when an immigrant is spawned or so that a returning team can walk to their beds and heal up.
This all sounds pretty complex, but my aim is that the traveling and clock system is mostly transparent for the player, i.e. you don't need any understanding of how things are working to play the game. Ideally, the player won't notice much that the clocks keep getting paused on the various maps.
I've been told that I post too few updates. So here is a new update :) . I'll try to post at least once a week from now on. The campaign mode is probably the biggest single feature that I'm adding since the game's first release. In terms of code architecture, it's quite like running multiple game worlds concurrently with the option of transferring creatures around. They are arranged in an array and form the "overworld". The most important functionality is of course slicing up the array, uploading individual chunks to the cloud, and reconnecting them on other players' computers. A few changes were needed in the game's core to accommodate this, and I'm sure that new bugs have been spawned. The good news is that the game's performance will actually increase, because only one chunk is being simulated at a given time (the one containing the player). Other chunks are kept in memory, but are frozen. Since the chunks are about 1/4 of the size of current maps, they only occupy less than 200MB of memory each. If we stay within the limit of 5-8 main enemies per world, we are good without the need of offloading the maps to disk. (Chunks where no enemy exists are not even created). The main reason for the "freezing" of chunks is that each one has a separate clock. Creatures thus need to change "time zones" when transferring between chunks. When a minion you are controlling is away from home, the clock at your base doesn't tick. I think that's good. There is also a global clock that dictates day and night changes. I'm on track to make all of this work. I'll let you know when the first historical duel of Keeper vs. Keeper takes place :) . Basic campaign setup UI
[ 6084 ]
[ 668 ]
[ 4036 ]