My First Game Jam

A co-worker of mine used to work in the Research Triangle area where he used to participate in some of their local game jams. Even though he’s on the other side of the country now at Google he still wanted to participate so he put out the call and 6 of us jammed for a weekend.
Read more…

WebGL Samples

So for the last month or so I’ve been working on some WebGL samples. Today they finally went public. Here they are:

Read more…


Using a Mock Library to make Unit Testing Easier in C++

Unit testing is the process of writing tests that test a single *unit* of code. This is as opposed to integration tests which test multiple pieces of code together. The problem often comes up in which you want to write unit tests for some code A, but that code calls into some other code B, and you don’t want to be testing B in your unit tests. B should have it’s own unit tests or B is out of your control like an OS API. A’s unit tests should only test that A does what you expect it to do given that the code it calls does what it’s expected to do.
Read more…

How I Learned to Like Code Review

Code review is a development process where each time you write some code someone else is supposed to review the code before you check it in. As far as I know, most teams do not practice code review. Certainly most game development teams? I know that until I came to Google I had zero experience with code review. I had read about it and I mostly thought about how annoying it sounded to have someone have to review at my code. Now that I’ve experienced it at Google though I’m a fan.

I think I was really lucky to experience code review the “Google” way because I suspect it’s a better experience than most other places. I’ll point out why as I go over the 5 things I think it took to start liking code review.
Read more…

Apple Bans another 100+ existing games from iPhone

Apple’s recent announcement that iPhone apps must not be written in anything other than C, C++, Objective C or WebKit JavaScript and must not use any layer to access the OS has been widely reported as being a shot against Adobe Flash.

That may be true but it also means that applications written with Unity3D, Torque and Unreal will also be banned.

All of those systems are exactly the equivalent of Flash. They each use a C/C++ code base engine to allow people to write games in another language that runs cross platform. For Unity3D that language is C# or any language that runs in Mono. For Torque that language is TorqueScript, for Unreal that language is UnrealScript.

“3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).”

  • Flash is an intermediary translation and compatibility layer that runs apps written in ActionScript
  • Unity3D is an intermediary translation and compatibility layer that runs apps written in Mono related languages like C#
  • Torque is an intermediary translation and compatibility layer that runs apps written in TorqueScript
  • Unreal is an intermediary translation and compatibility layer that runs apps written in UnrealScript.

Here’s a list of 42+ SHIPPING games on iPhone built on Unity.

Here’s a list of 68+ SHIPPING games on iPhone using Torque

I’m sure there are countless others as well as several Unreal games in development.

Section 3.3.1 has effectively banned all of these games.

That also doesn’t account for the hundreds or thousands of games not using a commercial engine but still using a language other than C/C++ as their core language. Many games use languages like Lua or GameMonkey or custom languages.

For example, all the LucasArts adventure games use the SCUMM engine which also effectively violates section 3.3.1 above.


You never know what you’re going to find on the internet. I was searching for screenshots of games I worked on and I found someone has played through Robocop Vs Terminator, an NES game I wrote that was never released. It actually looks better than I remember it.

Read more…


Or, doing things “on your own time”.

First let me make it clear “I AM NOT A LAWYER”. But…my understanding of the law in California is that if you create something related to the business of the company you work for, EVEN ON YOUR OWN TIME, it belongs to the company, not you. That may sound shocking to you. Let me try to explain why it’s probably got to be that way.
Read more…

TGA Thumbnails (and viewer) for Vista and Windows 7 both 32 and 64 bit

Several years ago I wrote a TGA Thumbnail plugin for Windows 2000 / XP. I skipped having a Vista machine and just recently upgraded to Windows7 64bit. I thought that now that I finally have a 64bit machine to do development on I’d try upgrading the plugin to work there.

I started researching how to do it and found out Microsoft added this subsystem they call the Windows Imaging Component. It basically lets developers make plugins to both read and / or write any image format, plug it into Windows and then any app which uses that system can start loading and/or saving those formats. The cool thing is Vista and Windows7 use it for both thumbnails AND for viewing images.

Read more…

Designing Better APIs

Is there a best design for an API? I don’t know but I do have my own guidelines for good vs bad design. One guideline I try to follow is that it’s good to design an API to make it hard to use incorrectly. Here’s a couple of examples I’ve run into recently.
Read more…

Page 6 of 27« First...45678...20...Last »