On Paper

A year ago tomorrow, I launched this Gunmetal Arcadia development blog. Two days later, I released my first commercial indie title, Super Win the Game. I had been thinking about covering these in separate blog posts, but there would probably be so much overlap between the two that I might as well roll them both into a look back at the last year. This is going to be long and kind of rambly, so if you’re looking for a tl;dr, I guess it would be this: “I’m still making games.”

As I discussed in a two-month postmortem last December, Super Win had a bad launch. Its day one sales were a fraction of what I’d hoped for. Now I’m ten months further out, and the game’s been discounted several times and given a major update and a permanent price drop, updated, and I have more data.

To be clear, my initial impressions of Super Win were not wrong. It started out badly and it never really recovered. There was no miraculous event that suddenly pulled it out of obscurity. It’s continued to trend in accordance with those first few weeks. It’s consistently performed about a tenth as well as Eldritch, which was my only real point of comparison at the time of launch. I had numbers from the Steam launch of You Have to Win, too, of course, but free games are so disproportionately popular relative to paid games that it was not meaningful in any way.

The mistake I made last year was in assuming Super Win was failing relative to everything else on Steam. Subjectively, yes, it failed to perform as I would have liked. But in contrast to the rest of the market, it’s right on par. It’s near the median. And that’s what I didn’t know — couldn’t have known — a year ago. I have SteamSpy to thank for that. SteamSpy was a revelation. Suddenly I wasn’t the odd one out whose game tanked. The market just didn’t look the way I thought it did.

So let’s talk sales figures. In twelve months, Super Win the Game has sold 7,640 copies across Steam, Humble, itch.io, IndieBox, and direct sales, with an average unit price of $4.98, generating roughly $38,000 of gross revenue. By my napkin math, this translates to about $18,500 after-tax earnings for my household.

That’s not amazing, but it’s not nothing either. Alone, that’s not quite enough to pay rent, much less completely cover the cost of developing another game, much less actually turn a profit. But in conjunction with my remaining savings, income from contract work, additional revenue from Eldritch, and my wife’s income, we’re staying afloat.

That raises a question. Is it possible to be sustainable at this scale? Is it possible to stay in business without ever having a smash hit? How many games would I have to have in the market simultaneously to reach that point? I’m guessing not too many. Two of Super Win would pretty much carry me. Now obviously it depends on countless other factors, and it’s hard to know for sure what the tail for Super Win will look like in year two (I’m guessing, you know, one-tenth of Eldritch‘s), but I’m optimistic.

Mac and Linux account for about 10.25% of sales (6.25% and 4% respectively), so again by napkin math, I would estimate I’ve earned roughly $1,900 on those platforms. They continue to be a net loss for now. Reaching profitability isn’t totally outside the realm of possibility, however, since there is minimal cost involved in supporting them now that the core engine work is done.

Let’s look at some pictures.

superwinsales

This is a graph of Steam sales over the first year. It shouldn’t be surprising to anyone; it’s a well known fact that games sell the most when they’re on sale. The in-between bits aren’t totally flat, but to provide some sense of scale, on average Super Win has been selling about 50 units per month when it’s not on sale.

The y-axis on this graph is units, not revenue. (If it were revenue, every peak would be lower by the sale percent specified, with another 35% or so chopped off after the price drop.) What’s interesting to me is that it wasn’t until I discounted Super Win by 75% that it matched its launch day in terms of units, and it’s never matched it in revenue. Even in a crowded, sales-driven market, launch day is still the biggest day of a game’s life.

Now that the game’s been out a year, I’ll be looking into bundling opportunities. I know that market has become more saturated than it once was, just like every part of indie games, but I’m hopeful I can find some additional revenue there.

A few months ago, when I announced Gunmetal Arcadia Zero, I talked about the motivation for that game primarily as a way to alleviate a production bottleneck created by ongoing obligations. But it does serve other purposes, too. I can finish Zero faster than I could finish the flagship game, which means I can get something else out into the market, something else generating revenue. But that’s a double-edged sword. Although it can start recouping costs and create awareness for the roguelike game, it also has the potential to diminish interest and harm the chances of Gunmetal Arcadia succeeding if it’s not a quality product itself. So I’m motivated to make Zero the absolute best game it can be.

