Official development blog

2018 7DRL Postmortem, Part 4: Finishing Touches

Picking up where we left off at the end of Part 3, an in-depth look at the map generation and content work

The Last Minute

With all my planned balance time eaten up by adding content, there wasn’t much left for… “proper” balance. There was nowhere near enough time to do all the math required, and while I would have loved to write all-new content from scratch and use formulas to balance it well for the new format, this is a 7DRL--plans need to be semi-realistic :P

That said, I’m kinda impressed/relieved with how well it turned out because there was only just enough time for some emergency band-aids, and into the final hours I was still making pretty huge improvements. It’s not nearly Cogmind level of balance, but from a couple quick playthroughs I did identify the biggest issues and what was needed to quickly resolve them.

Aside from repeatedly dropping the number of robots (early counts were way too high!), I added lots of weapons across the board, basically hacking them into the normal item distribution system by forcing a minimum 15% of all individual items to spawn as weapons. This is not normally how item distribution works, but after repeatedly running out of weapons during my test runs I used Cogmind’s item distribution debug output system to examine the normal likelihood of having weapons spawn and noticed that the numbers were surprisingly low on most floors.


Final (post-balance) distribution of items, both common and prototypes, by slot/type on each floor.

In the same way I enforced a minimum weapon count, every floor is also guaranteed to contain launchers (more on larger floors), because launchers are FUN and I wanted the 7DRL to be FUN :D. Besides, in POLYBOT-7 players may not always have free slots to pick up the items they find/want (and remember there’s no inventory space whatsoever!), so even with a lot of fun stuff lying around, not all of it will actually be used, meaning there’s more leeway to add plenty of it without making the game too easy.

More weapons and other good items were also added in the form of guaranteed prefabs, specifically “weapon rooms” and so-called “build rooms.” These are rooms that contain caches of out-of-depth parts, the former purely weapons (again to make sure there were enough to play with) and the latter having a balanced variety of items across the slot spectrum such that players who find these rooms could essentially purge right there to get a decent fresh build. “Build rooms” are guaranteed to have a power source along with some propulsion, utilities, and weapons.


Special prefab rooms, labeled. Also notice how these rooms often have double doors so they’re easily recognizable from the outside.

In hindsight I overdid the weapons (they’re now all over the place :P), but more choices always has its advantages so may as well overdo it rather than risk underdoing it! Reaching the perfect balance there would’ve taken much longer than the time available. I was doing all this in the final hours, after all xD

One of the core mechanics was also changed at the last minute: the purge timer. At first it seemed like siphoning off a portion of the player’s energy each turn to charge it would be strategically more interesting. This behavior would add another important consideration to any decision to purge, since the action would be followed by reduced energy production until fully charged again. But I realized this wasn’t very desirable in the bigger picture, since purging already destroys random parts and can lead players into an uncertain situation, so there’s no reason to kick them while they’re potentially down! Instead I changed it to a simple 100-turn timer--more predictable, and also more fun.


Purge timer in action. Counting down and repeatedly attaching remaining nearby items only to purge again.

At the very very last minute I was testing the game out real quick and spotted some important QoL that was missing from the UI: the number of newly collected slots from the current floor (since there is a guaranteed number and these are a vital improvement to seek out), and even the actual letter of the current floor! Both of these are useful for assessing progress, and there was almost not quite enough room but I squeezed them in next to the turn counter.


Last-minute HUD additions: slots collected and floor ID! (Instead of numbers floors have corresponding letters: A/B/C/D/S)

Aside from their usefulness to the player, HUD indicators like this also make screenshots a lot more informative when players are sharing them, avoiding too many basic questions and giving discussions more context to work with. This is one of many advantages to Cogmind’s “pretty much everything you need to know is visible on one screen” UI style, in addition to making it easier to get up to speed when continuing an unfinished run from a previous session.

The End

Although I’d finished on time in my time zone, I was working with Kacper and he needed the rest of his Sunday to finish the tileset, so I didn’t submit until the next morning after I had a chance to wake up and package his tiles with the game.

It was finally finished!

