ctmatthews

Indie game developer

a trans woman in the UK making 2D action games about ducks:

Ducky's Delivery Service (Steam/itch/Switch)

Chessplosion (Steam/itch)


i mostly post on my Blog / Newsletter / Patreon


i play fighting games! i won Evo in 2021.


pfp/header by NomnomNami


✉️ Contact (email/DM)
ctmatthews.com/contact
🖼️ pfp/header by NomnomNami
nomnomnami.com/

(crossposted from my blog and my newsletter)

Hello! It's been five months since my solo-developed duck delivery action game Ducky's Delivery Service launched on Nintendo Switch, Steam and itch.io, so it felt like a good time to write a postmortem.

I want to keep making lots of indie games in the future, so it's always worth looking at how I can improve my development process. I thought I'd talk about what went right, what went wrong, what I'm not sure about, and what I can try in the future if I want my games to become more financially sustainable. Hopefully some of this is useful to you too!

When reading this, please bear in mind that I'm just a solo developer with a relatively low cost of living by UK/US standards, so my thoughts might not apply to people or teams in different situations. No advice is universal!

What Went Right

1. I made the game that I wanted to make

I'm going to spend a lot of this postmortem talking about things that I can do differently in the future, because I want to keep improving with every new game that I make. But Ducky's Delivery Service is exactly what I wanted to make, I'm happy with how it turned out, and this is far more important than everything else in this postmortem combined.

Ducky's Delivery Service originally started out as a 2D action roguelike arena shooter, believe it or not. It used the same movement physics as the final game, but instead of picking up and delivering packages, you were shooting enemies and dodging bullets and upgrading your weapons. This prototype is available to play on my Patreon!

I loved the player movement physics, but I wasn't happy with the action roguelike mechanics. And because the player movement had so much inertia, it was extremely difficult to dodge anything but the simplest of enemy bullet patterns on reaction. So instead of making a shooting game that didn't work very well as a shooting game, I felt like it would work better as a game about quickly moving from place to place while avoiding walls and windmills and other objects with predictable movement patterns.

Ducky's Delivery Service gameplay gif

I knew this would be harder to sell to people than an action roguelike arena shooter, but I did it anyway. And I'm glad I did! I'm grateful that I get to sit here and talk about Ducky's Delivery Service, instead of having to talk about a game I didn't really care about and just made for money.

2. I got better at pixel art

I don't know how noticeable this is to other people, but I feel like the pixel art in Ducky's Delivery Service is a big step up from my previous game Chessplosion. It's especially obvious in motion, but hopefully you can tell in screenshots too. I put a lot of effort into working on my pixel art skills at the start of the game's development cycle and I think it paid off!

Pixel art comparison

3. I gave writing a try, and got help with it

I had never written a game's story before, but I wanted to try writing some story scenes for Ducky's Delivery Service to see if I liked it.

@NomnomNami, who drew the Ducky's Delivery Service promo art, has made several of her own fantastic games with incredible writing. She gave me so much helpful feedback and advice, some of which inspired this post she made on Cohost. The game's story would have been much worse without her and I'm grateful for the help!

Ducky's Delivery Service cutscene gif

I love how the story ended up. That said, I struggled to write it and I don't know if I want to keep writing stories for all of my games. Maybe I'll write another one in the future if I have a good idea for one, but I'm not going to force myself to shoehorn a story into everything that I make. Regardless of whether or not I end up writing again, I'm glad I gave it a try and I think it made Ducky's Delivery Service better as a result.

4. I gave myself a generous release date

I didn't finish making Chessplosion until about 20 minutes before I released it on Steam. I didn't even start working on its online multiplayer (with rollback netcode!) until 6 weeks before its release date, despite having to do full-time contractor work and compete in Evo during that time period. I don't want to do that to myself again.

So I gave myself lots of extra time when choosing a release date for Ducky's Delivery Service, and the game was much less stressful to develop as a result. I even had enough time to sneak in lots of extra little bonuses at the end of development, which otherwise wouldn't have made it in or would have been relegated to post-launch updates.