Zero will be an experiment in other ways, as well. I’ve shared my thoughts on the pricing of Super Win before, eventually culminating in a price drop to better match consumer expectations and allow me to price Gunmetal more appropriately relative to that game. But Zero is a little more of a wildcard, and it’s an opportunity to swing hard the other way and deliberately price a game too low. I’m no fan of the race-to-the-bottom pricing seen on the App Store (and recently in the PC space, as well), but I’ll happily jump at a low-risk opportunity like this to see how a game fares at that point.

A few weeks ago, Daniel West’s “‘Good’ Isn’t Good Enough” blog hit Gamasutra. It’s one in a long line of blogs and articles recently that have given rise to discussion of an “indiepocalypse” in which there are so many games being released every day that none can stand out and succeed.

When I wrote my first postmortem of Super Win last year, the term “indiepocalypse” had not yet been coined (to my knowledge), but there was already a feeling of overcrowding. Greenlight titles were no longer announced with excitement but merely quietly given approval en masse. Games were disappearing from the front page of Steam within a day. It was a stark contrast from even just a year earlier. (And indeed, SteamSpy has noted that October 2013 is when the proverbial floodgates opened. Eldritch was right on the cusp, having been released that same month.)

Daniel West’s blog resonated with me because it recalled many of the elements of my own previous postmortem — importantly, that doing things “right” or being “good” (and I should emphasize the heavy quote marks around those terms, subjective as they are) aren’t a predictor of success now, if they ever were. And the more I learn, the less I think they ever were.

So here’s my hot take. There is no indiepocalypse. There are no games that are failing today that would have been huge successes a year ago. Yeah, it’s maybe conceivable that Super Win would’ve sold a little better if it had been released in 2012 or 2013, but it’s even more likely it wouldn’t have made it to Steam at all. There was a notion for a while that being on Steam was a predictor of success, and that’s probably true, but being on Steam was also a mark of being not only a high-quality game but also one with mass appeal.

Super Win the Game is a high-quality game (and you can fight me irl if you disagree), but it has niche appeal. As a retro pixel art platformer, it also exists in a space occupied largely by many, many games of wildly varying levels of quality, all vying for that same niche market. That’s not a good place to be. Good thing my next game is such a radical departure— oh wait

I guess that’s a fair question, and a place to shift gears and talk a little more about Gunmetal. Why, in the face of middling sales and unforgiving odds, would I choose to make another retro pixel art (action-adventure) platformer?

The truth is, I very nearly didn’t. Even though I launched this blog prior to Super Win‘s launch, I had been taking notes on another game simultaneously, a project by the codename “Cadenza” that I’ve been wanting to make for a very long time. When Super Win fizzled, the whole retro thing felt poisoned to me for a little while, and I was briefly convinced I needed to do a 180 and make something completely different. But clearer heads prevailed, and I decided that it would be better to take the time and effort that I had put into developing tools and tech for Super Win and reuse those for another game, while pushing the bar higher wherever I could.

That’s been the driving force throughout Gunmetal‘s development to date: I have to do better than Super Win. I can’t make something I’m going to be embarrassed to show off. It’s impossible to say whether that will be enough to put it ahead of Super Win in terms of sales, but already, I feel so much better about where Gunmetal is in terms of providing a rich, expressive gameplay experience. I get excited whenever I see animated GIFs of my own game. That’s a good place to be.

I would also add, as long as we’re considering the realm of all possible projects that could have been my next, that I had to narrow it down to something that (1) I was capable of making (2) in a reasonable amount of time (3) with the tools I have available to me, and, perhaps most crucially, (4) it had to be something I wanted to make. There is no room for passionless work in solo indie dev. So yeah, maybe the pixel art platformer is an overcrowded genre, but if I care very deeply about this pixel art platformer in particular, I know that I can finish it and that it will be something special.

I guess that roughly concludes the scribbly line connecting Super Win to Gunmetal Arcadia. Let’s talk about how that’s gone this last year.

One year. I’ve been working on this game for an entire year now. That’s longer than I’ve ever worked on any solo project ever, but then this is a bigger game than any other I’ve ever made. And I’ve barely scratched the surface.

