The Mad Gamer

An odyssey in the world of indie game developement.

Gophers and Grenades is a simple little game I finished back in December.   It’s basically a pin ball type game – aim, bounce, hit the target.  In this game, the target is the Gopher!

The game is up for free on the iTunes market.

This blog post is a great read for those iOS hacker types.  It lays out the difference between id, NSObject * and id<NSObject>.  Totally recommend for the up and coming iOS programmer.

Parse is cheaper, easier, more reliable.  That’s the lesson we learned while building our APN system for Omkno, our soon to be released Facebook breakup notifier for iPhone.   Our product,  Omkno is simple.  Users get an instant notification on their iPhone or iPad, when the person of their affection changes relationship status!  The instant notification is handled via Apple’s APN service.
We built Omkno using rails, on Heroku.  We even went so far as to build our own system for connecting to APN using APN on Rails.  However, one day we discovered that our push from Heroku had just stopped working.   Pushes stopped going though.  However, a quick test on our localhost did still work.  As best we could figured, the APN on rails setup was connecting/disconnecting too frequently – we’d likely been banned by Apple.  Their terms of service state that you need a persistent ssh connection (so as to not look like a DOS attack).  We’d been connecting every 10 seconds.
Parse to the rescue!  We had previously been invited to try out Parse as a beta tester.  They are a mobile app back end service.  One of their services is APN push.  Within a few hours we had their SDK integrated into the iPhone app, and our servers talking to theirs.  Push services were working again.  Now we are waiting for our App Store review…

For all you iOS devs out there who have wanted to have multiple fonts in a single label, fear not! The new, extremely-well-documented Nimbus library has just about everything we need. Support for multiple fonts, check. A launch pad widget (like Facebook’s main screen), check. A performance stats view, check! Nimbus is totally worth checking out before starting your next iOS project.

The Nimbus project is hosted on github.

This is for those of you who have moved on to XCode4, and may notice a little bit of err… slowness.  How an IDE can perform worse than Eclipse on a 500MHz laptop is beyond me, but Apple did it.

Someone finally found a solution by limiting the number of concurrent compilation tasks. The change can be made by running this from the terminal:

defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks -integer 4

XCode must be restarted.

Enjoy

Well its no secret, I’ve made a bizarre detour into Rails land.  Blame it on Smule, my latest client who introduced me to the world of Rails. Now I’m headlong onto the Omkno project as both server and client dev.

So Opinionated, what’s that about?  It means something like this, Rails expects you do things one way.  If you play by Rails’ rules, things will be easy.  Do things your way, and expect pain.

First example:

You code up a simple model and controller.  You then code up your first unit test (like any good engineer should!), and discover this mysterious error:

@controller is nil: make sure you set it in your test’s setup method.

You just ran a unit test, and WTF?  The test is simple, creates a user, spits out a JSON response, and wha?

As this fellow explains, Rails expects your unit tests to conform to a naming convention.  Stray off the naming convention, and Rails gets upset.  In my case I’d named my unit test UserControllerTest, rather than UsersControllerTest - poor rails was looking for the wrong controller to match up my test up to.

So that’s what you’ll discover with Rails and it’s opinionated personality.


Here’s a fun one that will drive you nuts – the published version of Unity Remote for iOS that’s up on the app store does not work with Unity 3. If you download and install, you’ll get a “Failed to initiate connection” upon trying to connect. Your only route is to download Unity Remote, then build/install unity remote on your device.

For those who have not used it yet, Unity Remote is a fantastic system that allows a game developer to edit and run their game on their Mac, but see and control the game using their iPhone.  The graphics come across, but in lower quality.  This allows for pausing and editing a scene, and resuming game play.  The startup time is significantly faster than performing a full recompile of the project.  This is by far, the fastest way to develop a game.  Alas, XCode has no edit and resume type feature.

Caleb and I have been cranking away on a snowboarding game.  It’s a fun little deal.  How do we collaborate back and forth?  As you may know, a Unity project can be several hundred megs – not such a great candidate for committing to SVN (size, speed, etc).

Here’s how it’s done.  Upon dissecting the project we found that most of the assets we were using were never going to be updated (assets/terrain, assets/Standard Assets).  Pulling these out and sharing via Dropbox, while committing the rest into SVN seems to be the ticket.  The headache of the Dropbox share is a one time hurdle.  The committed SVN project is down to 76MB – big but tolerable.

To use Unity with SVN, you need to take care to follow the instructions here:

http://unity3d.com/support/documentation/Manual/ExternalVersionControlSystemSupport.html

For whatever reason, they don’t alphebetize that list – but there are 9 files in the Library, you need to only commit those.  As well, don’t go trying to merge terrains or binary assets.

Best of luck and happy Unity coding!

Somehow this is harder to find than one would expect…   Suppose you want to show a diff to a coworker.  Perhaps so they could code review?  Fill in this url:

http://github.com/<USER>/<REPO>/compare/[<START>...]<END>

A lengthy post on the subject is at the github blog.

I just let loose a mini game: BoxTheGopher!  It runs on Silverlight (Mac, Win only, sorry).  And it’s free.  Enjoy!

It’s all I’ve managed in the past month (between the pictr.us release and China).