Scoreloop

by jegeblad

I spent Sunday evening and all of Monday this week trying to get Scoreloop (http://www.scoreloop.com/) to work with Eyestorm. The sales numbers for Eyestorm haven't exactly been stellar, so when Scoreloop contacted me about 3 weeks ago to ask if I would like to use their high-score library I was 100% interested since I figured that it would create some additional much desired exposure.

Essentially, scoreloop is a global high-score system; You submit you score to Scoreloop's server to see how well you performed compared to the rest of the world. The main part of Scoreloop however are "challenges". The idea is that you can challenge another player and the one with the best score wins some Scoreloop-coins. Scoreloop's profit should eventually come from these coins. In order to challenge someone you must have coins. You'll have to buy coins from Scoreloop, although you get a bunch to start of with. Scoreloop will share the profit of the coins with the developers that implement Scoreloop functionality in their app. Another cool feature is status updates on Facebook which is what you would like to have when you want exposure!

I didn't have much time during those 3 weeks, but once-in-a-while I was able to play around with Scoreloop. Scoreloop gives you a list of steps required to implement Scoreloop functionality, and it is relatively simple although the documentation could have been slightly more elaborate. I had some problems including the Scoreloop bundle with xib- and jpg-files in Eyestorm, most likely because Xcode failed for some reason each time I tried. I also had some issues linking with the scoreloop library, and because I use Objective C++ I had to add an extern "C" { ... } around the #import statement. Those things ended up taking me a few hours to get past, most likely because I tried to do it late at night, and I am still a rookie when dealing with project setup in Xcode.

Once I got Scoreloop up and running though, it pretty much did what it was supposed to except a bunch of bits essential to Eyestorm. Our own high-score system is synchronization based. I.e. you play while you are offline and then synchronize high-scores once you get online. At the present time Scoreloop lacks that functionality, although when I inquired they replied that they are planning to add it.

I tried various work-arounds by saving the score myself locally, but I couldn't get it to work properly. Essentially, I couldn't tell if the score-submission was successful or not. It could easily fail either because the device wasn't connected to the Internet (OK, I could check for that) or because the user didn't yet register at Scoreloop.

I always feel bad about using other people's libraries. It isn't just that you loose control over part of your code, but also that you have one more thing you have to keep up-to-date. During my test-period Scoreloop already made an update. Another thing is size. Scoreloop's bundle and library made the compressed distribution of Eyestorm grow by 3 MB which I think is quite a lot. Especially, since I prefer keeping things under the 10 MB over-the-air-limit (which I cannot find a reference to anywhere). However, I should note that the Scoreloop guys replied extremely promptly when I sent feature requests and asked about a crash in their code (which was probably triggered by me).

In the end I decided to postpone Scoreloop implementation for now. Unfortunately, it doesn't quite work with the way Eyestorm is built. I would love to have synchronization, because I know that the guy who currently holds the highest score plays the game on airplanes without any ability to submit scores. Playing Eyestorm from start to finish could take hours (you can put it away and continue later), so in reality I also don't think it works with challenges. Finally, the Eyestorm's UI just doesn't quite work with Scoreloop, although I think I got everything worked out in the end, but it became a bit messy.

Instead I went ahead and added weekly high-scores which took me about 4 hours including a few changes to some SQL queries and little bit of extra work on the client side. It should appear on the app-store within the next couple of weeks. At the same time I also fixed some problems on iPhone OS 3.0. I'll keep an eye on Scoreloop though and see if it will eventually be able to replace our own high-score system.