New tool impressions: Unity

Jan 31, 2012

I just finished up the Vancouver Global Game Jam, and after sleeping for almost an entire day,  I am alive again! I think I coded for over 24 hours straight, which is definitely some kind of record for me. I am going to write up a post mortem on the experience soon, along with a link to the game our team developed, but in the mean time I wanted to write up my thoughts on some new tools I have been checking out, one of which we used at the Jam.

Over the past couple of weeks prior to the Jam, I had been evaluating some new tools that I could use to port some of my titles to mobile (iOS and Android specifically). I checked out quite a few, and narrowed down my search to two: Unity and Monkey.

Unity you may have heard of. It’s a high-end 3d engine that can publish your project to a variety of platforms, including iOS and Android. I’ve liked Unity since the first time I laid eyes on it. It came out of the gate doing everything that I wanted Adobe to do with Flash: supporting 3d and hardware acceleration in the browser, catering to game developers (Adobe was focused on Rich Internet Applications, or RIAs, for a very long time, and seemed content to ignore all of us folks making games with it), and they offered their tool for free, so you could get up to speed and experiment with it without laying down any cash. Not surprisingly, they have attracted a sizable, active community, and it continues to grow.

I played around with Unity quite a bit, putting together some simple prototypes, and running through a few different tutorials. I really like it. The Unity team seems to have really thought through the process of getting a game up and running quickly. In many ways it feels very drag and drop, but once you start digging into the scripting and looking at the coding APIs, you realize that you have an extraordinary amount of power in your hands.

So what’s not to like? Well, it wasn’t that I didn’t like Unity, it was that in a lot of ways it felt like overkill. There are so many options in it that are clearly geared towards high-end games with larger budgets, larger teams, and most importantly, 3d content, which I am currently not planning on working with. If you just want to get some small 2d graphics flying around the screen, using Unity is, as Mr. Tom Grochowiak puts it, “like trimming a bonsai tree with a chainsaw.” Too much power isn’t necessarily a bad thing, but there are so many options in Unity and things to wrap my head around that I felt like I was wading through technology I really didn’t need.

Unity is a very nice tool, and I think that in the future if I decide to start building with 3d (or just cave to the urge to start typing ‘eulerAngles’ and ‘spline’ over and over), I will definitely use it. However for the time being, I am leaning towards using a different tool. In my next blog post, I’ll take a look at Monkey, a new programming language that feels much more geared towards my immediate purposes, and the tool we used to build our game at the Vancouver Global Game Jam.