Category Archives: Devlogs


I’m writing this on January 31, twenty-eight months since I penned the inaugural entry in this dev blog. Gunmetal Arcadia launches in a week! This is probably the last blog post I’m ever gonna write anywhere ever yaaayy!! :D

As I mentioned in my last post at the start of this month, my goal was to have the game 99% done by the start of the year, with only non-gameplay elements like cutscenes and soundtrack left. I knocked all of those out in the first two weeks, with the goal of having my first release candidate (“RC0”) locked down by mid-month.

As often happens, the soundtrack coalesced at the last possible minute, but I’m pretty happy with it. As I indicated previously, I’m reusing nearly all the music from Zero in Gunmetal Arcadia, and I’ve added the same amount of music on top of that, which has given me a ton of material to pick from at runtime. In fact, each type of room (Vanguard outposts, Seeker outposts, shops, challenge rooms, etc.) gets its own unique music in each level of Gunmetal Arcadia.

You can find the Gunmetal Arcadia soundtrack on Bandcamp here:

Then I took a week off.

In this case, “a week off” meant “building a framework for an editor for NextGame,” so that was fun. Learning C# and expanding the scope of my tools has been a huge part of making Super Win the Game and both Gunmetal Arcadias a reality, so I’m trying to make it a point to not cut any corners there. That means supporting undo/redo for everything, as opposed to only some things (YHtWtG) or nothing at all (Super Win, Gunmetal Arcadia).

My expectation was that I’d come back after a week, play through the game again, find some new bugs or polish issues that absolutely demanded my attention, get those fixed, and repeat until launch day. As it turned out, I’m happy with the build as it is. There are one or two minor things I might address post-launch, but otherwise, I think RC0 might actually be my shipping build and not the known-bad first-pancake-off-the-griddle that it usually is. So that’s interesting.

Unrelated to anything, it’s been a secret goal of mine to hit one hundred thousand words on this blog before shipping, and I just did in that last paragraph. I guess I can stop now.

Buy Gunmetal Arcadia! Available February 7, 2017, for Windows, Mac, and Linux! 👍

Status Report

Happy New Year! It’s been a month since my last blog, so now feels like a good time for an update on the state of Gunmetal Arcadia.

My goal, as I’ve stated several times over the last few months, was to author all the legacy event/reward pairs in December. But beyond that, I was really hoping to have the entire game (minus some superficial content) done by the end of the year, and it pretty much is. It’s not shippable yet; there are still no intro and ending cutscenes, and I’ve only finished a small handful of new pieces of music, but the core gameplay is, for all intents and purposes, done. I’ll probably continue to tune and balance all the way to launch and beyond, but I don’t anticipate adding any more content.

As it’s turned out, legacy events and rewards have only been a part of my workload this month. I’ve also spent a while playing through the game, capturing footage for a trailer, recording data on each playthrough, and getting a subjective sense of the feel of balance. I’ve also fixed an embarrassing number of longstanding bugs and polish issues that I’d been sitting on for way too long.

There’s just over five weeks until the game launches, so this month is going to be…interesting. My highest priority tasks (assuming they aren’t already done by the time this blog goes up) will be to get all the requisite storefront assets together: cover art, screenshots, and a trailer. (Update: These are all done now and some of the storefronts have gone up already.)

Next up is that “superficial” stuff I mentioned earlier: cutscenes and music. I don’t yet know whether there will be multiple endings; it sort of depends on how long it takes me to get back into the rhythm of drawing art for cutscenes and whether there’s enough interesting conditions to warrant more than one. I’ve also been wanting some sort of end-of-game status report between the cutscene and the credits roll, where legacy events from the preceding mission would be detailed. (Currently, the only way to view the results of the previous mission is to start another, which can be frustrating if you’re not intending to immediately replay the game.)

Assuming I can knock cutscenes and any other ending-related materials out quickly, I’ll hopefully have a couple weeks to focus exclusively on music. I have dozens of compositions in progress in various states of usability. Two tracks were 100% finished in time for Zero but omitted from that game because there simply wasn’t anywhere to put them. Others are only a few seconds long but have a hook that I’m excited to develop. My plan is to frame the Gunmetal Arcadia soundtrack as a “Disc Two” to the Zero soundtrack. All (or very nearly all) of the music from Zero is also present in Gunmetal Arcadia, and it feels redundant to include these tunes on both soundtracks. Instead, I’ll probably eliminate all overlap and release it as a companion to the Zero soundtrack, the two of them together forming the complete Gunmetal Arcadia soundtrack.

