This week I was investigating what other server technologies I would need to pull off such a game. Clearly Push Notifications will be critical for creating a good user experience with a turn-based game, otherwise you would never know when it was your turn without explicitly opening the game to check.
I spent some time investigating Apple’s documentation on how to write a push server, but I also remembered that there was at least one company offering a push service. So I set about finding more information on them and to see what other alternatives might exist, either paid or free.
Below are the results of my investigation so far.
Off The Shelf
Urban Airship was, I believe, the first push service for iOS. They currently have a fairly generous plan that allows 1 million free notifications per month.
At first, this sounds like a lot, but if you look at the math, those 1 million notifications can disappear pretty quickly.
As an example, say you had a paid newsreader app that pushed messages when new updates were available. You only get paid once for the app, but then you need to pay monthly fees to Urban Airship to maintain those users. Even with only 100,000 users, if you pushed 3 updates a day, that’s 9 million pushes or $2,000/month. It’s quite possible that you could end up with a million users and 10 or more pushes a day if your app was successful. In this type of scenario, Urban Airship would not be a good choice.
Another example. Say you had a turn-based game like Words with Friends with 1 million users, each of whom played only 3 turns a day on average for 30 days, you are looking at up to 90 million pushes per month. Based on Urban Airship’s price tables, you could expect to pay over $10,000/month for this level of service. You would only be able to make this affordable if you were generating ad income or in-app purchases as a result of these pushes.
Urban Airship’s website is very professional and clean, and everything gives the appearance of the system being well-implemented, but I just can’t see spending $5,000 or more per month for a push service unless I was making 10 times that much per month.
Xtify appears to be a newcomer to the push field. Their website does not seem to be quite ready yet and the pricing page I previously bookmarked no longer exists.
That’s unfortunate because I can’t recall how many free pushes they were offering. I’ll have to register with them to get more information. I’ll post a comment here if I get more information.
For now, if you are in the market for a push service, keep an eye on Xtify or register with them to see what they have to offer.
There appear to be a few different options, but the two main ones I found were APNS:PHP and Java PNS.
The APNS:PHP is a PHP-based push notification server. It appears to be quite well-featured and is open source.
The downside of it being implemented in PHP is that you can’t run it on Google App Engine.
Of course it would still be possible to run your push server on a dedicated host and just submit push jobs to it over the network. Depending on the push load, this might be acceptable.
Java PNS is another open source option. This one is more interesting to me since it is written in Java. This means that it can run on Google App Engine, along with the rest of my server code (running LuaJ).
They also have a good How To page with information on how to send a notification.
You’ll still need to pay the cost of the Google App Engine services of course, however, it would be nearly impossible to spend $5,000/month. If you ran one CPU core full-time for a month sending push notifications, it would cost you only $86 of CPU time. Bandwidth and storage might run another $10 or so.
API vs. Database Queue
One downside of both of these platforms in my opinion is that they are entirely API-based. Since my game code is going to be running separately (in a Lua VM) I would like to have the ability to submit push messages through a database queue. This will be additional work, but I think it will be quite useful.
This would give me the ability to easily write a webpage that lets me send news messages and other messages to my users, simply by inserting a row into a database.
Perhaps one or the other of the open source options has something like this already though. I haven’t had enough time with them to find out yet. I’ll post an update here if I find anything.
Do It Yourself
If the alternatives above are not what you want, or you just want it done “your way”, then the following tutorial, along with the Apple documentation, seems like a good place to start.
Any Other Options?
The above options are what I’ve found so far, but if you are aware of other options, either commercial of free, please respond in the comments below or email me and I will update this page.
Update (January 14, 2011 at 6:06PM)
Manic Networks “Manic Messenger”
Dan Byers from Manic Networks pointed me to their push notification server software, Manic Messenger, which is sold as a traditional-style software license rather than charging a monthly fee. This looks like a very interesting option, and I’ll definitely be looking into it.