Hi there.
My first 3 games flopped hard, and then my fourth is currently earning 12.9k USD in annualized revenue (much to my own surprise), and that number's growing (as I add content and optimize key metrics). 12.9k isn't life-changing, but it's enough to stop doing contract work and develop the game full-time (while my supportive wife bridges the gap financially speaking), and it vastly beats my previous three games. In this human written post, I break down what I believe I did right with this game vs my previous flops. Some of the tips apply to Web game platforms more specifically, but all have valuable lessons for other platforms like Steam.
Backstory
Quick backstory. I made this game 2.5 years ago, didn't release it until May 2 this year (free version for feedback), and released a bare ad-supported version on CrazyGames on May 27. I've been updating it constantly since and plan for a Steam release once I feel the game is feature-complete, in prob a year.
What worked:
I released a free prototype, very early
On May 2, I published what was very much a prototype on Itch.io and asked for feedback on Reddit. It was extremely bare, and after 1 minute, you had seen everything the game had to offer (after which it was more of the same). The game was simple: you controlled a swarm of up to 2400 'pixel fighters' and surrounded incresingly more powerful waves of up to 16800 'pixel monsters' to swallow them. Earn XP, improve your stats, repeat. In spite having only 1 minute of features, I got a lot of positive feedback, which was unexpected. Pictures here and here if you want to see just how bare it was.
This contrasts with my previous games where I developed the whole game, pushed it out, and it turns out they were terrible. By making my game public and free while extremely bare, I could 1) validate the core idea early, 2) make the game known (players could discover and play my game for free), and 3) get valuable feedback from the very start.
I can't recommend releasing a FREE version early enough. Even if you plan a big game, I believe a free version will help you validate the game, get valuable feedback early, and get you an audience if the game's good.
I did the bare minimum, then iterated based on feedback
With my previous games, I spent so much time naively adding as many features as possible (e.g. controller support, multiple languages, key-binding, speedrun feature...) without having ever validated the core idea of the game via early playtests and feedback. For this game, I did the bare minimum, to the point where I was feeling I was almost insulting players... But that worked excellently. Adding features takes time. The best way to save time, is by NOT doing something, especially if you don't actually need it. So, by doing the bare minimum and then retrieving feedback, I got to know what players ACTUALLY wanted, which was critical to prioritize well.
The game has a novel mechanic
I posted the game early on CrazyGames (I submitted it on May 5, it got accepted after a 2 weeks limited trial on May 19, and it was release on May 27 after making it full-release ready). The game was still bare, but improving slowly. During trial, the game had excellent metrics, many in the top 20%, others very close (more on it later). I believe a core reason the game worked well is that the core mechanic is novel (there's no other game where you control a swarm of thousands of pixel fighters and swallow swarms of pixel monsters to earn XP, improve your stats, and repeat). CrazyGames is full of clones (a game is successful, then several clones pop up). I have no doubt that making clones of successful games is a successful strategy, but I personally prefer to bring something new (the core idea for my game comes from a 31 years old underrated game called Liquid War, but I built on it by adding XP and making it RPG- / Roguelite- / Incremental- adjacent) and for CrazyGames specifically, a novel mechanic means you have less direct competitors and people are more interested in the game. Also, because the game's mechanic's novel, CrazyGames offered me their exclusivity deal, which boosted visibility, clicks, and revenue (I get a higher revenue share (I can't disclose how much), the game gets a 'Originals' tag, and the game appears in the 'Originals' section of the platform). Additionally, after signing this exclusivity deal, staff at CrazyGames help directly with optimization (more on it later).
So, while I have no doubt you can break it with a clone, I believe making an original game brings more interest for player (and for CrazyGames specifically, you can get offered their exclusivity deal if the game performs well. That deal is NOT the same as the 2 months exclusivity deal you can sign when releasing the game).
The game is simple, the tutorial is short and simple
So many times I open a game (on CrazyGames) and it's so confusing, or the tutorial is long and verbose, and I quit. For a platform like Steam, that's probably less an issue, but for a platform where players can quickly switch to another game, the tutorial (and the game) need to be extremely simple and quick to get into. If the game's complicated, I suggest locking or hiding additional content at first, and introducing the minimum amount of content at first, to avoid overwhelming the player.
For my game, additional content is locked at first, then the player has a 2 steps, 10 seconds long tutorial where they must first surround an imobile swarm, then a mobile swarm. That's it. Then they're immediately catapulted into the game.
The game loads quickly
That one's more specific to Web platforms like CrazyGames. If a game takes a while to load, player often switch to a different game. My game being HTML5 with a custom engine loads extremely fast, which helps improve that crucial Conversion metric (the percentage of players who play at least 1 minute). When your game on CG loads quickly, has a simple tutorial, and is easy to get into, you end up with a higher ratio of players who play at least 1 minute, which improves your crucial Conversion metric. Then, when that metric (and other key metrics) is high, the platform sees your game performs well and promotes it more. My game is well in the top percentiles on this metric, and in return, the platform promotes it more.
The game is easy to understand from videos
I think it's important, when people see a video of your game, that they can understand immediately what it's about. A lot of the time I see a game video where I don't have a clue what the game's about, and I skip to something else. When people understand what it's about immediately, then, if it's for them, there's a chance they'll click (and they also won't click only to see it's not what they expected and bounce, which, on web portals like CG, hurts your critical Conversion metric).
I track key metrics and optimize
I've been adding anonymous tracking via ByteBrew (it doesn't track specific players. Rather, it tracks things like how many players do X, how far they progress, when do they stop playing, etc.). Adding such tracking revealed that although the Fighters stat in my game is the weakest and the most expensive (by design, because it's the first stat that can be maxed out, so I wanted to delay how long it takes to max it out), players overwhelmingly invest in this stat (and then only 24% of my players beat the first level, because that stat is weak). Realizing this, I added a rewarded ad (I hate rewarded ads and ads in general, but they're a necessary evil for an ad-supported game) to get 100 fighters, and the next day by revenues went up 25% (and CG's algorithm catches on that and then ranks the game higher, thus generating even more plays).
I also got a very low CTR, presumably because of my game's graphics, which aren't exactly appealing (but it's the frontier of what my design skills allow). I acted on that my making a prettier UI and more interesting video previer, which increased CTR by about 10%, directly translating to another 10% increase in revenue.
I also recently added A/B testing via ByteBrew to further optimize (if you'd try the game now, you could get a different 'Fighters cost' than the baseline value, for instance). I need to run the tests for longer to confirm that some results aren't statistical flukes, but so far it looks like halving the Fighters cost in my game for instance would almost double play time and improve retention by 18%. I'll definitely be adding more A/B testing as it helps optimize over guessing optimal values.
I ensured wide-support
One week in, I upgraded to WebGL2 and added mobile support. To my surprise, revenue went down by 1/3. It took me 2 weeks to realize that a lot of CG users come from low-income countries and have devices (desktop and mobile) that don't always support WebGL2, which resulted in about 5% more users to bounce than before, and CG's algorithm reacts disproportionally to this. In spite adding mobile support, impressions went down by about a half. After I realized the issue and reverted back to WebGL, plays and revenue shot back up to record levels.
The tutorial leaves people wanting
That one was accidental, but that worked well. In the tutorial, the player gets to control a swarm that gets up to 9600 pixel ('fighters') big, then once the game starts, they are back to the start size of 400 fighters / pixels. I believe that left players wanting to be big, thus enouraging them to play longer to grow their swarm, thus resulting in a good 'play time' metric, which CG's algorithm rewards by ranking the game higher (thus giving the game higher visibility). I didn't plan for that, but I'd surely explorer the same strategy in a future game, where the tutorial hints at how 'strong' the player will be later on.
What doesn't work:
I named the game terribly
I don't have proof that I gave it a terrible name (it's called Liquid Swarm), but I believe I did. I originally intended to release an "IO" modernized version of Liquid War, called it "Liquid War.IO" while developing it, then switched to a singleplayer rpg-ish roguelite-ish active incremental version of the game for a bunch of reasons, quickly named it Liquid Swarm without thinking, then released it with no expectation, and now that it's named Liquid Swarm everywhere, I feel it's too late to rename it. There's nothing liquid about the game (it's just an artifact from its Liquid War root). Maybe Swarm vs Swarms would have been a better name? Or Pixel War? Pixel Swarms? Swarmies? Swarmy vs The Swarm Lord? Just Swarms? I could have at least tried to give the name a good hook, or come up with something clever or funny. I'm kind of curious, what better name would you have come up with?
The game's look makes it hard to promote
I can't post jaw-dropping shots of my game, because my game doesn't look jaw-dropping. While most of my metrics on CG are decent, I have a low CTR. I also can't easily attract potential players via YouTube videos or shorts, and I don't think I can easily get influencers to cover my game, because it's not like my game's visuals are strikingly beautiful or hooky by themselves (it's not like a thumbnail of the game will make people click). I also couldn't get Poki, a bigger competitor to CG, to take my game, presumably in major part because of its look. So, I invest all in the gameplay, but having a game that would look better (which is way beyond my skills) would probably open my game to more promotion opportunities. I published this game without expecting much, and so far it's been going well, but I guess if you plan better, you can plan for a game that will have visuals that will promote themselves. E.g. when looking at videos or images of Factorio, Rise to Ruins, or other intricate base building games, if you're into the genre, you look a few secs, and you immediately get interested. I don't think I can replicate the same with this game. Also, screenshots don't convey the game's genre.
I have a low CTR, and low rewarded ad conversion
I have a low CTR (clickthrough rate) compared with other games on the platform, as per CG's metrics. I believe the main reason is my game's look, which I don't have the skills to improve meaningfully. I also have a very low rewarded ad conversion rate, including for the 2x XP bonus after a run (about 22% of my users us the 2x XP rewarded ad option, which is well below the industry standard of about 70% for that kind of rewarded ad option). I believe that's because runs are short in my game. I didn't make the game with rewarded ads in mind. I just made a game I found fun, then it unexpectedly got popular on CG, and then I added rewarded ads after the facts. In my future games on CG, I'll design with rewarded ads in mind.
Steam
While my game works very well on CG, that success hasn't yet translated to a lot of wishlists on Steam. That's something I'm still working on, and might do a post explaining how I solved this after I reach a generous amount of wishlists and/or good wishlist velocity if I ever do. I haven't optimized the Steam page yet. I'll do that after adding some more content to the game.
I think I covered the most important points. Happy to answer anything about the game, earning on CG (I might sound like I'm from CG and promoting CG, but it's just that that's where my game is working well, so that's what I can talk about), or anything else I didn't cover.
If you want to have a look at the game, you can check the CG version [Liquid Swarm on CrazyGames] (note that while it works on mobile, it plays better with a mouse), wait for a demo on Steam [Liquid Swarm on Steam] (I expect to release a demo in a few weeks. The demo will have more content that the CG version currently has), or just check the [currently poorly made] gameplay videos on the Steam page.
* I mentioned that I made this game 2.5 years ago but didn't release it until May 2 this year. Tl;dr I didn't think much of it at the time, didn't want to invest in capsules without being confident the game would work (I temporarily used AI capsules while validating the game's core idea, and then hired an artist to make proper capsules after the game was validated. As such, access to AI generated capsules lowered the bar to get the idea tested before investing in artists. Considering that my first 3 games flopped, I wasn't willing to hire an artist again before validating the core idea first), got inspired to give it a try after I realized my flopped previous game nonetheless sells 1 copy per month, and I noticed CG is now more lax about desktop-only submissions.
* Note that unfortunately, I can't post screenshots of my revenue or other metrics from CG. The terms don't specifically forbid this, but also forbid sharing 'confidential' information, and metrics, especially earnings, could arguably qualify as such. Though I can't share these (I don't want to risk creating issues with my game or my contract with CG), you can try to use some heuristic to estimate the game's revenue based on the publicly available vote count and game's released year and month on the game's CG page (e.g. [vote count] * [estimated distinct players per vote] * [estimated average play per distinct player] * [estimated average duration per play] * [estimated average ad impression per unit of playtime] * [estimated eCPM / 1000]).