I feel like there are a few sort of obligatory blog posts on the horizon. I’ve been wondering when the right time for a postmortem on this whole Gunmetal Arcadia cycle would be. Immediately after launch feels too soon, although it would certainly be worth privately recording my thoughts for later reference. I might sit on that one for a few months. But I’ve also been itching to start talking about my next game, that one I’ve been cryptically calling “NextGame” or “Oaks” or “Banon” or whatever. It’s been a long time since I’ve felt as strongly, personally connected to a concept as I do to that one, maybe not since I began developing You Have to Win the Game at the end of 2011. But I haven’t yet decided when or how I want to announce that game, and writing about lofty, high-level goals before anything substantial exists might not be the right idea. Or maybe it is. Who knows? I guess that’ll be part of the postmortem whenever I have enough information to answer that question.

Ramping Down

This is the complete set of upgrade items, which apply permanent stat boosts and account for about half of all the items in Gunmetal Arcadia.

Items are done. I wrapped that whole thing up with three hours to spare before December, when I officially can’t do any more work on items at all ever. Or something like that.

It’s unfortunate that so much of November was spent on the functional aspects of item development, because these last two days that I’ve spent making up names, descriptions, and icon art for all the items have been super fun. It’s a cheap way to embed lore that goes way back to one of my earliest posts on this blog, and I’ve enjoyed it despite the looming deadline. I’ve built in a few interesting hooks that I may choose to leverage for the legacy system as well.

There are a few critical tasks related to the legacy system that I’ll be tackling first. Although this system is working correctly in limited fashion, I’ll need a few more bits of framework to support all my goals. On death or at the end of a session, I’ll need a way to analyze various bits of data collected throughout the session and trigger legacy events when the appropriate conditions are met. I’ll also need some persistent serialized data for maintaining legacy rewards beyond the scope of a single session, as in the case of unlockable characters, who must always be available once unlocked. I’m also tentatively planning to assign end bosses based on persistent state changes, but it’s too soon to details exactly how this will work.

As I mentioned in Tuesday’s video, I’m going to start ramping down this blog and the video series pretty much now-ish. I have two months left to finish this game, and between Christmas activities in December, PAX South in January, and anything else that might crop up, I need all the work days I can get.

I’m not going to go completely radio silent; I’ll still post things on Twitter as they come up, and if I have the opportunity to produce any more videos or write any blogs, I’ll take it. But the weekly schedule has become costly to the point of feeling irresponsible to maintain.


As I mentioned in Tuesday’s video, post-launch work on Gunmetal Arcadia Zero has been keeping me busy, and I haven’t made as much progress on items as I would have liked. This week is getting cut a little bit short by Thanksgiving as well (oh hey I guess that’s today, happy Thanksgiving!), and sometime this week or next, I need to do some dev streaming.

The last couple of weeks have largely involved prototyping whatever remaining features I’ve needed for items, and now I’m finally getting around to the easy tasks that I’ve been sitting on. This includes producing a variety of general-purpose stat upgrade items, creating art for all items missing it, writing descriptions of all items, and setting prices. A majority of this will probably be a single day of work, but I know there are also a few item-related bugs I need to track down, and I have a few more ideas for last-minute feature adds that I might try to sneak in. (Last-minute update before I hit publish: the item count is now up to 76, comfortably above my minimum target of 60.) I’m way overdue for a full playthrough of Gunmetal Arcadia as well, so I’ll probably try to get at least one of those in this week and see how the distribution of items across a whole session is feeling.

Overall, I’m optimistic about the state of the game. I know December is going to be full of distractions, but I’m hopeful that scheduling an entire month to figure out legacy events and rewards will be sufficient to turn that system into something uniquely cool.

I’m down to like ten or eleven work weeks left on this game before its launch on February 7, 2017, which is…whatever it is. Scary? Maybe. Mostly I just can’t wait to be done with it. All told, it’ll have been about 28 months between these two games, and that’s way too long to spend on one thing. (Well, two things, kind of, but it feels like like one long project from where I’m sitting.) Each game I’ve made has been a reaction to the last in some way, and my next game is necessarily going to have a shorter turnaround time. I’m excited to start making that one and to start talking about it, but right now is the time to focus on finishing this one.

