So very early on in the design phase of our game I knew that I wanted the player to be able to pickup and play the game anywhere, anytime and from (almost) any device. I also knew that we wanted to keep track of a number of things about the players progress in the game.
Here is on of our use cases;
Sam is playing on his iPhone in the Bus on the way home from work, he was able to complete two levels before arriving at his destination. When he gets home he goes onto the Laptop and checks the news, and looks up a recipe for dinner. After getting dinner started he decides he wants to try one more level of the game, his iPhone is still charging so he decides to play on his Laptop. He goes to the games website, starts up the game and logs in. He can see the the levels he completed are already updated on his game running on the Laptop. He starts the next level, unfortunately before he can finish he has to attend to a boiling pot of water on the stove. After having dinner and spending the rest of the evening watching a show, he is ready to bed. He decides that he wants to try completing the level he started before dinner. He starts the game on his iPad and logs in, again the levels are updated from his earlier session on the way home playing on his iPhone. This time Sam is able to complete the level. On the way to work the next morning, Sam starts the game on his iPhone on the Bus and the level he completed the night before on his iPad are updated on his iPhone.
So this seems pretty straight forward. However, using a tool like Unity3D for our development we could not achieve true cross platform functionality. Sure we do have some social networking options available with GameCenter for iOS (some of it now bundled with Unity), but that does not work with Android or Windows. There are other options out there like Player.IO (although Big DB is really sweet), but they carry alot of overhead in the form of an additional library that needs to be included at runtime. This is not a good option for running on mobile platforms.
After a lot of research, I decided that the REST architecture was the only way that we could achieve true cross-platform accessibility.
So, like any good developer, I started digging into creating our own server for hosting our own REST calls for the game. I had three initial goals I wanted to accomplish;
- Keep track of the levels completed for different Trips (or Worlds for you Angry Birders).
- Keep track of the Score for the player.
- Keep track of the Achievements for the player.
- Keep track of Items Acquired (perhaps purchased) in the game.
- Keep track of the Rating (Stars) for the player for each level.
- Be able to compare High Scores, Achievements and Items with other players of the Game
So with my PHP for dummies book in hand I briefly thought about creating this all from scratch. But this was going to take a lot of effort (probably 2 months of work), and there was an unknown cost of how much hardware would be needed, and where it would be hosted. I did not decide to become a part-time game developer
Fortunately, back in January of this year I stumbled upon a little start-up called Scoreoid. It was this really cool looking, cross platform, Open Web API thingy that required NO SDK to be installed in my game. Browsing their website I knew we had found the pot of gold.
Here is an excerpt from their website;
Scoreoid’s goal is to make games better by handling advanced features, shortening game development time and costs, and freeing up developer time to focus on their games
I contacted Almog (he runs the show) and began a dialog and started looking at all the features that Scoreoid had to offer. It has high score tracking, it has level tracking, it has item tracking, it had almost everything I was looking for. It was a little difficult to “see” at first how I could leverage the technology available in Scoreoid, but with Almog’s guidance we had a working prototype (and now working Beta) of the features we needed to deliver. On top of all that the Developer site has this incredibly slick interface that also provides a console for you to test all the API calls before you put them into code in your game.
Using the power already built into Unity3D, we are now making HTTP requests to the Scoreoid servers to manage our Player Stats and Progress in the games Beta release. No additional libraries, no directives for different platforms, no headaches.
Almog deserves an A++++ for Customer Service for all the questions he has answered from us. In addition he has been extremely open to ideas and suggestions even from a guy like me who has “zero” games published. His company has even publicly posted their roadmap for upcoming features to the system, where guys like me can vote on the features I really need. How cool is that!?!
I won’t really be a “game developer” until we have actually published this first game. Until then I am a “game developer in training”. We are going to publish this game for many reasons, but one of them is because I promised Almog a post-game interview after it is completed. I don’t want to dissapoint him.
I will probably have a lot more to say about our Game and Scoreoid in the coming months. But for now I will close with this;
If you need to keep track of anything in your game, and you want a super easy, no frill, with no complicated delegate API callback interface to use, look at Scoreoid…now!