The Story of a Clone


By three methods we may learn wisdom:
first, by reflection, which is the noblest;
second, by imitation, which is the easiest;
third, by experience, which is the bitterest.
Confucius

One cool spring evening in 2013 I got the urge to make my own take on that lovely old game Scorched Earth, but with a few twists of my own. In a good mood with upbeat music playing, I dove into coding using whatever IDE and framework happened to be at hand. By a cruel irony, that turned out to be WFP for the Windows 8 Store. For projectile flight and environment reactions I picked up Farseer Engine — a C# port of Box2D.
I honestly don’t remember anymore how I went from the idea of destructible ground and ballistic missiles to catapults, block structures, and a solid, unbreakable landscape. And that’s how the two-year story of my Angry Birds clone began.

Summer

I’m a lousy artist, so from the start I planned on outsourcing the content. It’s obvious that clone-making isn’t a profitable business to begin with, and a homebrew clone of a hit game will always lose to the original, so I wanted to knock together some light trash in a month or two and earn myself a couple of beers. That meant minimal spending on graphics, possibly borrowing from other games. I put together an alpha out of borrowed content and was sure the game was already a third done, but once again fate had other plans.

In exchange for a debt owed on another project, some acquaintances agreed to provide me with blocks for the game. They commissioned them from a professional artist who was freelancing at the time and threw himself fully into the task, rejecting the whole “trashy” idea and any copying of blocks from the original. The blocks came out glossy and beautiful — and completely incompatible with my attempt at a “backdrop” cobbled together in Photoshop from pictures scraped off the internet.

So I decided to contact the artist directly and commission background art for the game’s locations. What came out of it turned everything upside down. The location artwork looked like a genuine work of art next to the rest of my content and the weapon models my buddy had thrown together in 3ds Max.

Slowly it dawned on me that the project was moving up to a whole new quality tier, and things snowballed from there: to match the location backgrounds I commissioned illustrations from another artist, reworked and redrew the weapon models myself in both 3D and 2D to fit the style, learned to work with the Gleed2D editor’s format and started drawing levels one after another, commissioned ambient music for the locations, bought a soundtrack for the main theme, and much, much more. To keep the game from being “just a clone,” I came up with a killer feature: the enemies started snapping back and attacking the player.
Summer was coming to an end.

Autumn

By the time autumn came around I could already see that I’d set the quality bar way too high while resources stayed way too thin. By then I’d gotten decent at drawing stylish frames and buttons in Photoshop, managed to turn three different mages into all seven of them using filters and effects, edited sounds and music, tweaked the color palette of the illustrations, negotiated with the local Microsoft office about featuring and test devices, dreamed up close to a hundred different levels, and wrecked my eyesight down to 0.1 on the Sivtsev eye chart in the process. My wife was seriously eyeing the suitcases — hinting it was time for a trip to the sea; I was doing all the work on the game myself, and my head was boiling. A week’s vacation eased my brain a little, but didn’t really change anything.

Amid all this, I rarely stopped to ask myself why the focus had shifted from a “trashy little clone” with stolen graphics into a full-scale project with a hundred levels, while for an engine I was using WPF Canvas, Rectangle, and ImageBrush. I got that unholy combination reasonably well debugged, used complex transforms, faked a parallax effect for the backgrounds, even though each such trick cost me an unforgivable amount of time. For a while I told myself this would all give me coverage across four platforms at once: desktop Windows, Windows Phone 8 for mobile, Windows 8 for tablets, plus a Silverlight version for the web. And for Android and iOS I’d figure something out later. At least Visual Studio didn’t give me much grief, and Microsoft supplied me with the devices and licenses.
Around the same time, through an incredible effort, I did a semi-automatic port from C# + WPF Canvas to JavaScript + HTML5 Canvas, to enter a Tizen contest and just get onto the web in general, and maybe onto other platforms without native coding.
A version went up on the Tizen Store, Windows Marketplace, and Windows Store, and three of five locations were done, by the time the first snow started falling.

Winter