Even though I was working on this project pretty much non-stop all week, it was a surprisingly refreshing week during which I didn’t feel like I was on the clock for once. It’s been such a long time since I did any development aside from my full-time work on Cogmind that I’d forgotten the excitement of pure development from my hobbyist days. With a commercial project everything has to be documented, polished, and hopefully built to careful futureproof specifications, whereas with POLYBOT-7 I could just let the work flow. Such a free-form “full speed ahead” approach was hard to get used to at first, but it sure felt way more productive :D

Shortly after release it was reported that you could still access the Garrison hacking interface by clicking on a Dispatcher xD. I’d removed the bump-to-hack interaction, but forgot that clicking on them is handled in a separate part of the code! Amusingly this meant players could hack open a Dispatcher, which created stairs to an oddly named floor, “G” (taking the first letter of “Garrison”), and it was technically a legitimate link to a garrison map but I had removed all the garrison data so attempting to enter would simply crash the game. I put out a fixed version real quick to avoid people walking into a black hole (not to mention the hacking interface wasn’t redesigned for POLYBOT-7 anyway).


Bug-enabled hacking interface opening a theoretical exit into a Dispatcher.

Speaking of bugs, throughout development I discovered a number of them in Cogmind, and even the engine itself. Nothing major, but it’s nice to have been able to clean those out, too.

I find the POLYBOT-7 concept super interesting overall, but the 7DRL only really takes a quick peek at its potential. One of the ideas that could greatly improve the fun factor, given more work, is “kit rooms.” These would basically be rooms containing all the parts needed for an excellent build balanced around a particular style or weapon(s), making it likely players will want to purge on finding them to instantly turn into a killing machine. Actually the “build rooms” added at the last minute were a simple implementation of the kit room concept, but with completely randomized parts so not necessarily all that balanced. Unlike build rooms, however, kit rooms would be hidden behind secret doors, requiring scanners or lucky collateral damage to uncover. There is technically one kit room in the game, which I quickly threw together for the last floor. It’s pretty cool if you can find it ;)


A good number of Cogmind players have picked up the game and are enjoying it. I heard from one even mentioning that it helped them understand Cogmind better! And it seems even non-Cogmind players have been finding it fun.

In the first 8 days so far since release there have been 437 runs (not individual players, which is somewhat less than this) and… 882 downloads. Apparently a lot of people download to consider playing later when they have a chance. (I know there were some people who downloaded multiple times because I updated, but not quite 2~3 times per person :P) It would be fun to compile the stats and leaderboards like I do for Cogmind, but I’ve really got to focus on the latter for now!

Although not a demo, the similarities are enough that it can serve as a sort of advertisement for Cogmind, especially as a way to get my name on, a platform I hadn’t used before. (At the same time POYLBOT-7’s connection with Cogmind is an indirect way to get the latter on It topped the Strategy category by popularity, also reaching #1 in most of the tags I set, e.g. “pixel art,” “turn-based,” and… “roguelike” :). It was popular enough to rank in the top 20 games on (which had just passed the 100,000-game mark at this point), and starting a day later they even featured it on their front page :)


POLYBOT-7 featured on front page.

Popularity is basically just page hits, of course, so it helped that I posted announcements on a number of sites, plus Nookrium, a decent-sized Let’s Player who has tried out my other games, gave P7 a shot as well on day 1.

I’ve kept an eye on Cogmind sales and there’s been no significant impact there, but wishlisting on Steam is up 29.4% comparing the week before and after the 7DRL release ($20 is a bit more expensive than free, plus it’s “Early Access” :P).

Anyway, I’ll probably just do one more release that fixes a couple tiny issues, then shelve it until another time when maybe I can revisit it for some extra polish. I’m thinking I should take on a smaller project after Cogmind, and POLYBOT-7 already seems like a fun possibility to develop in a serious capacity for 6 months…

This entry was posted in Dev Series: 7DRL Postmortem and tagged , , , , , . Bookmark the permalink. Trackbacks are closed, but you can post a comment.

Post a Comment

Your email is never published nor shared. Only the anti-spam entry is required. See here for the privacy policy.

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>