I’m a little surprised I’m not burnt out or jaded toward the concept yet. I’m still excited by the promise of what Gunmetal Arcadia will be. I think a lot of that is due to having had very little time recently to actually work on the game, so in some regards, it still feels like a future project that I’d like to take on someday, when I have the time. That’s weird.

I think that’s indicative of how the development process has been trending, though. After a sputtering start (Gunmetal commenced just as I was moving to a new apartment, and it was some time before I really felt like I was 100% on development), I had a few solid months in which I laid a lot of the groundwork for what Gunmetal Arcadia has become and will become. Reading back through the archives, many of the recognizable aspects of the game were already in place by February. And since then, things have been…spotty.

xan_commits
SVN commits to all repositories over time

I kind of just want to let that image speak for itself.

I made a gamble in early July that the time cost to produce a weekly video series would be mitigated by the increase in visibility and ultimately in sales. I won’t know for sure whether this has paid off until the games launch, but I’m optimistic. In the meantime, I’ve spun up a Patreon campaign to support this non-development documentation work.

The future remains as busy and unpredictable as ever. My contract work period is drawing to a close, but I have more obligations on the horizon. I’ve submitted a talk for GDC 2016, with slides due in the coming months, and oh yeah we’re expecting a child in November so that’ll probably shake up my schedule just a bit.

But hey.

I’m still making games.

Damage Pipeline

Last week, I started implementing a biped enemy, someone who should be able to match the player character blow for blow. For now, I’m using a variant of the player sprite for prototyping this enemy, but the final design will probably be something altogether different, as I’m trying to avoid humanoid elements in my enemy designs.

GunPreq 2015-09-20 22-04-17-210

In prototyping this design, it became immediately obvious that freezing this enemy in place when taking damage feels wrong. I first added that behavior when I was implementing the green slime baddies in order to more closely mimic Zelda II‘s Bits and Bots. But in that game, the larger, stronger bipedal enemies that Link encounters do not freeze when hit. Instead, they reel backwards, putting themselves out of melee range and increasing the complexity of combat encounters.

GunPreq 2015-09-20 22-16-00-903
Freezing when hit. Not very interesting for major enemies.

As I was basing this enemy’s movement on the player’s own, it made sense to give it the same amount of knockback when damaged as the player experiences. This has been historically been hardcoded in player code, however, and that raised the question of what should really own these values and how they should be modified in the context of wanting to support a variety of weapons, armor, upgrades, champion enemies, and so on.

Previously, in all cases but the player taking damage from being touched by enemies, the weapon was the thing that would define these values (knockback force and decay rate, in addition to amount of damage inflicted). The thing being hit could only choose to opt out of knockback entirely by freezing in place when stunned from a hit.

The weapon is still the source of these values, but there are now opportunities in code for both the weapon’s owner and the target to alter or override them. In this manner, the biped enemy can choose to ignore whatever amount of knockback the weapon wants to administer by default and use a value that suits its needs better.

GunPreq 2015-09-20 22-16-28-248
Reeling when hit. More dynamic and interesting.

In this future, this path will likely serve as the basis for features like weapon and armor upgrades, allowing the player to scale down the amount of incoming damage from enemies or scale up the amount of outgoing damage from weapons.

I’ve tried to provide as much information as possible that could be useful in determining how to adjust damage and knockback values, but it’s likely I’ll want even more as time goes on. I currently identify the thing immediately responsible for causing damage (for instance, a melee weapon or projectile), the owner of that thing, if different (typically the player or an autonomous enemy), the target entity (the one taking damage), and an arbitrary damage type name which is currently unused but may be useful in the future for distinguishing physical blade or blunt damage from elemental types like fire or electricity, if I choose to have those. Additional information such as what equipment the context entities are wearing can be looked up from their handles if necessary.

It’s likely too that this model will evolve between Gunmetal Arcadia Zero and Gunmetal Arcadia to adapt to the larger scope of the roguelike game. For now, I’m focusing on content production for Zero, and for that game, the current implementation will likely get me most of the way there.


This weekend, I’ll be at Retropalooza in Arlington showing off Super Win the Game for probably the last time this year. Come say hi if you’re local-ish!

Next week will be just about one year to the day since I started keeping this devlog, and next Thursday is the one-year launchiversary of Super Win, so I’m going to do a bit of a postmortem or recap on each. Let me know if there’s anything specific you’re interested in reading about!

