The mobile games space has always been something interesting to me, I worked on some games in the past and I really enjoyed how motivating is to work with them. It might seem super fun to work on games, but sometimes it can be more frustrating than working on utilities or other kind of applications, but in general my experience has been pretty good so far.

As you might now, if you follow me on Twitter I am personally switching from long term jobs, to contracting in less than a week. Starting from February 2017 I will be on my own path for the very first time. This switch is a major change in my career and it convinced me to create some apps in the free-time to show up what I a can achieve. I consider myself lucky to have found an (amazing) opportunity right away, so my free-time project became pretty much useless for its primary scope, so I decided to resuscitate a project old of almost 5 years, written in Objective-C and based on Parse, to see how the indie market is, more specifically the social games market, definitely the most competitive and difficult market to jump into for an indie developer.

I decided to invest some time on this project again because I have a similar game in mind, with a proved concept which might have a very good potential. I explained the idea to a lot of people and everybody loved it, but not knowing how the space is right now, prevents me to really invest time and money on it. In this situation the decision of trying with an old project and to make some experience while sharing the outcome, felt almost natural to me.

Preface

Game Type

I always been a big fan of word and math puzzles, so when a former colleague created Hello Words, something snapped in my mind and I wanted to create something with a similar gameplay, but different mechanics. Hello Words has been a game with a great potential, great execution, but in my opinion, it deserved way more attention. A similar game got the mass attention and dominated the space for some years.

So I started to work with Parse and on iOS about, I called the game Wozle (after some iterations) and I arrived to have a stable version ready for being beta tested, but then my fear of public opinions and of the competitors (plus I did not want to compete against a colleague) stopped me and I never started the submission process. I even never made a real beta testing phase and on November 2011 the project was abandoned.

Technical Implementation

So fast forwarding to 2016, I started to migrate the project on the first week of September on my spare time, the transition from Objective-C to Swift 3.0 (which was still in beta) has been extremely simple, considering my experience with both programming languages. The code looks more concise, clean and easier to grasp. The general feeling of instability I had with Objective-C in some parts of the gameplay just vanished, replaced by a good dosage of confidence.

Design

I haven’t invest any money on the design, I decided to keep it simple and flat and focus on a good usability, checking Dribbble for inspirations. For icons I am relying on Flaticon.

To sketch and design my favorite tools are Sketch and Affinity Designer, the latter is definitely my favorite tool so far and a great replacement for Adobe Illustrator.

Server Side

Parse is going to be “dead” as service in less than 2 days, so I had to migrate to a different solution. I evaluated a couple of alternatives:

Firebase

Firebase it seems to be the natural alternative to Parse, it’s made (acquired) by Google, it looks not so much expensive, it has been created originally for gaming and has a bit community around it, so almost any problem can be solved in matters of hours on StackOverflow, but… the biggest disadvantage is the lack of server side logic, which is an important condition in my project. I could have moved the whole logic to the application, removing game computation from the server, but I did not want to do that. I still decided to use it for hosting the website, crash reporting and analytics, so I can’t say I totally excluded this service.

AWS Mobile Hub

AWS is definitely the most favorite cloud platform, it’s there since a long time, it hosts big companies and provides great services. I gave a try to Lambda and the fact that Cloud Logic is there to create server side data processing, made me very happy. Unfortunately this solution did not satisfied me and some of the concerns are summed up in a nice article on Datawire.io. To be honest, most people reports to be very happy with AWS, so I would say it’s a personal preference.

CloudKit

I never used CloudKit, so I had to start from scratch in checking it. The limitation of being only on iOS (or web considering there’s a JS framework) was not a problem (now, but if the plan is to have an Android version as well then things are really different), but my general feeling and the fact it requires an iCloud account to save any data drove me away from this solution. I had no real necessity to store data, but in case the game gets its place in the space, a stats features will be definitely required and data storage is going to be necessary to keep word stats only available to the original user.

Parse Server

