Dec, 31
Happy 2025!

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.

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. I’ll 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!


COMMENTS

Home Forums Happy 2025!

  • You must be logged in to reply to this topic.

 LATEST NEWS

Dec, 31

Happy 2025!

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... more

Dec, 19

KeeperRL 1.1.9 – Christmas Update

Hi everyone,I wanted to leave you all with a little Christmas gift before the holidays. This year KeeperRL finally went 1.0 and you’ve all shown such incredible support for... more

Nov, 08

Patch notes for versions 1.1.1-1.1.6

1.1.1 Golden prayer bench training limit is increased to 99.Added missing church tech descriptions.Fixed courtesan and gigolo minions not appearing in the minions... more

Oct, 22

KeeperRL 1.1 “Black Mass” update is here!

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,... more

Jun, 26

Announcing my collaboration with Elda Entertainment on KeeperRL

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... more

 

 PLAYERS SAID

There are no other games out there like KeeperRL. The game is a unique mixture of management, levelling, crafting, constructing, exploring, adventure etc. […] The possibility of interacting with other’s players monumental dungeons turn KeeperRL into one of the most promising games I’ve found.

dbvel

This game is amazing! It’s challenging, fun, unique, and exactly what you might expect it to be. For an early access game it’s incredible. And the thought that there’s more to come thrills me! I can’t wait to see how this awesome game will develop even more.

Avarti

Any time I touch another race, I get bent over like a cheap, overworked sex worker. I love sucking at this game so much.

DaavPuke