Enclosure Progress

It’s my own damn fault for not paying attention to the little details, I know. But it was still annoying to find that even though Unity4 supports terrain objects on mobile devices, it doesn’t really “support terrain objects on mobile devices”. As soon as you include a terrain object in the scene, frame rates drop to “unplayable” and none of the kings tweaks or any of his optimisations will bring it back above 20fps again (if anyone thinks differently, please do let me know how you made it work).

So, after cursing for a little while, I accepted my fate and threw away the 30+ hours of work I’d spend getting the terrain just like I wanted it. The replacement is a flat plane which came with the obvious problem of how to create holes. It’s easy enough to add geometry on top of the plane (like the rocks in the screenshot), but when you have objects that extend below the plane (like the crater), it doesn’t really work. I considered custom building the plane geometry at run-time, but was a little concerned with the potentially growing triangle count, so I ended up using a custom shader that allow me to “paint” holes in the plane at run time. While not as pretty as the terrain, it sure is a helluva lot faster.

I’ve done a lot of work on weapons and enemies and am quite close to having something playable – the environment is still a little pale, but since it’s purely for decoration, I want the gameplay done before I start polishing it.

Day15b Day17a

So far the armoury includes 3 automatic sentries: The obligatory mini-gun, a flamethrower and a rocket launcher. The rocket launcher uses the Unity physics engine for rocket movement, creating some funky trajectories. On top of this I’ve added two manually controlled weapons to involve the player a little more in this aspect of the game: The plasma canon is the surgeons tool to take out individual enemies while the not-so-subtle “Artillery” covers and entire area in a mayhem of fire and debris for a short period of time.

I’ve added limited ammo, including clips and reload delays to all weapons. This was not in the original game, but it’s another parameter to adjust when balancing the game later, and I think it will come in handy. I will also add the option to turn sentries on and off to make the most use of whatever ammo you have.

The beasts fall into two categories: Walking and flying – both are done and working, although the flyers still need some tweaking… I have 6 unique beast types in total, 4 walking and 2 flying – some of them will be included in various skins with different attributes.

Enclosure for iOS

Between other jobs, I’ve been able to put some (mostly late-night) time into porting Enclosure to iOS.

My first thought was that, “hey, it’s both OpenGL – it can’t be that hard to convert Java to Objective-C”. As it turns out, it’s a bit of a nightmare, so I quickly gave up that idea, and instead turned my attention to another tool I’ve been wanting to use for a while: Unity.

Let me start by saying that Unity is nothing short of awesome. The only downside is that I have to write the code in MonoDevelop which is not much more than a glorified text editor – being used to IDE’s from jetBrains (I use both IDEA and AppCode), Mono is a bit of a pain in the neck.

Anyway, choosing Unity meant re-thinking the visual appearance of Enclosure – the main gameplay will be the same, but it will look like a different game entirely. Here’s a sneak peek:

Early development screenshot

Early development screenshot

I have most of the basic gameplay-features in place, and because it’s C#, I can grab big chunks of code from the Android game and more or less paste them into Unity. Much simpler than converting to Objective-C.

Right now I have a ton of other things to attend to, but hopefully I’ll find time to finish it in the coming months.

Tempo Tim Update

Last night I uploaded a new version of Tempo Tim with some new features that has been requested over the last couple of days since it was first launched:

  1. Ability to pause the timer without resetting it
  2. Parental lock to prevent kids from tampering with the settings
  3. Show remaining time while “parent lock” is on.

The remaining time is shown both as a time and as a “progress” bar in the form of a glass of lemonade 🙂

The new "lock" screen in Tempo Tim

The new “lock” screen in Tempo Tim

Android Development on a Mac

I just had to take 5 minutes to write about this…

Last year I did a small Android app for a client, it was just a prototype but it had to run on a specific device: A Sony Ericsson Xperia. It was supposed to be nothing more than a couple of days work, and everything looked fine until I tried debugging the app on the device.

The damn thing just wouldn’t connect – I downloaded and installed a host of drivers and countless megabytes of Sony fluff, but finally ended up stitching something together from various 3rd party sources. It took almost two days before I could get the debugger connected.

I should have known, I guess, since I had a similar nightmare on a laptop with my HTC Desire some half year earlier, but back then I figured it was just the laptop that was messed up.

Now, today, I had to do another small Android project and since my HTC Desire was so low on battery that it would not run from the USB connection on my MacBook, I hesitantly dusted off the Xperia and plugged it in.

I pressed “Debug” in IDEA and lo and behold, the app instantly fired up on the device.

How ironic is it that Android development is easier on a Mac? 🙂

(Update: The HTC finally charged up so I tested it as well – same story! No need for annoying HTC sync apps and funky driver setups – it just works).

hipKey No.1 in AppleStore


The hipKey made a quick dash to the #1 spot in “app-enabled” accessories in the US Apple on-line store the other day.

Well done 🙂

On the downside, it seems a few customers are having stability issues which are almost certainly due to incomplete BT pairing – if initial pairing is not completed properly, iOS ends up in some weird limbo state where it will only stay connected for a few seconds at a time. Un-pairing and pairing again usually fixes it.

Another reported issue has been lack of iPad mini support, but an update which fixes this is due as soon as Apple approves it, so hang in there :). We were caught a bit off guard by the mini: Since there was no non-retina BLE enabled iOS devices before it came along, we only ever tested the app on retina devices, assuming it would just work on the mini. It didn’t.

hipKey is here!

Screenshot-2One of my Clients, hippih, recently released their new product: “hipKey” on the Apple Store (yes, the hardware shop, not the app ditto – it’s a Bluetooth leash).

I wrote the iOS app which was part UI work and part building the Bluetooth 4.0 layer needed to support the hipKey hardware. Let’s just say that I’ve learned a thing or two about Bluetooth Smart in the process.

Here’s a screenshot from the app, you can read more about the device at hippih’s website (below); there’s also a nice video showing the device in action.


The MathRat is 1 year old today

It’s been one year, now, since the MathRat was released on the App Store.

I was going to write a follow up on the retrospective, but I really don’t have a clear conclusion. It’s been a strangely un-eventful year for the MathRat – sure, there’s been a few dips and a few spikes, but nothing that really had a lasting effect; It just keeps selling in the same low numbers every day, on and on.

Every now and then it starts dropping until it gets dangerously close to zero and then for no apparent reason, it starts climbing again.

So, to answer the ever-relevant question of “was it worth it?”, I would have to say yes. Not just for the fun of it, but it does actually (eventually) make enough of a profit to be something I can justify spending time on.

Which is really all I’m asking 🙂

Day 1

Yesterday was my first work-day as an independent consultant. When I went to bed at 05:00 after working some 15 odd hours I was not tired; It seems something strange happens when your time is your own.

I think Pearl Jam nailed the bliss of independence perfectly:

I know I was born, I know I will die, the in-between is mine…