Breadth First

I would be remiss not to mention once again that Gunmetal Arcadia Zero is now on Steam. I’m curious to see how the recent Steam visibility changes will affect its launch. It has not appeared as a “Popular New Release,” which is a pretty severe blow to visibility (and yet another unfortunately opaque part of the system), but I won’t really know for sure whether these changes are beneficial for another week or two. Initial sales have been low, but some of this is due to having been released through other sites previously. Key activations currently account for 90% of Steam owners, so this data is not apples to apples. Furthermore, recent data suggests that the launch visibility round could last as long as two weeks, as opposed to the roughly five hours that it used to last. Assuming that the new targeted visibility changes put the game in front of players who would actually be interested in playing it, the clickthrough rate should be higher than what we’ve seen previously. Assuming too that interest is not harmed by visibility occurring after day one, and that the lack of reviews from Steam buyers doesn’t hurt it too much, it’s possible that even though sales are slow, they could be more consistent over the next couple of weeks, as opposed to the steep dropoff we’ve seen in the past.

That’s a lot of assumptions.

This week has been and continues to be all about items. I’m zeroing in on the last few absolutely critical can’t-ship-without-it features that I need to get out of the way before I can move out to the sort of fun content creation I talked about in this week’s video. This includes assigning items to NPC vendors, making sure faction sigil effects stack properly, and generalizing a few player stats which haven’t historically been modified, such as foot speed.

As shown in a previous video, I’ve added a new type of item that goes in the subweapon slot and provides stat boosts for a limited duration. A variation of this type also exists for effects that occur instantaneously rather than over a duration.

In testing how effects from various items will stack with each other, I put together a silly test in which I made foot speed and jump height ridiculously large. This is probably way faster and higher than you’ll ever be able to reach in the actual game, but I was happy to see the game still holds up technically in this extreme case.

I’ve been wanting to add some bomb variants for literal years, and while I probably won’t end up supporting the breadth of content I may have envisioned in the early days of this project, I have at least prototyped an upgrade to increase bomb blast radius and damage. This is accompanied by a color palette swap and a larger explosion sprite. Although pixelated 2x scale art like this would never have actually been seen on the NES on account of its lacking sprite scaling hardware, I’m probably going to leave it this way because I like the sort of kitschy faux-retro look it has. And importantly, it still respects the pixel grid.

Taking Inventory

When I drafted this blog last weekend, I wrote that with the Gunmetal Arcadia Zero launch out of the way, I could sit back and let it percolate through Greenlight for a few days or week. But thanks to your votes, by the time I’m publishing this, Zero has already been greenlit and approved for release, and it will be launching on Steam next Tuesday, November 15. Here’s the store page where you can (and should!) add it to your wishlist.

With that out of the way, I’m getting back to my previously scheduled course of action. November is Items Months, and I’m off to a pretty good start, having converted all the existing upgrades from Zero over to in-world items that can be found in chests.


The next step is going to be converting melee weapons to this form, which should be a fairly straightforward process. From there, I can start moving into the uncharted waters of new things items can do. Some of these are obvious, like “stat boost” sort of items to increase damage output, foot speed, jump height, and so on. Others, not so much. Like I mentioned in Tuesday’s video, I’d like to have more types of activable items besides subweapons. These could apply affects to the player themself, allowing for temporary boosts to damage, a chance to suppress incoming damage, a conversion of ammo to health, or any number of other actions that might be useful in a pinch. I’d also like to prototype more abilities along the lines of the vertical stab attacks facilitated by the combat bracers, but these are the riskiest sort of addition and necessarily the most likely to fall off the table. Not only is it very late in development to be adding new player abilities that could potentially introduce new bugs, but any new action would likely require new animations for all five existing playable characters. With only about three weeks left to work on items, I feel like it might be wiser to prioritize other work. But if I find myself with spare time at the end of the month, it could be worth a shot.

I almost certainly won’t have time to address it this week, but NPC vendor stock is also slated for refactoring soon. Ordinary shopkeeper NPCs currently offer every item in the game, while faction NPCs offer a subset. In the future, each NPC will have a small selection of randomly assigned gear, chosen from the same pool that can appear in treasure chests. I’ll also need to rebalance item cost at this time, as the values I chose for Zero are not applicable in the context of this game.

