Saturday, September 27, 2008

Me, Myself, and AI

(I just made myself cringe writing that title. I'm sorry. The following is reposted from my introduction at the AiGameDev forums.)

Hi, I'm David. I've been programming games for fun for as long as I can remember and professionally for the last two years.

AI became a passion of mine largely due to its mystifyingly transparent nature. Even before I understood the math behind it, I could look at a textured 3D model in a game and understand that it was made of triangles and texels and projected onto the screen. AI, by contrast, was just this magical black box, responding in sometimes wildly unpredictable ways to the player. Playing Thief was a landmark moment for me; although its AI was generally predictable and could be gamed with relative ease, it sold its characters as believable human beings with a combination of interesting behaviors and a near constant stream of barks that relayed everything the player needed to know about the AI's state. Years later, when I had begun to study and implement AI behaviors, I revisited Thief and began to see how AI was not simply a programming endeavor but a cross-section of all disciplines of game development, a massive collaborative effort of engineering, animation, design, and audio.

I attended the outstanding Guildhall at SMU program as a way to catch up on professional-level game programming and eventually break into the industry. Notably, my application to the school and both of my individual projects were focused on AI. For my application, I wrote a little grid-based "mini-Thief" game. It was my first time implementing (and even learning about) the A* algorithm. Eye-opening stuff at the time. Halfway through my education there, I revisited the Thief concept in 3D and with more complex group behaviors. As I scoured the internet for interesting AI behavior topics for my Master's thesis, I came across Jeff Orkin's publications on goal-oriented action planning. I was intrigued and ended up writing an UnrealScript-based implementation of GOAP and building a hierarchical squad behavior system on it. (Jeff even agreed to advise on the project--thanks!)

Then I entered the real world of professional game development. Of course, I didn't expect to jump straight into an AI dream job, and in fact, I barely touched gameplay code let alone AI code at my first job. I was disappointed at first, but it gave me a great opportunity to explore other aspects of game development that I had largely overlooked before (especially audio, but that's another story). In the meantime, I took on two personal ventures: first, a hobby engine that would eventual require some custom AI, and second, writing an article for the fourth installment of the AI Wisdom series. For the latter, I pared down my Master's thesis, focusing on the original aspect of hierarchical squad behaviors using GOAP. (Again, thanks to Jeff for encouraging me to do it, and thanks to Kevin Dill for his assistance on our section of the book.)

I've continued to work part-time on my hobby project, and finally, more than a year later, I'm beginning to implement some AI. I've just got pathfinding over navigation meshes working and am evaluating whether I want to use GOAP again or whether Alex-style behavior trees might be better suited for my needs. In the meantime, I've found an awesome new job where I'm able to stretch my engineering muscles and work on a huge amount of exciting tasks including some fun AI behaviors. With this recent rekindling of my interest in game AI, I decided it might be a good time to check out the community here and get involved.

0 Comments:

Post a Comment

<< Home