I guess you could argue that it would be better to leave those small extras until after launch, so people would see a big list of post-launch patches and go "wow look at how much the developer is supporting her game". But I'm glad I got to launch with all of those features already present from the start instead.

5. I built the game around my skillset

I'm not great at level design. I've been doing it for over a decade at this point and I'm happy with the levels that I make, but it takes me a very long time to design them and the whole process is a bit of a struggle. Background art is another area of game development that I'm not great at, for similar reasons.

So I'm glad that I made a game about flying back and forth from place to place in hub areas, instead of a standard console-style platformer about running through tons of bespoke levels, or a metroidvania with a giant world to explore. I don't think I would have finished the game if I attempted to do something like that.

Ducky's Delivery Service gameplay gif 3

On a similar note, I'm glad that I kept on using my own game engine and didn't try to add a ton of new features to it. It's a simple 2D pixel art engine with features that make it easy for me to quickly develop bug-free games, such as live code reloading, fast compile times, fast debug performance, fully deterministic gameplay code, and a constantly-active rewind feature that lets me instantly rewind and debug any issues that I spot while I'm playtesting my games. It makes the game programming process much more enjoyable!

Game engine editor

6. I released it on Nintendo Switch

I've done programming work on Nintendo Switch games in the past, but I've never been in charge of porting or publishing a console game until now. My games use my own custom game engine so it took a while to learn the porting and publishing process, but I love how it ended up.

It's especially satisfying that I got to publish the game myself, instead of having to go through a third-party publisher. I hope I can publish more of my games on consoles in the future, especially now that my engine is compatible with Nintendo Switch!

7. It was verified as Steam Deck compatible

It's cool that this happened! I love playing my games on handheld systems, and I hope Valve verifies my future games on Steam Deck too.

Ducky from Ducky's Delivery Service flying next to the Steam Deck Verified checkmark

8. It got lots of event coverage

Ducky's Delivery Service was featured in Wholesome Direct, INDIE Live Expo, SAGE, Valve's Steam Next Fest video coverage, the itch.io front page and blog, Nintendo's Indie World Twitter account, Eurogamer and various other events and outlets.

As a small solo indie developer without a big fanbase or any advertising budget whatsoever, I cannot thank these places enough for spreading the word about my silly duck game. I'm so grateful that anyone can just fill out a short form and apply to have their games in these events, without having to leverage their game industry connections or pay a fee or anything like that. I don't know what I would do without them.

9. I managed to make a videogame while dealing with the UK trans healthcare hellscape

I'm still trying to deal with the trans healthcare system now and it sucks. The whole process is immensely frustrating, and it has made it a lot harder than normal to live my life and do my work. So I'm proud that I managed to develop and publish a game under these conditions, and even managed to push myself to improve at pixel art and give writing a try.

What Went Wrong

1. It didn't make much money yet (as of December 2023)

I worked on Ducky's Delivery Service full time, and it has unfortunately not made enough money to cover the time and money that I spent on it. If you're curious about the details, here are some rough numbers (in US dollars).

Costs

  • Prototyping various ideas and choosing this one: 2 months of full-time work
  • Making and publishing the game: 13 months of full-time work
  • Contractors (localization and promo art): $3000
  • Business admin costs (15 months of accountancy fees, business insurance etc): $2200
  • Total: $5200 and 15 months of my full-time work

Revenue

  • Around $4500 (so far)

Profit

  • A loss of around $700 and 15 months of full-time work (so far)

On the bright side, people will probably keep buying the game in the future. It will almost certainly end up covering the remaining $700 of the direct costs, but it probably won't come close to paying minimum wage for the time I spent making it.

For a comparison, Chessplosion had a similar development cycle and similar contractor/admin costs. It brought in around $12000 in its first 5 months of sales, and a total of around $23000 so far. So around 3x the revenue of Ducky's Delivery Service.

I'll talk a bit more about my long-term plans at the end of this postmortem, but I should clarify that I'm doing fine! My current living expenses are low, and I have enough savings from previous work that I can keep on making my own games for a long time.

