I’m not used to this. I used to see each challenge as an opportunity, but now I’m sitting here totally confused, not sure what to do next…
It all started very simple, “Lets add Android” she said. “Should be easy” I replied, “After all, we can reuse the icons!”. You should know that we are all developers, we don’t have a single drop of designer blood in our veins. Writing a thousand lines of code feels like a breeze, compared to the storm of designing a 16×16 icon! I have personally spent hours and days trying to create a “simple” icon that later we decided to throw away since it reflected my lack of artistic vision (you are welcome by the way). So, when I thought about porting the iOS apps to the Android, it didn’t bother me that I don’t know Android! It just was a relief that we don’t need to design those damn icons again! Even later on when I created a mental list of the challenges that we need to tackle, I didn’t think about coding Android. The title that was blinking in my head was “Damn, we need our own servers!”.
Game score, user ranking, matchmaking, friend invite, achievements, … . All these services are available on Apple platform for free as long as you stick with their servers. But if one day, god forbid, you want to dip your toe in the ocean of multi-platform games, you are fucked. You would need to create all these services yourself. Some of them are easy to implement some of them are not. But regardless of difficulty, any sort of multi-platform communication, should go through your own servers.
I don’t know how much experience you have with backend development, but you don’t have to be a genius to realize servers need constant maintenance. You probably don’t want to be the one who needs to wake up at 3 a.m. to restart the server! Thankfully, it is not that expensive to piggyback on the infrastructures of one of the technology giants. The price? You have to learn their APIs and work with their limitations. Limitations that are waiting for you in the deepest and darkest corners of their documentations.
Google App Engine. One of the miracles of our time. “Deploy your code with a simple click of a button”. And of course the famous bigtable. This magical land of data. Sounds exciting. Right? So, you roll up your sleeves, shake your dusted mind and start working. It truly is a drug, the nostalgic feel of writing servlets and listening to hotel California… Its all fun and game until the day you realize you have built the whole app around sockets but the platform doesn’t support socket connections! “Such a lovely place, such a lovely face.” You are so deep at this point that you can’t jump to another platform. “You can checkout any time you like, But you can never leave!”
The options are limited to server ping and push notifications. The first one is expensive for users, the second one is lame. Its like when you are driving at 90mph facing a cliff, realizing your brakes are not working. None of the options lead to your favorite ice cream shop!
So, you go with the most rational option and start reading more documents. How to setup the certificates and send push notifications to apple devices using Google platform. Not that hard actually, and after a couple of weekends you make it work. Very reliable. The caveat? You can’t send push notifications to users without their permission. My guilty pleasure has always been to block the games that request push notifications. It’s against my ethics to expect otherwise from our users!
Push notification, unfortunately, is not the only issue we are facing. Let’s go back to the list of services we missed due to establishing our own server. You know how easy it is to invite a friend to a game? Well, it is not that easy anymore. Since Apple doesn’t give us the list of user’s friends, we need to get it from another source. But from whom? Luckily this is a no brainer. Facebook has a wonderful SDK for iOS platform. So, you spend a couple of more weekends understanding their nice APIs and creating a prototype only to realize the information you can get isn’t really useful! If your users really really trust you and give you all the permissions you asked for, then you can get a short list of their friends who not only installed your app but also gave you all these permissions! In practice, this means an empty list for most of our users.
At this point I’m just not sure if the blueberries even care for a cozy and warm waffle. Maybe we should cool if off a bit. Maybe a cold blueberry smoothie is good enough!