New Development

Hi! Gunmetal Arcadia Zero is now available! You can find it on the Humble Store and on, where it is available pay-what-you-want for the next five days. Additionally, I’m running a Steam Greenlight campaign and could use your vote! For Humble Monthly owners, Patreon supporters, and anyone who picks up the game on the Humble Store or, I will be providing Steam keys as soon as the game is greenlit and I can request them.

With that out of the way, I wanted to do sort of a mini postmortem of Zero, which in turn means doing at least a bit of a mini postmortem of the Gunmetal Arcadia cycle as a whole. I’ll also talk a little about some of the small changes I’ve made to Zero since it first launched in the May Humble Monthly Bundle since I don’t think I’ve really discussed those anywhere else and might not have another good opportunity before the roguelike Gunmetal Arcadia launches in February.

I started working on Gunmetal Arcadia about two years ago, just after wrapping up my previous title, Super Win the Game. It was to be a retro-themed action-platformer roguelike, a blend of classic gameplay elements and modern sessionable game structure that I had found myself craving and seemed to fill a void in the market (albeit a particular, niche void). My marketing efforts for Super Win had been sporadic at best and largely met with a lukewarm response, so I made the decision to push harder on marketing myself. To that end, I began keeping weekly dev diaries, which continue to this day.

In summer 2015, I began to run into production difficulties. Although my target ship date was still some distance away (fall 2016 at the time), I had recently expanded my marketing efforts to include a weekly video series, and I had taken on contract work to help pay the bills. It was clear that the hours I could devote to development on Gunmetal Arcadia simply weren’t enough to make the sort of progress I knew I needed to be seeing.

I consider myself fairly aggressive about minimizing scope proactively, and it didn’t feel like there was much I could carve out of Gunmetal Arcadia to help it ship faster. It felt like I might have to push my target release window back a bit to compensate, and I wanted to have something I could ship in the interim. So what I did instead was to expand the scope of the brand to include a second game, Gunmetal Arcadia Zero. This game would launch first and serve as both a narrative prequel and a low-cost entry point into the series. This plan allowed me to focus on bespoke content production that could be leveraged by both games (sprites, enemy and item implementations, and so on) and temporarily push off some of the looming procedural generation tasks for the roguelike game.

In late 2015, I was approached by Humble regarding plans for an upcoming series of small exclusive titles to be debuted as part of their monthly bundle. Zero seemed like a perfect fit, and we eventually landed on May as a launch date. With an absolute can’t-miss deadline, I began figuring out exactly what would and wouldn’t ship in Zero. I grayboxed eight levels, eventually cutting the two I liked the least to reach my target of six shipping levels. I spent most of January building a vertical slice map to give myself a target quality bar, and the remaining three months prior to launch were a crunchy dash to decorate and populate the remaining five levels.

I did meet my deadline, and the launch was successful, if subdued. As a timed subscriber exclusive, my ability to promote the game was limited, since the usual call-to-action (“buy this thing!”) was off the table. Instead, I focused on promoting the soundtrack and demoing the game at events throughout the summer.

Gunmetal Arcadia Zero is no longer a timed exclusive, so I’ve moved forward with putting it up on various storefronts. Although we’ve shipped games with Steam before, and I’ve directly requested AppIDs from Valve before, I’m deliberately going through Greenlight again in order to buy myself a little bit of buffer time in which I can start to build awareness and promote the game while also launching on Steam as near as possible to Gunmetal Arcadia‘s upcoming February 7, 2017 launch date.

Zero‘s history has also made it a unique opportunity for me to test some different strategies that I might otherwise not be comfortable trying with whatever my latest Next Big Thing were. Since it is and has always been intended to be a low-cost, low-risk entry into the series, I’m going straight to pay-what-you-want pricing for a short duration on It’s likely I’ll look for similar opportunities in the future to get cheap copies into as many hands as possible without completely devaluing it by simply making it free.

After I shipped Gunmetal Arcadia Zero through Humble Monthly and turned my attention to the roguelike Gunmetal Arcadia, I began addressing a few longstanding engine issues. A few of these seemed like obvious candidates for porting back to Zero, and I’ve done so whenever and wherever I could without overt risk of breakage.

Probably the biggest of these, and one that I’ve often wished I had had in Super Win the Game, is the introduction of CRT presets. You can now select from a few presets I’ve created (including a recreation of Super Win‘s slightly fuzzier look), but more importantly, you can also save your own CRT modifications to one of three user preset slots. So if you’ve found a look you like, and you want to experiment a bit more without fear of losing that known-good state, you can save it off and continue tweaking settings from there.

On the one hand, it feels a little silly to go this hard on supporting the experience of modifying the CRT sim, but on the other hand, it’s consistently been a talking point of every game I’ve made since You Have to Win the Game, and I feel like it would be irresponsible not to support this admittedly extraneous aspect of the game to its fullest as much as I’m able.

Back in July, I began working on an input remapping feature on stream. I documented this process at the time, but only in the context of the roguelike game. Since then, I’ve merged these changes into the Zero shipping branch of my engine, so users on all platforms with (almost) all devices should be able to benefit from these efforts. This goes beyond the normal control binding system my engine has supported for years and addresses the problem of various devices labeling axes and face buttons with non-standard indices, which would typically manifest itself in-game as apparently incorrect button prompts. Handling these eccentricities for every existing device myself would be prohibitively expensive and time-consuming, so instead, I’ve made the appropriate changes globally for a number of popular devices and provided an interface for users to easily define these remappings themselves when using devices I haven’t already addressed.

Several months ago, someone suggested that I add a mode to Gunmetal Arcadia Zero that would display an in-game timer on-screen for speedrunning purposes. Since I’d already been building Zero with speedrunning in mind, that seemed like an obvious win, and I made a note to myself to add that. Then I promptly forgot about it for months and months until last Saturday, just three days before launch. So, any guess as to how I spent my weekend? It’s not as polished as I’d like, and there’s a good chance I’ll make some tweaks to it between now and the Steam launch, but Gunmetal Arcadia Zero now has a speedrun mode. This mode can be selected when starting a new game, and by default, it will display automatic per-level splits on the screen, along with the current timer and a previous best if one exists. In this mode, New Game+ is disabled, and game-over-ing (is that a verb?) always forces a complete restart. (That second one may change in the future, but it was a necessary side effect in light of only having a short time to implement this feature.) The in-game timer pauses during loading, level intros, scrolling room transitions, and whenever the pause menu is open, only accounting for actual gameplay and time spent in the “in-CRT” menus such as inventory and shopping.

Oh right, New Game+. That’s a thing. Kind of. When I launched Zero back in May, I left some hooks in there for a NG+, but it didn’t exist at the time. Now it does, in minimal fashion. When you finish the game and continue from the same save slot, you’ll start back at the beginning of the game with all your upgrades intact, and enemies will have more health. Each subsequent playthrough increases enemy health a little bit more.

Finally, because it had been bugging me and I saw several players struggle with it when demoing Zero at events, I added a separate button (left trigger by default) to crouch without climbing down ladders. I had previously tried to mitigate this frustration by keeping ladders as far from enemies whenever possible, but it just wasn’t possible to prevent it completely. In the context of randomized levels in the roguelike game, it became clear that a different solution was needed, hence the new control binding.

Lastly, I had a note that I wanted to say something about Steam achievements. So, uh, yeah. They’ll be in there. I haven’t figured out what they’ll be yet, but I did at least make a change recently that should catch a vast majority of problems arising from meeting achievement conditions while playing offline and then not being awarded the achievement when coming back online, so that’ll be nice. As for Steam trading cards, probably not. Historically, supporting trading cards has proven to be worth less than the time investment involved in meeting the minimum art requirements, so I almost certainly won’t be supporting those at launch. In the future, if the game is a success? Sure. Maybe. But not at launch.

Late Edition

With one week left dedicated to level design, I’ll be wrapping up the last couple of loose ends I haven’t dealt with yet. This includes bosses, possibly a short epilogue level as mentioned in Tuesday’s video, a better implementation of narrative NPC rooms (better environments at the very least, even if the narrative elements are saved for later), and any more prefabs I feel are missing.