2. I got tricked by Steam wishlist numbers and event coverage

It's hard to guess in advance how many copies a game will sell, but one way is by looking at how many people have added the game to their wishlist on Steam. Ducky's Delivery Service had more pre-launch Steam wishlists than Chessplosion, and it was also featured in all the events that I mentioned earlier. I even forgot to set a launch discount for Chessplosion on Steam, which surely must have negatively affected its launch week numbers. As a result of all this, I thought that Ducky's Delivery Service was going to sell more copies than Chessplosion.

So I was shocked when its day 1 sales on Steam ended up being under 15% of Chessplosion's. I'm still not entirely sure why the wishlists-to-purchases ratio was so different, so all I can do is guess:

  • Maybe Chessplosion was an outlier because of its exceptionally lucky day 1 streamer coverage or its online multiplayer functionality. I know I'm personally more likely to buy a game right away if all my friends are playing it together online.
  • Maybe Ducky's Delivery Service was an outlier because its cute "wholesome" art direction was enough to make people add the game to their wishlist, but its strange gameplay either didn't appeal to those same people, or meant that they didn't want to risk buying it until it's on a deep discount.
  • Maybe people have seen indie devs asking for Steam wishlists recently, so they're more likely to wishlist upcoming games "for the algorithm" even if they don't necessarily plan on actually buying them.

Who knows? On the bright side, at least I know that I shouldn't try to directly predict sales figures from wishlist numbers in the future.

3. I spent too long worrying about mass appeal

Even though Ducky's Delivery Service is the exact game that I wanted to make, I wasted far too much time stressing myself out over whether or not other people would be interested in that kind of game. I even prototyped some game features that I thought made the game worse, just because I thought that they would make it appeal to other people more.

Thankfully I didn't put any of those features into the final game. But I would have saved myself a lot of time and stress if I didn't even think about doing that in the first place.

4. The music took way too long to make

I tried to push myself to get better at music and pixel art on this game. The pixel art turned out great, but my initial music plan was way beyond my current skill level and it caused me to waste lots of time and stress myself out.

I wanted to go for upbeat jazz fusion with realistic-sounding instruments, along the lines of modern Sonic the Hedgehog games or other "blue skies" arcade-style action game music. But I didn't have any experience in arranging that type of music, I didn't have any idea which synths or sample libraries people used for composing that type of music, I didn't want to spend a ton of money on sample libraries, and I didn't have any mentors to ask for advice on any of these things.

This felt like it was going to be difficult so I ended up putting it off for longer than I should have, and once I started I struggled to make any progress. After spending a month flailing around and completely failing to make anything that sounded the way I wanted it to, I eventually gave up and made something more like Chessplosion's music instead. I like the final music, and I could have saved a lot of time just making music that sounded like that in the first place.

I'd still love to learn more about arranging and producing more types of music. But I should try to do it in my own time for fun, instead of attempting to do it under the pressure of an impending deadline.

This was by far the biggest cause of wasted time during the game's production. In part because of the time I directly wasted trying and failing to write music that fit my initial vision, and in part due to the knock-on effects to the game's schedule that I'll talk about next.

5. I announced the game too late

I didn't announce the game until March 2023, when it was already around 80% complete. I could have released the trailer, announced the game, put up its Steam page and started spreading the word several months earlier, but I hadn't composed any music that I could use in the trailer. Another reason to make the music earlier next time!

6. I released the demo too late, and no one saw it on itch.io

I didn't release the demo until May 2023, when the game was almost complete. I could have released the demo much earlier and gotten more feedback from players, but I hadn't finished composing the demo's music yet. You get the idea.

I also set up my game's itch.io page wrong, by making it a paid game with a free demo. It's fine to set up the page this way when the game is out, but unreleased paid games are unlisted on itch.io. This meant the game was essentially invisible on itch.io until its release date, and no one saw the demo there. Thankfully I got plenty of demo feedback from Steam players but I would have loved to get feedback on itch.io too, so next time I'll make sure to set it up in a way that people can search for and play.

7. I didn't give contractors any deadlines

I like making games by myself and I don't want to be anyone's boss. But I can't draw my own promo art or translate my games into other languages, so I need to hire contractors to do those things.

I've worked for bad bosses and clients in the past, and I never want to be a bad boss or a bad client myself. So in addition to paying contractors well, I decided to reach out to them long before the game's release date and let them work at their own pace instead of giving them a hard deadline. That's how I work on my own games, after all!

However, it turns out that a lot of people want deadlines, and they use them to decide which order to do things in. So if a task doesn't have a deadline, it will never get done.

In the future, I'll negotiate some deadlines when reaching out to contractors. They'll be very generous deadlines, of course, and I'll gladly renegotiate them later if needed. But I'll at least give them a deadline in the first place, so they can plan around it and use it as motivation to get the work done.

What I'm Not Sure About

1. Most difficult action games don't look or play like this one

Ducky's Delivery Service is a game about a cute duck flying around in a wholesome countryside. It's also a difficult arcade-style game with unusual controls, and gameplay that doesn't quite fit into any existing genre.

There are other games that have combined these elements to various degrees in the past, such as Kuru Kuru Kururin and Space Taxi. Ducky's Delivery Service was also influenced by games like Balloon Fight, Crazy Taxi and Tribes. But for the most part, modern indie games that look like Ducky's Delivery Service usually don't appeal to the same audience as games that play like Ducky's Delivery Service.

I chose this game's art style because I like it! I think it perfectly suits the gameplay, even if the art and gameplay don't necessarily appeal to the same audience.

And besides, I like ducks and other cute things. As a trans woman in her mid thirties who likes weird old arcade games and other strange stuff, I think it's inevitable that my aesthetic tastes aren't going to line up with the majority of people who buy indie action games on Steam. It's just unfortunate that this might affect my revenue a bit.

To make things worse, there are thousands of other new indie games out there. People often have to dig through tens or even hundreds of new games just to find one that they like the look of, so they need to be able to quickly skim through lots of games and instantly reject anything that doesn't appeal to them.

So if you're a small indie developer without a big hit, your safest bet is to stick to a specific genre and make it immediately obvious that your game is in that genre. Even if it's a genre with a relatively small modern fanbase like arcade-style shmups (which I love!), you probably want to make a game that will make shmup fans immediately go "oh this is a shmup, I like shmups, I should take a closer look at this game instead of skipping past it".

Ducky's Delivery Service is unfortunately the exact opposite of this. I can't help but wonder if it would have sold better if I skinned it as a moody game about exploring mysterious caves full of scary monsters to uncover secrets, or if I modified the gameplay to be more conventional. I would never actually want to do either of those things, and if I could go back in time and make Ducky's Delivery Service again, I wouldn't change a single thing about how it looks or plays. But it's something that I should probably keep in mind in the future, if I'm making a game and I'm trying to guess how well it will sell.

2. I did one big launch instead of multiple smaller launches

I decided to try launching Ducky's Delivery Service in 9 different languages at once, with the Nintendo Switch launch date as close to the PC release date as possible. I succeeded, and it's great that everyone got to play the game at roughly the same time! Maybe having one big launch helped the game financially too.

On the other hand, this made it very hard to make any last-minute changes to the game. All of the game's text had to be locked in at a very early date so it could be translated, and any last-minute changes would have to be translated by 8 people and be approved on console.

To make things worse, I lost money on all of the Ducky's Delivery Service translations, and it looks like this is unlikely to change even if the game continues to sell. Paying for all of those translations upfront felt like the right move because of all the pre-launch attention the game received, but if I just launched it in a couple of popular languages, I could have seen the lower sales figures and moved on instead of paying for more translations.

I don't feel too bad about how this went, because it meant that more people got to play the game in their own language and more translators got paid. But I did lose money as a result of this, so it's something to think about in the future.

Things to try in the future if I want to be financially sustainable