Last and the final solution: hosting Parse server. I had no data, so the migration was simple and straightforward, the only problem was deciding which host to pick. I won’t describe the long process, because there are plenty of articles about each platforms and here, to be honest, it’s a matter of preference, but I decided to go with Google App Engine even if market as “beta”. So far the experience has been great, I have a Node project written in Typescript which compiles to JS and to deploy, after some configuration (really simple and quick), I just have to run:

$ gcloud app deploy

The 300$ voucher which can be spent on Google Cloud in 2 months helped a lot, but they are not the only ones doing this, so, it’s really a preference. For MongoDB I opted for mLab, starting with the 15$ monthly subscription and scalable at any moment if the game gets successful beyond the expectations.

Preparing for submission

The preparation for the submission has been a long journey, I started to prepare on end of September, following a clear task list.

Website

The website is a primary resource for a game, but on Social Games, it’s way more important to have a Facebook page and the dedicated integration. This game is using Facebook, but it has also the possibility to play as guest, so a casual player can play in just few minutes and give to the game a try before committing to an account linked to his FB’s profile. For this I used Launchaco, created the Facebook page. The website is a

Analytics

Analytics is an important part of understanding how users are behaving, but also how the game is doing in terms of performance. In these days, people are installing less apps than in the early days, so if I want to be in that installed apps list, or at least have a chance, I need to understand how the game is performing and what is not working, acting rapidly. I created many events in the game and this is tracked in Google Firebase Analytics and the website is on Google Analytics, of course.

Crash Reporting

Yeah, they happen, no app is perfect and a crash is a bad thing, of course. If a user reports a crash I learned that fire back is not the way to go, instead is better to investigate the report, eventually releasing a message in an immediate channel (Twitter, Facebook) about the ongoing process. Communication is a key, so does the quick fix and a fast iteration, but the former is way more important.

It’s better to take 5-6 days, with a good communication to fix something, rather than silently fixing it in 1-2, even if the latter seems more logical, the former pays back in terms of user satisfaction and retention. Please correct me if you have a different experience on this, I would love to hear how you managed these kind of situations in your apps.

Advertising and Marketing

Advertising/marketing is not just buying ads on Facebook or Admob, it’s way more of that. There are some good websites providing an amazing service to indie games such as TouchArcade, IndieGameReviewer and Gamasutra, but I have to take in consideration some of these can ask for a paid review, so I won’t expect anything on that side, but I can focus on free media like Reddit or even HackerNews considering this post.

I have some budget to spend (tiny), nothing compared to what big companies in the space can spend, but I would like to fully understand what a single (or small team) indie development project can achieve in this space with a limited budget, so I will put some money on Facebook Ads and probably Admob.

Monetizing

My plan is to have a classic free-to-play with in-app to remove the ads, for this reason I opted to use Chartboost for the rewarding video which entitles 3 extra games and AdMob for all the other ads in the game. My expectations are pretty low here, I have a basic understanding of what CPM, CPC and CTR are, but I am not an expert, I hope to learn more during this project.

Beta Testing

For the beta phase I used BetaFamily (free), Reddit and some friends and my family. I had around 50 players using the game and, to be completely honest, only 2 were actual good testers. If you plan to run a beta testing phase and never had one, remember that good beta testers are gold, so keep them close to you once you started!

All the articles, tweets, opinions about beta testing a social game say that a big beta user base is necessary before starting, I think it’s true, but it also really hard for a first timer to build such a big user base. I am curios to see the days after the launch of the game will perform and analyze the details.

What’s Next?

I currently submitted the application on the App Store, the status is “Waiting for Review”, considering the review time is now around 2 days, it should be available for release in a couple of days. I prefer to release the app manually, so I will prepare the website for the launch, create a couple of ads on Facebook and check how the phase performs.

A week after the launch I will collect all the data and create a new post showing hot the game is performing, eventual improvements and hot-fixes. So stay tuned!