Swashbuckler

I was planning to prototype one or two new enemy designs this week, and that’s still on the docket for Wednesday’s video, but on Friday, I got a wild hair and decided it was finally time to kill off any remaining vestiges of the Link sprite from Zelda II.

GunPreq 2015-09-12 10-20-43-881
An overview of Vireo’s new animations

Going back to last December, I talked a bit about the motivation behind starting with an recognizable player character sprite, and for several weeks, I had a near-exact replica of Link running around in Gunmetal Arcadia. In mid-February, I replaced the Link sprite art with an original design, but I retained the same core animation set, and many frames were still clearly lifted from Zelda II, several being literal paintovers. Of course, these were never intended to be shipping sprites; they were simply another stepping stone along the way to launch.

anims_compare
Can you spot all the differences? Can you spot ANY differences?

Recently, I’ve been feeling like the existing animations have been holding me back. I’ve been reluctant to showcase the game extensively while these assets are still around, and and I’ve received a few bits of negative feedback for using clearly derivative placeholder art. So on Friday, I finally decided to come back to this task and completely redo Vireo’s sprite sheet.

Idle

anims_idle

One of my first tasks was to get rid of the sword and shield. Vireo doesn’t carry a shield, and he may carry many different types of melee weapons, so baking these into the sprite is not appropriate. There is ample precedent in action platformers for keeping weapons hidden until they are used (notably in the Castlevania series), so I have no qualms about that.

Fortunately, I had done some mockups of what an unarmed player character might look like a few months back when I was figuring out the look of each faction. This became my new idle pose and served as the basis for all other animations.

Walking

anims_walk

I did a little bit of work in early April to stub out a six-frame walk cycle, as Link’s odd three-frame cycle has never sat very well with me and I didn’t want Vireo’s walk to be patterned after that one. This was again very placeholder in nature, but it ended up sticking around for five months or so, largely because that was right around the time that I began tinkering with Super Win the Game again, and I’ve been juggling multiple projects ever since.

Jumping

anims_jump

This is one of the biggest changes from Link’s sprite on account of the fact that Link doesn’t even have a unique jumping animation. His jump is composited from his crouching pose and one frame of his walk cycle. I was starting with a blank canvas. I chose to do a three-frame jump because I had had success with that in the Win the Game series, splitting the animation into clearly defined rise, hang, and fall frames. Likewise, I adapted a few other elements from Super Win, including the shift in the eyes’ gaze to follow the trajectory and leading with the front foot. A major difference from my previous work is that Vireo has arms; Super Win’s Wayfarer typically did not except when an animation required it.

There’s no wind-up here; Vireo doesn’t crouch or shift his weight in preparation for a jump. This is one of those concessions that games often have to make in the interest of responsive feel. As a player, I expect my character to immediately leave the ground as soon as I press the jump button. If there were any wind-up time, the game would feel unresponsive, delayed, or “laggy,” and for many games, especially an action platformer like this one, that would be unacceptable. An exception to this rule is cinematic platformers; these can usually get away with prioritizing animation quality over immediacy of control. Prince of Persia is a classic example; the prince’s actions are temporally offset from the player’s input, but the game compensates for this by giving the player ample opportunity to time their jumps. When quick response is needed, as in the case of combat, the animations tend to fast and have less wind-up.

I’m retaining the Zelda II behavior of using the crouch frame as a landing pose immediately following a jump or fall. It still feels really good, so I don’t see much use in drawing a separate unique landing pose.

Attacking

anims_combat

Despite what I just said in the previous section, the combat animation does have a wind-up. But it’s a short one, and it only affects the first strike if the button is pressed repeatedly, so it’s not too punishing. (This behavior was carried over from Zelda II; I like the way it feels so I’ve left it alone for now.)

My primary goal for the attack animations was to maintain the weapon heights from Link’s sprite. I’m comfortable with these positions, and they’re tuned well for hitting 16×16-sized blocks or enemies at the character’s head or feet. Beyond that, I had mostly free rein to do whatever I wanted here, and the absence of the shield freed up some space to make this a little more expressive.

Vireo raises his off-hand behind his head whenever he strikes. Besides helping to differentiate his silhouette from Link’s, I like this because it gives him a sort of theatrical swashbuckling presence. Vireo is not a trained swordsman, and I think it’s appropriate that he would adopt some mannerisms just for show.