My cost of living is low and I have enough savings that I'm not going to run out of cash any time soon. And if I ever do reach the point where I can't make a living from my own games, I'd rather take on some contract work and continue to make the games that I enjoy in my spare time, instead of compromising my games to make more money.

But it's worth thinking about ways that I could become more financially sustainable, while still making games with the type of art and gameplay that I love. Here are some things I might try:

1. Make games that stick closer to a genre

Ducky's Delivery Service didn't really stick closely to any existing game genre, which makes it harder to convince people to try it out. But I love lots of established genres, such as arcade-style shmups, beat em ups and 2D fighting games. I would love to try making games in some of those genres, so I should do it!

2. Make more than one game in the same genre

Some indie developers seem to love hopping to a new genre every time they make a videogame, but I would love to build up more experience in my favorite genres instead. I'm currently working on a prototype for another Chessplosion-style grid-based action game, which meant I could reuse all of the movement code instead of having to design and program it all again from scratch. I'd love to eventually make several games in the arcade genres that I just listed, or maybe even another game with Ducky's Delivery Service movement physics!

3. Release demos earlier

It's hard to guess how many people will buy a game, but a great way to figure out whether or not your game is appealing is to release a demo and see if people are excited about it. I really want to do this more in the future, so I'm going to try and get demos of my next games out there as early as possible.

4. Make smaller games and spend less money on them

If I want to make another strange genre-blending game like Ducky's Delivery Service, or if I release a demo of a game and people don't seem to be interested in it, I should consider finishing the game as quickly as possible instead of adding tons of extra features to it.

I could save even more money by only translating it into a couple of languages at first, instead of launching in 9 languages at once like Ducky's Delivery Service.

I even have the option of releasing my strangest ideas as free game jam games, and then I could only spend more time and money on them if there's enough interest to justify a full commercial release. I know free game jam games aren't exactly a way to become more financially sustainable, but they're a fun way to let me make more of my weird game ideas without having to risk lots of money on them.

5. Give my games extra features (that I actually like)

I spent too long thinking about adding features I didn't like to Ducky's Delivery Service, to give it more mass appeal. But lots of arcade-style games widen their appeal by adding features that I do enjoy. For example:

  • Tutorials
  • An alternate game mode for people who prefer a gentler learning curve, such as an adventure mode that lets you learn one stage at a time instead of having to clear the whole game in one session
  • Optional challenge stages and missions
  • Other alternate game modes, like the ones in Chessplosion
  • In-game goals and achievements
  • Online leaderboards
  • Online multiplayer. My engine has rollback netcode, I should use it more!

That way I get to make the kind of focused arcade-style games that I enjoy, while still having enough gameplay variety for people who want to jump back and forth between different game modes instead of hitting "retry" over and over again on a difficult challenge. None of these features are going to suddenly make hundreds of thousands of people buy a game, but I'm just a solo developer so I don't need those kinds of numbers.

These features wouldn't take up too much of my time either, as I'm much faster at programming and game design than I am at drawing sprites, making levels and writing cutscenes.

6. Just keep making more games

I like making games and I want to make more of them, so I will. Hopefully I'll keep getting better at making games as I go, which should make things easier for me as time goes on.

Building up a back catalog makes things easier too. If I had lots of older games on sale, each of them would only need to sell a few hundred copies each year to cover my bills. The good thing about my cute pixel art games is that they already look old when I release them, so it's not like everyone is suddenly going to think Chessplosion and Ducky's Delivery Service are too ugly and stop buying them a few years from now.

7. Appreciate everyone who supports me

Although Ducky's Delivery Service isn't profitable yet, I'm doing okay. I am extremely lucky to have patrons who help support my work over on Patreon and Twitch. Their support helps me work towards long-term financial stability, without having to rush out buggy games or fret over Steam wishlist numbers.

Supporting my games the old-fashioned way helps a lot too! I self-publish my games and use my own game engine, so when someone buys one of my games, all of the money that normally goes to a publisher and a game engine company goes to me instead. People buying Chessplosion on Steam and itch.io in 2023 helped cover a lot of my living costs!

So to anyone who bought, streamed, shared, or supported any of my games in any other way, thank you so much. I'm grateful for your help, and I hope you look forward to whatever I make next!

Boar gameplay gif

Thanks for reading!

Ducky's Delivery Service is available now on Nintendo Switch, Steam and itch.io!


You must log in to comment.

in reply to @ctmatthews's post:

This was cool to read, thanks for writing it all up, Cassandra!!

Ducky is a super cute & fun little game, and it's clear that you really put a lot of heart into it <3 I hope the sales keep coming in and that you can keep making games for a long while. I'm glad you're gonna keep continuing to make what you wanna make regardless; I think that's gotta be more satisfying in the end, right?

I'm personally very happy for Ducky sharing a release with Bossgame, and for you reaching out to say hi! It was a relief to share all the excitement and stress of a new launch with someone, eheh ✨

thank you so much lily! yes, i'd much rather be in this situation than to have a ton of money and some boring games that i hate. i made some games that i love and i can continue doing it, so i'm very happy with where i am.

and thanks, i'm glad i could share a release date with bossgame too. that was a lot of fun! i'm looking forward to seeing your next game and i love the character in your profile pic!

I'd stick to your game engine if you can. I am likely in a very small minority, but seeing the download size was small made me assume you knew what you were doing.

I hadn't considered the financial risk of translations for a tiny game company. That's a bummer.

i don't plan on moving away from my game engine, don't worry! it's perfectly tuned for the types of games that i want to make, so it lets me work quickly and make exactly what i want to.

as for the translations, the total losses were probably only around $1000 and a couple of weeks of work. not much at all, as far as game development budgets go. but it's the sort of thing i should watch out for if i'm trying to make a living from weird niche games!

Hey I have a question about the game both because I'm curious and maybe it's a useful data point: I've watched the trailer a couple of times now (I saw it around release and clicked through based on the idea!), but I was unsure from the trailer if the game was a low challenge mail delivery thing, a kuru kuru kuruin/lunar lander white knuckle flight thing, or a dust force/neon white "execute a level perfectly" thing? I'm a big kurukuru fan, but less so of the other genres. If I think about why I didn't try a demo/buy the game, that might be part of the reason? Regardless it looks great and this postmortem was really good so thank you!!

thanks for asking! kuru kuru kururin is the closest thing to ducky's delivery service out of those games, but the movement physics are like balloon fight mixed with a bit of jetpack joyride or that 90s flash helicopter game.

the regular stages in ducky's delivery service are about quickly flying from place to place delivering packages before you run out of time, crazy taxi style. there's a "boss" stage at the end of each world that you just have to fly through from start to finish without taking too much damage, just like a regular kuru kuru kururin stage. in short, it's part kuru kuru kururin and part crazy taxi, with balloon fight physics.

there are also some optional time trial challenges (delivering flyers) which are more of an "execute a level perfectly" thing like dustforce or break the targets in the smash bros games. and for people who hate time limits, there's a "relaxed mode" option that removes the time limit from the regular stages and replaces it with a healthbar. but for the most part, it's a mix of crazy taxi style arcade delivery stages, and kuru kuru kururin style survival stages.

Thanks for the insightful and transparent post.
For the last few years now, I've been wary of buying any game that doesn't provide a demo that represents the final gameplay. I've been burned so many times by games that "looked really fun", but played like ass. I'd be curious to see if adding an updated demo would affect sales. (Sadly, Steam doesn't notify wishlisters when a new demo becomes available, so it would be an imperfect experiment.)

thanks! there's always the chance that a demo could improve sales, but i'm just one person and right now there are other things i would rather spend my time on than creating, testing and supporting an updated ducky's delivery service demo.

for what it's worth, steam has a very generous refund policy these days! i've bought a few games that either weren't fun or gave me severe motion sickness, and steam always gave me a full refund at the click of a button. it's a little bit more friction than a demo, but it's a good workaround when demos aren't available.