So today marks the last day of my internship at Opposable Games, where I've spent the summer hacking on stuff for their iOS based games. I've learnt an awful lot about how to develop for iOS and had a really great time doing it.

I have a relatively web-based development background, spending most of my time working in scripting languages, working with databases etcetera. It's been refreshing to have a change of pace to high-performance low level programming, although a certain amount of pain has been involved with this.

I've been working with the Cocos2d library which is very good for rapid game development, but as newer versions of Xcode were released a small number of bugs seemed to creep into the project, given that few other things were changing my guess is that the library hasn't been updated to work with the newer version of the compilers or something of that ilk. Either way I'd very much recommend anyone who wants to do iOS game development takes a look at Cocos.

Speaking of Xcode I have to say that I'm not a fan. It's crashed on me many times, run slowly and forced me to reboot both my mac and my iOS devices to get it to work. It's a shame that it's the only development platform for iOS because as an IDE I have to say that I'm not impressed.

Another problem with working in a native programming language (Objective-c) is that operations are memory unsafe and there's no garbage collector. As much as that's great from a performance standpoint, when you're used to programming with the "safeties" on, it can be a weird phase shift to stop using them. Manual memory management is always going to be more hit and miss than having a garbage collector, but for the most part I think we've done a pretty ok job in this department.

One of the games we're working on requires a more or less completely real time sound engine to work. I was tasked with building the prototype that plays the sounds in (as close to possible) perfect sync. This lead to me learning about the lowest level of core audio, which I would describe as being like a jet fighter. It's insanely powerful, but get anything wrong and you're going to crash and burn horribly (in most cases getting an earful of audio noise for your trouble)

If you're a programmer interested in getting into the games industry I'd very much advise you to do a short internship with a company like Opposable where you can learn what it's like to build the sorts of technologies required for modern video games, because it's nothing like any other type of system you're ever going to build, you'll learn a loads, and probably have a really great time doing it.

For my part I've had a great time this summer and am now looking forward to a well earned break before heading back to university for my final year.