Although I did preserve the weapon’s height, I altered its range slightly, shifting the attachment point forward two pixels from where it had been before.

Climbing

anims_climb

The placeholder ladder sprite I had been using for months dates back to the end of last December, when I quickly stubbed in a representation of what Link might look like climbing a ladder, based on his poses facing the camera, as when grabbing an item. This later became a quick paintover to roughly match Vireo’s proportions, but it never looked good or moved correctly, so again, I pretty much had to start this one over from scratch. I looked up a few references for this one and found no real consensus in how ladder climbs are animated. Sometimes the hands are feet stay roughly in sync which each other, sometimes opposite hands and feet reach upward at the same time, sometimes they’re staggered… I ended up keep left and left, right and right more or less in sync. I’m still not super happy with how this turned out, and it’s a contender for a redo later on down the road, but it’s not dragging the whole game down like the old one was.


anims_all
Vireo’s complete sprite sheet as of the time of writing.

It’s difficult to say whether this will be the final shipping asset. I’m sure there will be a few bits of cleanup here and there, but otherwise, it’s probably over the “good enough” threshold. The walk cycle feels sort of odd now in comparison to the rest of the sprite; the legs feel a little bit out of proportion with the rest of the body, but it’s also hard to judge it objectively because I’ve been staring at it all weekend. Regardless, it’s exciting to see new types of motion in the game; Vireo is starting to feel like his own character and not just an orange Link knockoff.

The Space Between the Pixels

What is time? What are days? I have it on good authority that today is Labor Day, so Happy That, I guess. Things are still crunchy and are going to be crunchy for the foreseeable future. Recently my time has been monopolized by Real Life Stuff and Not Making Indie Games, which is a bummer, but there’s a light at the end of the tunnel at least. Meanwhile, I have emails that are over two weeks old that I haven’t answered or even looked at yet, so that’s the world I’m living in right now.

As I mentioned last week, we’ve been getting things moved to a new apartment over the last couple of days, and just yesterday, I got my home office arranged and ready for recording new Let’s Make episodes. Our last place was nice, but this one is a little more affordable and more accommodating of our imminent newborn, due early November. The pets seem to be adapting to the move better than they did last time. More exploring, less hissing and hiding.

Since branching for Gunmetal Arcadia Zero a few weeks ago, I’ve been neglecting Mac and Linux, as I haven’t had cause to produce builds on these platforms in the absence of weekly deliverables. I’m hoping to get the ball rolling on in-dev builds again pretty soon, especially now that those are one of my Patreon rewards. I did at least get the Zero repository synced, built, and running on those platforms last night, so it should be a simple process to keep them updated week to week in the future.

I’ve been trying to make gaming a part of my daily routine again recently, as it really hasn’t been in probably literal years. Right now, I’m replaying Earthbound for what might be the first time since its release twenty years ago. It’s not as immediately relevant to Gunmetal Arcadia as some of the other games I’ve been playing (Castlevania: Symphony of the Night and Super Metroid), and I’m not sure whether I’ll have the patience to finish it, but I am enjoying revisiting it with fresh eyes, and I’m pleasantly surprised at how good the writing is. I don’t think eleven-year-old Kyle fully appreciated it at the time, but in retrospect, that game really has earned its legendary reputation. That being said, it’s a little bit more of a grindfest than I remembered, so I may set it aside in the coming weeks and look for something that will more directly stand to influence Gunmetal Arcadia. In particular, I’m somewhere in the middle of playthroughs of Monster World IVSuper Adventure Island II, and Dark Souls II: Scholar of the First Sin that I need to ever finish.

I had a spark of inspiration the other day regarding the design for the procedural narrative elements of Gunmetal Arcadia. I haven’t really talked much about my ideas for the implementation of those concepts beyond the high-level pitch, in part because it was still a little fuzzy in my head. I’ll save the details for Wednesday’s video because I think it’s better suited to a conversational ramble, but in short, I feel like I’ve landed on a design that will be far easier to implement and tune and will fit more naturally in the context of an action-adventure platformer than what I had been previously envisioning.


As a reminder, I’ll be bringing Super Win to a couple more local events soon: