All posts by J. Kyle Pittman

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.

In-Dev Build #14

Changes since previous version:

  • Added Vanguard and Seeker faction bosses
    • Currently allowed to appear in any level
  • Added City and Wilderness levels
    • Currently only contain the minimum required prefabs
  • Added stone treasure chests
    • Currently only contain normal coin and gem drops
  • Added item icon support
    • Currently only used for faction sigils

Mac OS X: GunArc.dmg
Linux: GunArc.tar.gz