I went into the cold season with cautious optimism — the reviews I’d paid for and the Microsoft featuring were driving a lot of downloads, though the game brought in very little revenue — around $50 over a month and a half, even though I’d spent four times that on reviews and advertising. I put it down to a pile of factors: Windows Phone’s lack of popularity, the low-key monetization through in-app purchases, and so on. The last two locations stayed locked, but I still couldn’t find the strength to build levels for them and ship a major update. The web version ran painfully slowly on the Tizen emulator and on Apple mobile devices and cheap Android phones, so it was abandoned.
Around then the idea came to put a desktop version up on Desura and Steam. Desura was no problem, but Steam turned out to require a complicated community approval process through Steam Greenlight. It was in the Greenlight community that I first heard the opinion that the game was crap.
Then came some relative’s birthday, and I handed a tablet with the game on it to my 12-year-old nephew. He honestly played through 17 nearly identical first levels, tried level 18 three times, and then started looking for something else to play on the tablet.
By the New Year holidays revenue had crept up to $100, which, together with selling off some contest prizes, managed to cover roughly a third of what I’d spent on graphics and advertising.

Spring

By April, downloads on Windows Phone had settled at 0-3 a day, and up to 5 a day on Windows 8. It was time to shut the project down, but the thought of finishing the last two locations kept nagging at me — just somehow differently this time. I posted an ad looking for a level designer to draw 30-40 new levels and adapt the old ones. Before long an interesting candidate turned up, we got talking, discussed the situation, and once again I heard that the game was crap. The guy turned out to be an experienced game designer, and instead of having him build levels I commissioned a detailed plan from him for reworking the game for maximum appeal and playability. Another contractor agreed to do the levels (and didn’t miss the chance to declare that all the existing levels were crap too), and it seemed like everything might come back to life, especially on iOS. And then WPF landed its treacherous blow — the code flatly refused to port to native CGLayer and the like. Essentially, I needed to move to a proper engine, but I had neither the energy nor the will. I thanked the level designer and the game designer, paid them for their time, and shut the project down.

A Year Later

Over the next year I managed to recover from the heavy defeat, shipped a handful of small projects and two medium-sized ones, and worked on a commercial project for a telecom giant. The clone was successfully forgotten, its content and code sitting archived, but then suddenly, in the autumn of 2014, a message arrived saying the game had been approved on Steam and could be put up for sale. It was strange, it was surreal, and it stirred up a flood of emotions. But I didn’t act on it — I really didn’t want to put the project out there just to hear, pardon my language, that it was crap again.
Meanwhile my homegrown OpenGL 2D engine, built for a Point&Click quest, had unexpectedly matured and become quite stable, and it let me write business logic once for iOS/Android/WP/W8/XP/Mac all at the same time. A bit of a homemade wheel reinvention, but one that suited me much better than Unity and friends. Around this engine I came up with yet another small “two-month” project, and at the start of summer 2015 I reached out to last year’s level designer to work out levels for the new game. In the course of talking with him and a new partner, the heretical idea was born to revive the bird clone on the new engine. A couple of experiments showed it was now many times simpler than a straight port from WPF to native iOS graphics.
As a result, the new project was put on hold and we spent two months rebuilding the game. 80% of the old levels were thrown out, the gameplay was reworked according to last year’s game designer’s plan, repetition was cut down, the graphics were improved, all the locations were implemented, and so on. In short, the game got a second birth, and along the way we made achievements, trading cards, and badges for Steam.

Release

Last week I released the game on three storefronts at once — iOS, Android, and Steam. The first two free with in-app purchases, on Steam paid, for roughly a dollar. Naturally, it didn’t go without last-minute patches; there were bugs and crashes, levels that suddenly turned out to be unbeatable, and so on, but I managed to sort it all out quickly. The Steam community took to the game quite positively — negative reviews came to only about 20% — purchases are still coming in, a few people have already finished the game and grabbed all the achievements, cards are being traded, and screenshots are being posted.
In short, this would be a story with a happy ending, if not for the numbers on the iOS and Android versions — the launch featuring and a review on 4pda made it clear that we had all of 50 players and not a single purchase. Which isn’t exactly surprising, given that Angry Birds 2 came out the very same week, where, apparently, the pigs can attack the player too…

Summary

Two years flew by very fast, and it was mostly downs with hardly any ups, but there’s still something that gives hope. I was genuinely glad the Steam community accepted the game overall, and as a developer I couldn’t help but be pleased with how the cross-platform engine performed. I gained a mountain of useful experience — I stepped on and ground through the “let’s build it without an engine” rake, learned how to ship a game on Steam and integrate achievements. And most importantly, I can now soberly judge my own capabilities and see which tasks I can handle alone, which need a team, and which aren’t worth taking on at all.
And one last piece of advice: don’t make clones!

Originally published on Habr, 2015-08-01.