The style of programming in a game is still very different from that in any other sphere of development. … It draws techniques from a huge range of different sources, but almost without exception modifies them beyond resemblance.
Artificial Intelligence for Games, Second Edition
The basic transaction we make with games is to agree to behave as if achieving victory is important, to let the objective guide our behavior in the game. There’s little point, after all, in playing a game without making that basic commitment
Greg Costikyan, “I Have No Words & I Must Design”
Up until a few days ago I had been working on a yet-to-be-announced iOS game made with the Unity game engine, and I believe that one of the best technical decisions I had made in designing it was to use an in-process messaging system from the get-go. That decision continued to pay dividends until the very end as it helped keep the various components in the game well-separated and as self-contained as possible, which led to a code base that is more maintainable and resilient to change as it grew.
There are several messaging systems out there that are specifically built for the Unity game engine, but I decided to go with a more general purpose solution from a little gem of an open source library called TinyIoC.
This post describes the how I set up new Unity projects for use with an external VCS, which is based on the process described in the Unity documentation, but corrects a few omissions that unnecessarily include unneeded files in source control. And while I’ll be using Subversion in this example, the process should be applicable to other VCSs by changing the Subversion commands used here to their appropriate counterparts.
Unity does a great job of automatically importing Photoshop files. but it has an issue with transparency that, while easy to resolve, is poorly documented in my opinion. Here’s my attempt at writing the definitive guide on the subject.
I have Unity 3.5 and Unity 4.0 Beta installed side-by-side. So I made a set for icons for each so I can pin them to the Windows taskbar and still be able to tell which is which. Here’s what they look like in action:
Sharing is caring, and I do care. So here are the icons in case anyone wants to download them:
The Internet is broken, and here’s proof: For a person like me, who is into game development with Unity, who is online almost daily unless someone within speed dialing distance dies, and who is hooked into the forums and the feeds and the Twitters and the Googles, for someone like that to somehow miss reading this fantastic article titled “Unity3D coroutines in detail” by one Sir Richard Fines, Esq. is a sure sign that there’s something wrong with this world. Or at least with the online portion of it.
Every once in a blue moon I find myself needing to do some development work on the Mac. The tools I use vary depending on the job at hand, but there are a few Mac OS apps that this Windows developer can’t live without.
I noticed I still had a copy of Inside COM on my shelf the other day. I guess I held on to it because I fondly remember COM as a simple and elegant technology that had the potential to be the vehicle of true Component-Based Software Development, or at least give C++ developers a usable Application Binary Interface that it still lacks to this very day.
I had an issue with caching in an ASP.NET MVC3 web site that I was working on recently where users weren’t getting updates to CSS and image files. CSS is rather easy to resolve using the well-known query string hack, but doing the same for images referenced from within the CSS files is a bit trickier. Luckily the solution becomes trivial with a little help from dotLess.