Snowferno v1.1 is out

October 8, 2009 - balord | 2 comments

The v1.1 update to Snowferno is now Ready For Sale!! Of course, if you already have it, just check your iTuneses or App Store "Updates" button for your free fresh copy.

In this update you will find:

  • Better performance for all devices
  • Built with new Unity iPhone 1.5
  • New Global Leaderboard integration in-game with webview
  • New tips from the Community powered by (the already-launched-but-soon-to-be-styled-for-in-game-coolness) playhaven.com
  • Fixed a few terrain bugs where you could get stuck

Happy rolling!

Snowferno Update Coming Soon

September 28, 2009 - balord | 2 comments

We just submitted v1.1 of Snowferno to the App Store for approval last night.

This update was built with the new Unity iPhone 1.5 and the latest iPhone SDK, bringing significant performance improvements across all devices. Gameplay is really smooth now on my iPhone 3G.

Also new in v1.1:

  • New Leaderboard integration in-game with UIWebView
  • New Tips community in-game -- powered by playhaven.com
  • Fixed a few terrain bugs where you could get stuck (thanks, Belly Lint!)

And any Unity devs that want to know how Ben got UIWebView working in Unity, check out his blog post Playhaven, Unity, and Snowferno complete with downloadable sample AppController code.

While we wait: Leaderboard Twitter integration

August 8, 2009 - balord | No comments yet

(Three business days into the v1.0.1 resubmit and counting...)

In the meantime, I've been working on integrating the Snowferno Leaderboard with Twitter. Of course, that has been complicated by the DoS attack against Twitter over the last few days. But, it's coming along nicely and might even be ready to go live by the time we get our approval.

Our Twitter integration works basically like this:

  1. Players who have setup their online leaderboard account (Settings > Score Board > Edit Leaderboard Settings) can click the "Sign in with Twitter" button and allow the Snowferno Leaderboard to access their Twitter account. At the same time, we ask the bit.ly API for a shortened URL to points to that player's Leaderboard profile.
  2. Twitter sends us back OAuth tokens for that player's account, and we store those for future use. (OAuth incidentally is a really cool system. It's way too creepy these days to ask someone to give you their actual Twitter login and password. Using OAuth authentication, they only login to Twitter, whom they already trust. We avoid the security risks inherent in storing passwords, and players can revoke our app's permission whenever they want. Win/win/win (except for when Twitter throttles down OAuth to defend against DoS!))
  3. During regular online gameplay, the Leaderboard API logs certain achievements (such as getting a Top 5 score for a level... more to come).
  4. A cron script crawls the achievements log every minute and posts tweets on each player's behalf to the accounts that are Twitter-enabled. The reason I do the tweeting as a separate process was so that we could return global leaderboard data back to the game as quickly as possible.

The foundation of our integration is the PHP Twitter API wrapper twitter-async. The rest are custom additions to the Snowferno API and my Snowferno WP plugin.

Alot of the work on this has gone into getting the structures in place to gather and store authentication and making my cron script and achievements logger modular. (Also, my ongoing education in talking to APIs from inside and outside of the WordPress core.) Once the Twitter stuff is humming along nicely, I plan to delve into the Facebook Connect code and do something similar with Facebook statuses.

v1.0.0 REJECTED! (v1.0.1 submitted)

August 5, 2009 - balord | No comments yet

The big email finally came Sunday, August 2 at 1:24 PM EDT with the exciting subject "Snowferno 1.0.0: Application Submission Feedback".

Hello Brent,

At this time, Snowferno 1.0.0 cannot be posted to the App Store because it is crashing on iPhone OS 3.0 and Mac OS X 10.5.7.

Ouch.

I had done a Build and Run of v1.0.0 before submitting and it played just fine, so we knew the game itself was solid. I was away this weekend so Ben tried symbolicating the crash logs Apple sent us, but with no luck -- probably the crash was happening inside the Unity core of Snowferno. Also, being the Team Agent I have to do the final builds, so we didn't have a chance to get to this until last night.

Best we could tell, based on how far Apple said they were in the bootup when it crashed, it was probably a bug with the device having network access but not necessarily internet access -- we imagine that the App Store testing ground is heavily firewalled. I never recorded any game activity from Apple's IP addresses tho, so we know that it didn't get even get that far.

Ben went in and beefed up the networky bits and added some "no network found" messages if any of the WWW responses came back empty. We also took this chance to fix some not-terrible-but-glad-to-catch things like the end screen wasn't locked and the starting point on one level was left halfway into the level from a screenshot photo-op.

So, from v1.0.0 submit to rejection took 7 business days, or 10.5 actual days -- they did email us on a Sunday afternoon, after all. Not bad... We rebuilt last night and submitted v1.0.1 last night. Start the clock again at Wednesday, August 5. Tick tock...

P.S. I encountered this error when uploading the new binary:

The binary you uploaded was invalid. The signature was invalid, or it was not signed with an Apple submission certificate.

Well, I made sure the app was signed properly. Ben found this thread, and the solution for us was to change the Bundle Identifier in Info.plist from com.mycompany.${PRODUCT_NAME:identifier} to com.mycompany.Snowferno.

Leaderboard bug fix: screenname changes should work again

July 28, 2009 - balord | No comments yet

Oops. I was doing some housekeeping on the Leaderboard code today and found that I had forced an error during testing and forgot to remove it. This has effectively been preventing screenname changes sometime since robc managed his change.

I had added a host name check to prevent some external script access, and it was still set to === instead of !==.

Fixed! So now, change away. Details how-to are on the support page. (I wondered why nobody was changing their names... thought maybe the Inferno character names were just oh so desirable.)

BTW, no activity yet from any Apple IP addresses. Tick tock...