My goal is to include every boss and miniboss from Gunmetal Arcadia Zero in Gunmetal Arcadia, plus some additional ones. I’ve already shown a little bit of my work on the faction bosses, and there’s another “final final boss” or “true final boss” that I haven’t shown at all yet. Beyond those, I have the six bosses and minibosses from Zero to randomly distribute across the four-level sessions in this game. I’m building these in such a way that it would be potentially easy to add more in the future. Although I don’t currently have any plans for post-launch work, I want to leave the possibility open, and increasing the breadth of available content feels like it would be the most effective course of action in that case.

The epilogue level, if implemented as I’m imagining in my head, will only be one or two rooms long, and it will essentially just serve as a way to make one final choice that will directly affect the next session. This will also be the payoff for a hook I placed at the end of Gunmetal Arcadia Zero with no explanation at the time. (No spoilers if you haven’t played that one yet.) This might also be where the faction bosses end up landing, as a sort of unexpected twist right before the end.

The narrative NPC rooms are an extremely late addition to this game, and I’m still figuring out exactly what information these will convey. I’m imagining they could serve as a sort of status update on pending legacy events, in order to give the player a chance to pursue a specific goal to influence a future session. None of that exists at this time, however, and there are probably a number of technical hurdles standing in the way, so I don’t want to commit to anything specific yet.

My time may be divided among a couple other things next week (and the one after that, and so on), and I don’t yet know what shape the next video and blog will take, but what I do know is that by next Tuesday, I’ll be done with level design by necessity and I’ll be moving on to items. November is largely a big question mark right now, but I have at least a handful of specific tasks in mind to get me started. (First and foremost will be reworking the faction sigils to better represent some longstanding goals of this game.) And maybe I’ll try to find a way to cram the 80-hour weeks I need to be working into the 30-hour weeks I have.


rlga_level1 rlga_level2 rlga_level3 rlga_level4

I’m halfway through October, which means I should be halfway done with building levels. The city and hive prefab sets need a lot more attention, and the forest isn’t completely done yet, either. I can probably get those into a state I’m happy with by the end of this week, which will leave the last week of this month for level-related tasks like figuring out which bosses and minibosses will appear in each level, specifying which enemies may appear where, and so on.

I’m not yet sure when and where narrative NPC design will fall. It’s not going to be a huge part of the game, but I want the opportunity for narrative NPCs to appear at the start, middle, and end of every level, in order to provide some context and lore. These characters may also provide feedback and insight into ongoing legacy events, which would mean this feature could be closely tied to the legacy system, which I’ll be tackling in December. That might end up being the most appropriate place for it.

I introduced the Wayfarer from the Win the Game series as a playable character late last week, which couldn’t be further from level design work, but it was something that had been a goal of mine for a while, and its absence was starting to become worrisome. I’d imagine the next few months will probably be full of these sorts of random “get it done before it’s too late” sort of tasks, for better or for worse. The updates from Tuesday’s dev stream to the cost of healing at inns and loot drops from stone chests are good examples of these sorts of things, too. They don’t fit cleanly into the “levels-items-legacy” path I’ve laid out for the last three months of 2016, but they’re important, and the sooner I get a first implementation done, the longer I’ll have to test and tune them.

Bespoke Coding


My plan for last week was to plow through the entire city prefab set, but as I started working on that one, I realized it would be easier to start by stubbing out each level, and that led to solving problems of decorating the forest level. As I discussed in Tuesday’s video, there’s a few more pieces left to add here, procedurally placing trees and stumps and silhouettes of distant trees, but it’s starting to look and feel how I’ve been imagining in my head, so that’s exciting.

This has required a fair amount of one-off implementations in code (“bespoke coding,” if I want to make it sound fancy and not terrible), which is something I usually try to avoid in favor of generalizing systems and allowing data authored in the editor or external markup sheets to drive these systems. That’s a trait I picked up working on the Borderlands series, and it’s generally served me well in my solo projects too. But in this case, time is not on my side; I have a finite number of known use cases, and I’ll take whatever option lets me wrap this work up quickly. It would cost me more (time and therefore money) to try to generalize these patterns than it would to make some small changes to large amounts of copy/paste code. So in this particular scenario, good programming practice takes a backseat to just getting it done.

Anyway, I’ll be tackling those remaining issues of decoration this week, plus stubbing out the fourth and probably final level, the Unmade hive. This one will presumably require some of its own unique decoration work, as each of the others has, and once that’s done, then I can begin putting together prefabs for all four levels.