The Early Days
Now that Meteorfall has been out for a week, I wanted to do a retrospective of Meteorfall’s development cycle, as well as share some of the financials. I’m sure he wasn’t the first to do so, but I give a lot of credit for Meteorfall to Arnold @ Tiny Touch Tales and his transparency into the financials of a small indie developer. It was from Card Crawl’s astonishing first year and healthy long tail that I realized that even a single developer could still compete on mobile if they had something to offer.
The idea of what Meteorfall would ultimately become evolved during the development. My original idea was a game I called ‘Swipe Royale’, based on the very popular Clash Royale. It would be a single player campaign style version of that game where you’d fight through a series of different armies before winning the final battle, upgrading cards along the way. In terms of actual gameplay, there were 3 actions – swipe left/right (deploy a unit into the lane) or swipe down (skip the card) Basically you’d build an 8 cards deck like in Royale and then you’d draw a single card. You’d have to consider your current mana – is this the card you want to play, or should I skip it and try the next one? The gameplay was real-time, and as you deployed units, they’d march down the field to engage your opponent. This one never got past the idea stage, but you can get an idea of how the swipe mechanic lived on.
Not surprising that a game called ‘Swipe Royale’ would borrow some art during the concept stage!
I did really like the swipe mechanic, and so I thought back to the origins of the swipe, which came from Reigns. As evidenced by Reigns/Tinder, there is something really natural and fun about simple swipe actions on mobile. I started to conceive of a game like Reigns, but with more game and less story. I imagined you progressing through the story, gamebook style, and you’d add in various cards to your deck. Unlike Reigns, there would be a mix of both story cards as well as cards that you’d acquire that would allow you to attack enemies that would come up. I still think a gamebook but in the style of a card game would be pretty interesting.
Board Game Influence
The idea sort of evolved from there into Meteorfall. I started researching different card game systems to see if I could find some inspiration to make my concept work. I play a lot of board games, and so I looked at games like Big Book of Madness, Overpower, Thunderstone, and One Deck Dungeon (among others). Eventually, I kept coming back to one of my favorite games of all time, Dream Quest. I realized that a similar type of game could work with the swipe mechanic, and I started prototyping the game in Unity.
My background is in software development, although I currently work full-time as an engineering manager. Meteorfall was built over the course of about 10 months part time. I averaged about 10-15 hours a week depending how busy I was, and I carefully tracked the time to ensure that I would actually compete the project. I had a minimum goal of 25 ‘pomodoros’, which is an atomic, 25 minute unit of time.
The Pomodoro Technique
I have a tendency to get bored with game development projects, and I have tons of unfinished concepts kicking around in my Unity folder. My previous game, Tales of the Adventure Company, only took 3 months to development, and the idea of spending almost a year on a game seemed impossible.
I started researching time management techniques and eventually came across one called the Pomodoro Technique. In this technique, you work in atomic 25 minute units of time. Atomic here means that the time is unbroken – the idea if that if you’re interrupted or need to stop for some reason, you start that pomodoro over. The idea here is that you’re totally focused on the work for 25 minutes and after that, you can take a 5 minute break.
This immediately clicked for me. In the age of the internet, it’s so easy to get distracted – checking social media, getting messaged by a friend, checking Twitter, etc… But when I was working on a pomodoro and the clock was running, I found out that I was remarkably focused. 25 minutes was a lot easier for me to handle than the original one hour goal I’d originally come up with.
Because I tracked and graphed the pomodoros and had a minimum time target to hit each week, I quickly found an added benefit – I’d managed to gamify the development. And if there’s one thing I love, it’s games. I quickly found myself trying to push harder and further in order to try and beat time records in previous weeks. More often than not, I was able to push past the 10 hour per week goal up to 15+ hours.
The above chart shows the amount of pomodoros I completed each week. The target was 25, and you can see that I was able to complete that every week. In October or so, development was winding down and I was mainly focused on critical bugs and other issues that the beta testers were raising. It was also the holidays and I had been putting ~15 hours/week in on top of my normal job, so I took a much needed break. During this time, I was also doing some marketing type tasks such as messaging various members of the press to let them know about the game, so that’d it be on their radar. At the very end, you can see the spike which reflects me getting back to business – plenty of bugs, fixes, and other improvements to make.
465 Hours Later…
All in all, I spent 465 hours (~540 pomodoros) developing Meteorfall, which is about 3 months of full time development (assuming I worked 5 days a week, 8 hours per day) In reality, I spent about 1.5 hours per day and usually more on weekends. Though it was sometimes difficult to work on the game after a full day at work, I did appreciate the flexibility to work whatever hours worked best for me.
Development Environment & Other Technical stuff
I think my development environment is pretty standard. I did the majority of my development on my Windows 10 desktop with Unity/C# and Visual Studio.
Unity Cloud Build
All my builds were done with Unity Cloud Build, which is so much better than doing local builds. It also let me do iOS builds from Windows, which was a really nice bonus. Android builds take a couple minutes and really broke my workflow, so sending all the work to the cloud was a huge time saver. Cloud Build costs money now, but I still think the time savings is absolutely worth it. I hooked it up to Slack and had it push me a notification whenever a build finished, which allowed me to quickly deploy to Android/iOS without having to hook up to my PC.
Slack integration with Unity Cloud Build made it really easy for me to test builds during development
Game Data in Google Sheets
Much of the app data is stored in Google Sheets. This includes stuff like what’s contained in each starting deck, what cards the monsters have, and the distribution of cards for each character. I export the data to .tsv format and read in the file at run-time to build the loot tables and enemy decks.
I used Github for source control and it came in very handy. I’ve known developers that developed everything locally and I just have to say: please don’t 🙂 Github was helpful for the few times I needed to revert a change and for establishing version history, which allowed me to better understand when/why I made certain changes.
Overall, I pushed just under 1200 commits in the 10 months that I worked on Meteorfall.
Each ability is implemented as its own class, sharing a base Ability class. All of the info about how much damage the ability does is hard-coded in the class itself. I could’ve taken this a step further and externalized this data but since I wasn’t working with anyone non-technical that might need to tweak those numbers, I saved myself some time. The decision to put each ability in its own class did prove to be pretty useful. It’s quite easy for me to add new abilities, and the implementation of each ability is nicely isolated. Here’s the implementation of Zap, which reads ‘Deal # damage per charge (double if fully charged):
I used Crashlytics for crash reporting. As it turns out, I found the iOS stack traces to be totally useless for some reason, because they lack anything but the name of the exception. Luckily, both Android and iOS use basically the same code base, so I’m able to use Android crashes to debug iOS as well. One nice thing about Crashlyitics besides the automated crash reporting is that it also helps me track trends in the crash. For instance, if I think I fixed an issue but I’m not sure, I can monitor the crash rate for that issue during the ramp up for the new release.
Android has way more active users, but way less sales… hmmm… 😉
A few months into development, the game was starting to become playable. I was confident enough in the idea that I was determined to finish it, and decided to start looking for an artist. By pure random chance, I stumbled across the Behance portfolio of the amazingly talented Evgeny Viitman. I emailed him and luckily, the timing worked out.
What Meteorfall looked like by the time Evgeny joined
The first characters Evgeny created were Bruno and the ‘Filthy Gobloid’ character, and then the rest of the heroes after that. What was really funny about working with Evgeny was that I’d give him a text description of how I thought a character should look, generally based on some sort of archetype (eg: Warrior). Evgeny would take that concept, toss it in the waste bin, and come up with some sort of brilliant design out of left field. A good example of this is Bruno – I imagined some tough looking, heavily armored warrior. Instead, I got silly looking dude with pink tights. I think Evgeny’s whimsical and creative spin on all the characters ended up being one of its main selling points.
An early version of the ‘Upgrade’ screen
The famous ‘Bear Paw’ was also one of Evgeny’s ideas. Originally, I just had some simple tweens which would show the deck dropping to the table or cards flying off the table. Evgeny has a skeuomorphic sense of design, where pretty much everything should have a physical representation. He had the idea that there should be a dealer of some kind, to explain why the cards were being moved around. He imagined having different dealers or arms that might randomly show up, but we eventually just went with the bear. It’s awesome to me how a crazy, random idea of adding an angry bear clearing the table became such a fan favorite.
In case you were wondering where the good ideas in Meteorfall came from
I give a lot of credit to Evgeny for the ‘soul’ of Meteorfall. It’s his unique art style that really sets the tone of the game and captures people’s attention when they see screenshots of it. He was a non-stop fountain of crazy, off-the-wall ideas. There was a fun give-and-take relationship between myself an Evgeny – he’d go crazy thinking of a bunch of cool graphical things we could do, and I’d pull him back to the reality of “hey I need to ship this thing!” The result though was that a) I shipped it and b) Evgeny’s push for graphical perfection pushed me harder than I could’ve pushed myself. I also fed off Evgeny’s enthusiasm, and some of my favorite moments during development were going off on crazy tangents with Evgeny on Skype, brainstorming ideas about how we could make Meteorfall look even better.
For sound, I was fortunate enough to connect with Craig Barnes on Twitter. I’d seen Craig’s work in Miracle Merchant, another great solitaire card game from Tinytouchtales (the team behind Card Crawl). Since Miracle Merchant was also a card based game like Meteorfall, it was easy for me to imagine how Craig’s work would fit into the game.
At this point, I’d downloaded one of those “10000 sounds for $30” packages on the Unity Store and so while I had most of the sounds in the game already, what was lacking was quality. As you can imagine in these one-size-fits-all sound libraries, you get a wide mix of quality, and Meteorfall’s sound was all over the map.
Craig came onto the project and what was immediately impressive was that he really got into playing the game before designing the sound for it. I had a long chat with Craig after he’d been playing Meteorfall for a few days, and I remember thinking that he was the first person that had played it that really “got it”. After that, he took some videos and started overlaying his own sounds onto it as sort of a ‘demo’ of what could be. This served as a guide for me, both in terms of the technical aspect of updating the sound as well as the inspiration / source of energy I needed to put in to overhaul the sound.
Does YOUR sound guy write code for you?
At Craig’s suggestion, we updated the project to use FMOD, which is a killer sound library for Unity. It’s a great tool when collaborating with sound designers, because it allows them to easily tweak the sounds outside Unity. Craig spent a lot of time not just producing the sound effects, but also really thinking about the role of the sound in the app as a whole. He also did a great job critiquing and QA-ing the sound design. Perhaps most impressive to me, he got his hands dirty in the code, and even pushed his changes to Github. For a person that’s focus is on sound – not code – I was really impressed that he was able to integrate into my development process so easily.
The launch for Meteorfall was on January 25th. People started downloading the game and it was honestly pretty nerve-wracking. During beta, I’d added nearly 200 beta testers so it wasn’t the first time anyone had seen it, but it was the first time that people would be paying for it, so the stakes were a lot higher. It also meant that websites would start reviewing it, which was also scary.
The first week was very successful. Reception was generally good. The biggest problem was a series of unexpected crashes on Android with stack traces in Unity itself, which I’m not sure of. They’re spread across a wide range of devices and Android OS versions, which makes them difficult to debug. I did upgrade the project to Unity 2017.3 from 5.6 (which was quite old) and so I’m hoping this will address some of the bugs in the Unity runtime. The other miss on my part was that even though I adjusted the screen UI to fit for iPhone X, the version of Unity I used to build it didn’t support iPhone X. I had at least a half dozen people say that I lost a sale because the game didn’t support iPhone X. Luckily, this should be an easy one to fix.
The other critique was ‘not enough content!’ which as far as critiques go is pretty good. Another way to put it might be “I enjoyed this and want more of it”, and so hopefully I can deliver.
A couple of pieces of positive feedback really stood out to me. The first is that anecdotally from friends and family that don’t normally play games (and certainly not an obscure sub-genre like ‘card-based roguelike’), people loved the game. One might argue that friends won’t give negative feedback directly to the creator of the game but I got the impression that they were genuinely happy with the game. One friend praised the portrait mode, swiping gameplay because it allowed him to play a game while holding his son. A coworker mentioned to me that she’d beat Meteorfall; when I asked her if she played any other games, she only mentioned Candy Crush. I did get a lot of critiques that Meteorfall was too easy / not enough content, and I can see that, coming from more hardcore games like Dream Quest and Slay the Spire. What really satisfied me about these comments though was that it meant that I was reaching non-traditional gamers. The simple swipe left/swipe right gameplay, combined with a fun and whimiscal art style, made a card-based roguelite accessible. I consider that a major victory for myself.
The other highlight for me was a series of tweets that TotalBiscuit sent out to his 700k followers, expressing his amusement at the bear dealing the card. He proceeded to recommend it a few more times, along side other deck building games on iOS. It’s hard for me to say what impact it had on sales, but from a personal satisfaction standpoint, having the game noticed and mentioned by a highly visible influencer was amazing.
And the moment you’ve all been waiting for – sales! I wasn’t really sure what to expect here. I had some rough idea of what could be achieved thanks to Arnold’s discussion of Card Crawl, but it’s hard to know how people will respond to your game. Overall, I was very pleased with the sales. Out of respect for my collaborators, I won’t say the exact cost of the art/sound assets, but I’ll say it’s in the $5000-$10000 ballpark, which I financed out of pocket. I was able to recoup this investment in the first few days of development, which was fantastic. At this point, the only expense was the time I put into it. As mentioned above, I spent ~450 hours during development. This does include non-development activities, such as chatting with collaborators, responding to questions on email/Twitter, and creating marketing materials.
It’s worth nothing that iOS offers pre-orders. This is a fairly new feature and I wasn’t quite sure how it worked since I’m still on iOS 10 (I’m not ready to give up the Touch Arcade app). One nice side effect of this is that new pre-orders get called out right on the front page of the App Store. Some games offer bonuses for pre-ordering, though I didn’t offer anything like that for Meteorfall and I honestly don’t know how that works. Still, being featured in this pre-order section netted Meteorfall 572 pre-order sales. I was also contacted by some Youtubers that were interesting in reviewing / trying the game based on seeing Meteorfall in the upcoming pre-orders section. If nothing else, it can get you some free publicity right on the home page of the App Store.
Top Charts & Features
I was pretty curious to see how Meteorfall would do on the charts. I was overall very pleased with how it did. After release, it was quickly able to climb (and hold!) a great position on both Android and iOS.
On iOS, after the first couple days, Meteorfall (United States) was able to hit #2 in Cards and #1 in Role Playing. I’m not sure how many people actually navigate into these sub-categories, but I considered it a measure of how I was doing relative to peers in that category during that time period. Meteorfall was also able to attain #23 in Top Games, and #49 Overall, which I was super pleased with, especially as an unknown developer on a competitive platform. I was also shown ‘above the fold’ on iPad for ‘New Games We Love’ and on iPhone, was on the third page for the same category. Obviously showing above the fold on iPhone would’ve been great for visibility, but I was satisfied that I made it on this list at all.
#1 in the RPG category and front page under ‘New Games We Love’
On Google Play, things were a little bit harder to track. I wasn’t able to find Meteorfall on most of the obvious lists. Google Play also has a lot of different type of ‘app collections’ that can make it difficult to find things that are actually new. When I did eventually find new/trending games, I wasn’t able to find Meteorfall. When I searched for Meteorfall directly, did have a badge that said ‘#2 Card Game’ and I was finally able to find the list after that. I did later discover a toggle for “Show installed games” (which is off by default) and was able to locate Meteorfall on the top paid charts with a peak of #35 in games and #49 overall. I’m an Android user, but frankly, I think the App Store is optimized much better to highlight new, quality games. Even though I prefer Android as an operating system, I do almost all my mobile gaming on iPad.
#2 Card Game on Google Play
Some developers refer to the home page ‘New Games We Love’ as ‘featured’, but by my definition, Meteorfall wasn’t featured. Generally for what Apple would call a ‘feature’, they would request marketing assets from you. There are various placements where they might feature your app and while I did request a feature from Apple (as I’m sure everyone does!) I did not receive one. That said, I didn’t really expect one. I’m hoping as I built a brand for my games that I can push harder for a featured spot for future projects.
Another aspect of the charting that I found satisfying was how sticky Meteorfall managed to be during the course of the week. I don’t expect this to last, but on iOS for instance, Meteorfall bounced between #25-30 Top Games. I had expected a quick Day 2 spike before fading into oblivion.
By the Numbers
Meteorfall launched on Android and iOS at the same time at $2.99. I had considered doing a free version of Meteorfall with a one-time unlock, as Tinytouchtales did with Card Crawl / Card Thief. I eventually decided against it for two reasons: 1) I felt competing with other paid apps vs. whatever free gatcha-of-the-week happened to come out might help my chart position 2) coming up with a one-time unlock plan and implementing it requires a non-trivial amount of work, and maintenance on top of that. It’s hard to say which is better, though it’s hard to argue with the numbers that Tinytouchtales shared with respect to Card Crawl. One other advantage to the Card Crawl approach is that it nips piracy in the bud. For Meteorfall, Android has 1/5th of the downloads but more than 5x the number of users. I’m not particularly bothered by the piracy angle since those players probably wouldn’t have bought it anyway, but I mention it since having a free version could help if you’re a developer that’s worried about it.
7 day revenue for Meteorfall on iOS and Android (these numbers already have the app store cut taken out)
You can see the breakdown of the numbers by day, per platform above. You can see that iPhone is leading the charge in terms of revenue with about 80% of the total. I’m really happy with how well Meteorfall did financially. I self-funded the cost for the art & sound, and the game was able to pay those costs within the first few days. Obviously, that discounts the time I spent developing the game. Based on the profit in the first week, I’m looking at about $15/hour, but I expect that number to rise as time goes on. What I’m most excited about is having a passive source of income that I can use to fund more content and future projects.
China & ZPlay
One area I can’t talk about is the China region (China, Macau, Hong Kong and Taiwan) I was approached by ZPlay, who had previously published Cat Quest. Based on my previous experience with Tales of the Adventure Company, I figured that if I didn’t do something with China, I probably wouldn’t get many sales there anyway. China is a big market, and I wanted to see if working with a publisher could help me crack it. The sales numbers above don’t include any of the China-region sales, and I’m not able to share details on those.
There’s a lot to do still! I released an iPhone X update on iOS and an update on Android that was built using a newer version of Unity in an attempt to fix some random crashes there (it worked!)
I spent most of the first week answering the flurry of emails and other inquiries about the game. I figured that this would be the busiest week and that being responsive during this time would be really important. As things settle down, I’ll be switching back into primarily development mode. I also did my best to respond to as many reviews as possible. I set up alerts for reviews with 3 or less stars, and tried to respond to these when I could. People seemed really receptive to this, and I was able to recruit some people this way to help beta test new builds to fix the issues they were facing.
Once I get through that, I have a couple balance changes I want to get through, as well as some other bug fixes and Quality of Life fixes. One change I’m looking to make based on feedback is to influence the ‘event generation’ a bit, so that players encounter less events that are useless (such as a ‘Rest’ event at full health) I started a public Trello board where I keep track of known issues / wishlist items, and I invite people to comment as well to help me prioritize: https://trello.com/b/6RpXj76I/meteorfall-bugs-improvements
What I’m most excited about though is adding new characters and cards. I felt like I hit a creative block in terms of card effects towards the end of Meteorfall’s development because I was so focused on fixing bugs and shipping the game. Now that the game has been released, I feel like that block has been lifted and I’m coming up with all sort of crazy new ideas.
Coming soon to a tavern near you!
With the new characters and cards, one of my primary design goals is to design cards that are more complex in the sense that they have more interesting choices about whether to play/skip a card, or whether to take it in the first place. I’d also like to add more themes in the cards to encourage build diversity. This is one area where I feel like Meteorfall is really lacking compared to greats like Dream Quest or Slay the Spire.
Meteorfall was a really fun project and I’m really proud of myself for finishing it. I have a hard time concentrating on game development (on top of my full-time job) and often find myself bouncing between ideas and never finishing them. To focus on a single project for 9-10 months and actually release something is a huge accomplishment for me. Being able to set a weekly time goal each week and actually commit to that was also very satisfying.
This is also my first game project where I’ve ever really had collaborators. For Tales of the Adventure Company, I did all the art and sound myself. I was also nervous about investing my own money into a project a) because I didn’t know how well it would sell and b) I didn’t know if I would finish it. I had so much fun working with Evgeny and Craig on the project. I had always imagined working with freelancers might be very contractual – I give them specs, they send back exactly those assets, done. Instead, I worked with two really enthusiastic, creative people who didn’t just do what I asked for, but went beyond that. Both of them played the game a ton, and we had a lot of great conversation about the mechanics, ideas, and how to make the game better. I definitely fed off their energy and enthusiasm, which kept me going even when I was working on the ‘boring stuff’. A huge thank you to Evgeny and Craig, because I couldn’t have made Meteorfall without you!
Going back to the beginning, I also have to give credit again to Tinytouchtales for their open transparency about game finances. It was by looking at the healthy finances of games like Card Crawl that I was able to ballpark the financial potential of a small mobile card game, and feel more confident about investing money into my idea.
One other aspect of the whole project that I was encouraged by is that despite mobile being crowded by thousands of games with more coming out every week, there’s still room for someone to make a splash. The way I look at it is that your game isn’t competing against the thousands of games on the App Store – you’re competing primarily against the other games launched that week. Mobile moves fast and there’s a near infinite appetite for more content. I know that I personally check the top games every week on both mobile and Steam. I don’t scroll 50 pages through every game ever releases; I see what’s new. Because of that behavior, I think there’s still room for indies to be successful.
If I had to choose a singular goal that I had with Meteorfall, it was that I wanted to make something that would be part of the indie game narrative; the kind of game that you see always recommended in mobile gaming threads. I’d love to hear Meteorfall mentioned alongside other iOS greats like Card Crawl, Dream Quest, Solitairica, and 10000000. I’d love to hear about and play games that cite Meteorfall as a creative influence. Time will tell what kind of lasting impact that Meteorfall has, but I’m really encouraged by all the positive feedback and energy that I’ve gotten about it so far.
I’m really excited to continue adding to the game & expanding the Meteorfall universe (in this game and in others) – I hope you’ll continue to join me for the ride!