Article
i/2008/06/creditcards

Does Game AI Knowledge Grow On Binary Trees?

Dave Mark on June 26, 2008

In this week’s developer discussion on AiGameDev.com, Dave Mark picks up on a recent blog post by Paul Tozour, AI guru extra-ordinaire, who discusses AI interview questions he would like to hear in the games industry.

You want these? You can’t have ‘em!

Everyone who has ever stepped onto the road of borrowing money as a young adult is familiar with the quandary that getting your first credit card or loan. You can’t get a credit card until you have a credit history… which is strikingly difficult to acquire without a credit card. It can be an exasperating exchange when you are first told that. I’m sure that I’m not the only one that uttered the plea, “trust me! I’m good for it!” Well, that may very well be the case (it wasn’t with me… I was a slouch), but for the person on the business end of that desk, are they really going to take a chance on you? Literally, they would be investing in the unknown… at least by empirical measures and defined standards.

The reason this came to mind is a pair of posts at Game/AI. The first, penned by Damián Isla of Bungie, was titled “Game AI U?.” In it, he commented on how, while there are plenty of students coming out of the various game development programs around the country, there is a disturbing void. In Damián’s words,

“I just have one worry: I talked to a lot of students at GDC who cited A*, steering behavior, neural nets, etc. as proof of their AI expertise, but I’m concerned this might point to a case of academic over-fitting. Those things are well and good, but they’re also relatively straightforward, in and of themselves, and very SPECIFIC. If I had to choose between someone with experience with those particular tools of the trade and someone else with a generally stronger math and CS background, I would always choose the latter. Of course no one says you can’t have both, and I’m sure that’s what the game schools are aiming for.”

A brief and certainly unscientific stroll through the curricula of the usual suspects in game education supports Damián’s observation. DeVry’s Game and Simulation Programming track doesn’t list a specific AI class at all. (At the very first breakfast of GDC, I happened to lean against the same stretch of wall as the head of DeVry’s Game Program where he lamented that his major obstacle was finding game AI people with the Master’s-level degree required to teach in an accredited program. More on this later.) Full Sail seems to show one AI course as part of their degree program. Although I know that the legendary Steve Rabin teaches AI at Digipen, I can’t seem to find a specific AI-related course on their site. I’m sure that there are other, less well-known programs that have AI courses… but how comprehensive of a treatment do they give?

But Are You Prepared for… “The List?”

While it was certainly a good and entirely valid observation by Damián, the gravity of it didn’t strike me until later. Specifically, last week, another Game/AI contributor, Paul Tozour, posted something seemingly unrelated… but on further analysis is really a logical continuation of what Damián had noticed. Paul’s post, “Interviewing AI Developers” is almost dizzying in its gravity. To quote from his header:

“I left Retro Studios a few weeks ago, and I’ve been talking to a lot of developers in the meantime. It’s been a really fun process.

However, it’s also reminded me that when it comes to AI development, our industry is all over the map.

So I thought it would be a good idea to make a big list of AI interview questions … some that I’ve asked, some that I’ve been asked, and others that I think are worth asking. I left the answers blank, since plenty of good answers to all of these questions are easily accessible in all sorts of places (and if you’re the one giving the interview, you should already know the answers!)”

I want you to answer all my questions honestly. It will go better for you that way.

I very much encourage you to pop over and take a look at his list at some point. I warn you, however, it is not small. You can’t even just look down the list and count how many of them start with little dashes (i.e. bullets). Some of those line items actually contain multiple questions. Reading straight through the list as he wrote it almost makes it seem like combination of a timed quiz show and a Hollywood-stylized prisoner interrogation. In order to preserve AIGameDev’s bandwidth, I will refrain from re-posting the behemoth of a list here - but I can’t resist tossing out one or two.

The questions start out simple enough. Here’s the first two in the first section (”Behavioral AI”):

-What’s the difference between a finite state machine (FSM) and a hierarchical finite state machine (HFSM)? Give an example of a hierarchical state machine with functionality that you could not easily replicate in a non-hierarchical FSM.

-What are some of the limitations of state machines? When is the use of state machines appropriate, and when are they insufficient to generate the kinds of behaviors you need in a game?

No big deal. That’s standard fare, right? A few questions further down, you get whoppers like this:

-You’re developing a boss encounter in a 3D platformer game, and the boss has 15 different attacks. The game designers have asked you to make sure that the player sees as many of those 15 attacks as possible during the encounter, and that he seldom or never sees the same attack twice in a row. What are some ways you can do this? What does the attack selection algorithm look like in this case? Keep in mind that not all attacks are possible all the time — for example, the boss has a melee attack that he can only do when the player is very close, and a bombardment attack he can only do when the player is far away.

What’s more, you get some pretty esoteric stuff mixed in here.

-You have a pathfinding system that does a great job of finding a path across the world, but it does not take dynamic obstacles (such as crates, barrels, vehicles, and other AIs) into account. The player is playing a superhero, and he uses his super-strength to drop a soda machine in the AI’s path. [Dave’s note: WTF? A soda machine?] The AI doesn’t have any way to move or destroy the soda machine. Once the AI sees the soda machine blocking his path, what are some different ways he can pathfind around it while ensuring that he eventually returns to his original path and reaches his initial destination? What happens if the soda machine is on top of his destination? What if the soda machine is right in front of a doorway the AI needs to walk through as part of his initial path?

-You’re making a WWII shooter with fighting in the streets of Berlin. Your designer wants to ensure that at certain points during the game, the AI-controlled Nazi units will flank the player, with small squads of Nazis approaching from different directions and side streets and alleyways. We assume that cheating is not allowed (i.e. we may not simply teleport units where we want them to go), and we assume that telling the designers to do it with scripting isn’t feasible. Describe at least 2 different ways to implement such a system.

I’ll quit with the excerpts now… seriously, go read the list itself (don’t forget to come back… and you might want to take a bathroom/coffee break before you start). The point is, there is a lot of material covered in there. He touches on all sorts of disciplines… behavior, pathfinding, steering, influence maps (by saying that I give away an answer or two), scripting, animation, learning. No stone goes unturned. The List was so intruiging, that an entirely separate forum was started in the AIGameDev forums specifically entitled “Solve This!” with the weekly seed material originally coming from Paul’s post. (Free forum registration and introduction is required to view the contents… but, if you are reading this column, there is no excuse to not be a forum member anyway!)

Education Meets The Real World

I have addressed some related issues in this space in the past couple of months. In “The Little Used Tools of Game AI” (which actually drew from a GDC roundtable), I ask why we aren’t using all those fancy-schmancy things that we all talk about. In “Why Not More Simulation in Game AI?” (also seeded by some conversations at GDC), I ponder the possibility that the AI arena is starting to fragment into sub-disciplines. When tossed into the pot with Damián’s concern about the comprehensiveness of AI education and Paul’s tidal wave of theoretical interview material, a couple of questions bubble to the top.

  • If the AI in games today is to get better, do we need to use the more advanced techniques?

  • If the more advanced techniques are so critical, why is it so difficult to find people who are actually using them?

  • If the more advanced techniques are growing so specialized and diverse, can one person really know them all to the extent necessary to be completely proficient?

  • If game development schools aren’t teaching much beyond pathfinding, steering, FSMs and (*sigh*) neural networks, where does the advanced knowledge come from?

  • If game development schools were to teach enough to cover Paul’s “Interview From Hell Union Aerospace Corporation,” how many complete courses would it take?

  • If most game companies tend to have very small AI staffs (many only have a single person), and “if you’re the one giving the interview, you should already know the answers”, who is going to be qualified to conduct Paul’s hypothetical interview?

  • If game companies are going to use the advanced techniques, aren’t they going to have to employ larger staffs anyway?

  • If game companies use larger, but specialized staffs, would one specialist necessarily be able to adequately interview a specialist of a different sort?

  • Since, as Paul admits, there is more than one solution and/or response to his questions, and especially since new techniques are being developed by visionaries all the time, what if the applicant blows the interviewer out of the water?

  • Since a majority of what we do as AI designers/programmers is crafting specific solutions to unique game-specific problems, is it necessarily right to ask some of the questions that Paul proposes?

  • Since a majority of what we do as AI designers/programmers is iterative and exploratory, is it reasonable to expect an interviewee to “wing” an answer in an interview?

  • With the significant amount of AI material available on websites such as this one, solo books and compilations such as the “AI Game Programming Wisdom” series, do we need to know everything about everything (or even everything about a particular subset of everything) — or do we just need to know how to find what we need on our own?

While (!AI_Skills) {AI_Job = False; AI_Skills = False;}

When you reach the end of the strip, you will have enough AI experience to get hired to an AI job.

While the above are all thought-provoking and the potential solution set somewhat ephemeral, I guess the most important question goes back to the credit card example I began with. That is, if schools aren’t teaching enough AI to get an AI gig (per Isla), and you can’t get an AI gig without having a ton of varied AI knowledge (per Tozour), how does one get into that world? Of course, you could get AI experience by being hired as a junior member of an AI team… but AI teams may actually tend to be one-person shops. It’s the same frustrating Catch-22 as the credit history example. Unless you can pull off the “trust me! I’m good for it!” approach, it also seems to eliminate an AI gig as an entry level position.

Damián did provide an out in his post, however. To reiterate:

“If I had to choose between someone with experience with those particular tools of the trade and someone else with a generally stronger math and CS background, I would always choose the latter.”

Whether he intentionally implied it or not, the take-away I get from this is that, as far as AI-related education goes, you’re on your own.

To be honest, that’s not far from the truth anyway. Take it where you can get it. Talk. Network. Attend. Browse. Post. Respond. Buy plenty of books. Visit AIGameDev daily. Buy plenty of books from Alex’s links. After all, while AI knowledge and experience may not grow on trees, knowledge of AI trees (and other stuff) can be found in plenty of places.

Discussion 21 Comments

FreddieFreeloader on June 26th, 2008

Ohhhh.... Good one Dave. Damn you for asking so many questions! If I start thinking too much about this stuff, I'll never graduate in time. Regarding the low variance in the use of technology, I think Paul Graham got it right in [URL="http://www.paulgraham.com/icad.html"]this one[/URL]: [QUOTE] [...] when it comes down to it, the pointy-haired boss doesn't mind if his company gets their ass kicked, so long as no one can prove it's his fault. The safest plan for him personally is to stick close to the center of the herd. Within large organizations, the phrase used to describe this approach is "industry best practice." Its purpose is to shield the pointy-haired boss from responsibility: if he chooses something that is "industry best practice," and the company loses, he can't be blamed. He didn't choose, the industry did. I believe this term was originally used to describe accounting methods and so on. What it means, roughly, is don't do anything weird. And in accounting that's probably a good idea. The terms "cutting-edge" and "accounting" do not sound good together. But when you import this criterion into decisions about technology, you start to get the wrong answers.[/QUOTE] You could argue that games are a completely different breed of software compared to the kind of applications Paul (Graham) is used to writing and having opinions about, and that might be true to some degree... but isn't that just another poor excuse? I don't believe in game development schools, or, at least their technological tracks. I have to admit that I've not had much experience with those kinds of graduates, but I'm still with Damian on this. The main reason is this: Tools are seasonal. The rate of change is high. With a broad, sound theoretical foundation, knowledge of new techniques, tools and theory comes a lot easier. And I've found, on several occasions, that knowledge of one area can be used beneficial in others: For instance, I've used what I learned in a class on programming languages, specifically variable environments, for writing a HTN-planner. Don't get me wrong. Game related courses can be very relevant for a computer science degree, and, as always, a thesis is an excellent opportunity to get into this stuff - BUT!... only once the basics are in place. DigiPen's curriculum looks quite good, but why oh why is the algorithms and data structures course on semester 4 and software engineering on semester 6? I don't think that the average graduate from a cs degree is going to [I]know[/I] the answers to a large portion of those questions straight out of university. However, any cs graduate with a keen analytical mind should be able to work his/her way towards an answer to the design-related questions. Also... Wouldn't you think that you'd learn much more about a candidate who would go through a bit of head scratching, some clarifying questions and a couple of sheets of paper in order to come up with a reasonable design, than if said candidate just recited an AI Wisdom article? So regarding the factual knowledge questions. Yeah - those might not all be answerable by a fresh-out-of-college candidate. A better line of questioning might be: [QUOTE]Interviewer: Name a cool technique that was used in a game you like or that you think could be used with good results in a game. Interviewee: Well... a cool use of X was/would be in Y. Interviewer: That sounds interesting. Tell me, in as much detail as you can, about X and why you think it worked/would work well.[/QUOTE] For the remaining questions: Dude, they're design problems - we've been trained to solve those. (Just remember not to disqualify a promising candidate that doesn't have 2+ years of full-time experience with C++. It really isn't that hard a language, except, perhaps, the finer points of template programming.)

Kevin Dill on June 26th, 2008

Northwestern University, where I got my MS, had a required class called "Natural Language Processing." In it, we didn't talk all that much about NLP, but we did talk a *lot* about how to solve problems. While I'm not sure how effective a class like that really is (I'm not convinced that the sort of problem solving ability that we need can be so easily taught), I am certain that the most important requirement for an AI programmer is to be able to solve problems of the form "how do I decide..." How do I decide which weapon to attack with? How do I decide whether to use a pass or a running play? How do I decide whether to build a swordsman or research Literacy? How do I decide whether the player wants me to bust down this door or stand out of his way so he can do it? How do I decide whether to laugh or cry, or for that matter should I do both at the same time? The ability to delve into what considerations you should account for, and to envision what the result of your decision making algorithm will be in as many of the boundary cases as possible, to mentally catch and repair pathological cases before the game even goes to QA, is hard to teach and hard to evaluate. It's very different than the technical skills you would look for in, say, a graphics or a network programmer. It is in many ways more akin to the skills you would want in a designer. Different practitioners will find different methods that work well for them. Some swear by rule-based systems, or planning, or even (*shudder*) finite state machines. For myself, I prefer goal-based AI. It works well for me. With that said, I have found that a great many people disagree vehemently with my choice - as I may with theirs. Ultimately, though, the architecture is just a means through which we express decision logic. The decision logic is the art, and the craft, of game AI. Given the above, I'm not sure that questions about a specific architecture are necessarily the right approach to selecting candidates. Instead, I've found two ways to get at this in interviews. One is to use the sort of "puzzle questions" that Microsoft is famous for. I'm not sure it's a great approach, but it is one way to look for mental agility. The other, which I prefer, is to engage them in a discussion about a game they worked on, or a game they liked, and how the AI "should" decide to do things, or why the AI is "stupid" and how it could be improved. I had one woman straight out of school interview with me. She had written a PVP capture the flag game in school (using the same rules as the classic school-yard game), so I asked her to think about how she would write an AI to play against the human. Even though it's a simple domain, we were able to come up with a bunch of parameters you might think about when deciding whether to go for the flag, or whether to chase the player, or whether to guard your own flag. That's the sort of person that I want to hire (and in fact we did, and she worked out great).

PaulTozour on June 26th, 2008

[QUOTE]Paul's post, "Interviewing AI Developers" is almost dizzying in its gravity.[/QUOTE] Thanks, Dave! You're too kind. I have to confess to deriving a certain amount of pleasure from making people dizzy :) [QUOTE]If the AI in games today is to get better, do we need to use the more advanced techniques?[/QUOTE] Ultimately, yes, we will (depending on what you mean by "advanced," of course ...) It's not going to happen overnight, and we're missing a lot of things we need to make it happen -- more stable game engines that minimize the need to change the AI systems when the underlying technology changes, more and better AI middleware, broader sharing of industry knowledge, and better game designs from designers who view AI more like a tool for their job than a scary problem to be designed around. But there can't be any doubt that 25 years from now, game AI will be a very different thing from what it is today. [QUOTE]If the more advanced techniques are so critical, why is it so difficult to find people who are actually using them?[/QUOTE] They're not necessarily "critical" in many cases. But there's a lot we can offer that can make a difference if done correctly. My take on what's holding us back is summed up in the "General Discussion" forum thread on Intel (and one Intel executive's statements about needing 64 cores to do AI while 16 apparently would not be enough ...) [QUOTE]If game development schools were to teach enough to cover Paul's "Interview From Hell," how many complete courses would it take?[/QUOTE] Probably not as many as you'd think. I think you could do it in 2 or 3 dedicated Game AI courses. I should note, though, that my questions were more aimed at seasoned AI developers. Most of these really would not be fair game for someone right out of college. [QUOTE]Since a majority of what we do as AI designers/programmers is crafting specific solutions to unique game-specific problems, is it necessarily right to ask some of the questions that Paul proposes?[/QUOTE] If I were in the position of hiring AI developers (I'm speaking theoretically, of couse; I'm actually on the other end of the table a lot these days), I would argue that the game-specific solutions should be crafted on top of the foundation of existing industry knowledge. It's great to apply creativity, and it's always absolutely necessary to make an AI system that fits your specific game, but I would want any developer I hire specializing in AI to have a broad enough base in current "best practices" that he won't try to reinvent the wheel when faced with a new problem. There are enough solutions available right now for all the various game AI problems that it's become a real discipline, and people who work in the field should be familiar with what's out there. [QUOTE]Unless you can pull off the "trust me! I'm good for it!" approach, it also seems to eliminate an AI gig as an entry level position.[/QUOTE] I've been working on a post on this subject on the AI blog ... Ultimately, it's very rare for anyone to be hired to specialize right off the bat. What you can do is get hired as an entry-level programmer, get a broad base of experience as an engineer, ship a few games and really understand how games are built from the inside out, and then aim your career more toward the specialization you're looking for later on down the road. [QUOTE]If most game companies tend to have very small AI staffs many only have a single person), and "if you're the one giving the interview, you should already know the answers", who is going to be qualified to conduct Paul's hypothetical interview?[/QUOTE] Part of my (sinister) motivation in writing the article was to drive home to many game studios just how much is out there in terms of knowledge about game AI, and just how big the gap is between where we are and where we could be. If I make one producer or designer or tech lead out there get a little dizzy when they read my list, and I can get them to think, "Hey, wait, hold on a sec ... So there are solutions for all these problems, and I don't have to script everything? Maybe it's time for us to put more of an emphasis on AI if we want to stay a world-class AAA game studio" ... then as far as I'm concerned, it's "mission accomplished."

Eric_Gilbert on June 26th, 2008

I'm just waiting for some answers to those questions on the blog to be posted...I have some of those same issues (my first 'production' level AI project) and I really don't want to learn the good old 'trial by fire' way. I've had to do that before ;) And if there's "existing industry knowledge", I want those golden nuggets of knowledge...so I can learn....and maybe keep my job for another week... :) So where could we find out the answers to those great questions? Where can I get this tribal knowledge? Are there online resources that my searches are just missing? Or are the answers in the wisdom or maybe some other books that I just haven't come across yet? By the tone of the discussion on education, I'm assuming going back to school wouldn't help much (nor is that really an option for me right now :) )? That question list would be a great thing to have accessible, with resources after each question for people to go search out the answers.

Dave Mark on June 26th, 2008

As I mentioned, we are going to tackle one per week on the forums. The link to the specific forum is above. I don't know if that will be in time to save your job or not, though! ;-) There are many resources around - however, many times the resources are concepts rather than solutions. In order to actually solve a problem, you really just need to wing it.

PaulTozour on June 26th, 2008

[QUOTE=Eric_Gilbert;3174] And if there's "existing industry knowledge", I want those golden nuggets of knowledge...so I can learn....and maybe keep my job for another week... :) So where could we find out the answers to those great questions? Where can I get this tribal knowledge? Are there online resources that my searches are just missing?[/QUOTE] All of them can be found in the various links at [url]http://www.freewebs.com/paultozour/resources.htm[/url] ... especially the various AI Game Programming Wisdom books and the AI sections of the Game Programming Gems series that Steve Rabin links to from his web page. That's a ton of material, though, and admittedly there's a lot of chaff among the wheat. I'd definitely like to do a presentation at some point explaining my answers to all these questions ... but I'm very reluctant to do it anytime soon, as I think it's important to let other folks have a crack at it and see what answers they come up with (and I don't want to spoil the opportunity for them to be used for the "Solve This!" forum on this site).

Dave Mark on June 26th, 2008

[quote=PaulTozour;3184](and I don't want to spoil the opportunity for them to be used for the "Solve This!" forum on this site).[/quote] How gracious of you. :-P

PaulTozour on June 27th, 2008

[QUOTE]If I were in the position of hiring AI developers (I'm speaking theoretically, of couse; I'm actually on the other end of the table a lot these days), I would argue that the game-specific solutions should be crafted on top of the foundation of existing industry knowledge. It's great to apply creativity, and it's always absolutely necessary to make an AI system that fits your specific game, but I would want any developer I hire specializing in AI to have a broad enough base in current "best practices" that he won't try to reinvent the wheel when faced with a new problem.[/quote] Just to add a bit more detail to my comment here: I believe that as an industry, we're going to have to standardize our techniques and design patterns for game AI more than we have in the past if we want to advance. No one would hire an engineer to write a renderer who didn't understand basic concepts like a "frame buffer" or a "quaternion" or "matrix multiplication," and AI is no different -- we increasingly have a set of well-defined, tried and tested techniques and design patterns we can apply to the most common problems in game AI. Having said that, even if you don't personally care about a candidate's familiarity with established game AI methods, I do think these questions will give a good sense of what approaches a candidate would use when faced with an unfamiliar problem.

Dave Mark on June 27th, 2008

[quote=PaulTozour;3213]I believe that as an industry, we're going to have to standardize our techniques and design patterns for game AI more than we have in the past if we want to advance. [/quote] I would suggest that maybe we do have an emerging vocabulary and the precursors to standardizing approaches to problems. To paraphrase Walter Piston, one of the seminal authors of music theory books, "Theory rarely precedes practice but is rather a collection of observations on what has been come before and subsequently accepted as successful." This approach encompasses what tends to be the fallout from sources like GDC and the various AI tomes. If it has worked for ourselves, we share it. If it has worked for others, we copy it. Eventually, it becomes an accepted practice through sheer momentum alone.

zoombapup on June 27th, 2008

About the education side of AI. I have to say, its pretty far fetched to expect a game dev program to be able to deliver a really complete grounding in AI techniques. I know that's not what Damian was saying, but I hear it all too often "game programs didnt teach person X technique/technology Y". I also hear the "we would take a regular CS grad any day" thing too. I'd just like to point out that there is NOTHING automatic about a CS grad that makes him/her more capable than a games grad. Frankly, when I was taking CS it was probably 20% useful and the rest was completely out of date rubbish. The fact is, it is the student that makes themselves. Courses only offer them the opportunity to do that quicker and in a more supportive environment. I can tell you from experience that lazy students coming into a University hardly ever turn into hard working ones at the end. Similarly a hard working and high quality student will always end up as a high quality worker. The difference is in what they have been exposed to. I simply cannot see why people think that computer science somehow prepares people for a life in the games industry better than a course that is ABOUT the games industry (and preferably like ours actually has been driven by the industry itself). People confuse individuals attainment of knowledge with the programme of study they undertook. However you could have the best course in the world and a poor student can manage to scrape through. Is it then the course that is at fault if an interviewer comes across that student and isnt impressed? As for the AI specific issues, I think that overall, AI is probably too specialised for a junior programmer, which is pretty much what any graduate is. Frankly, I'd expect a company to want to try the graduate out in many different areas before letting them settle on one thing. Anyway, if any of MY students want to do game AI, they can do :)

Dave Mark on June 28th, 2008

[quote=zoombapup;3219]I'd just like to point out that there is NOTHING automatic about a CS grad that makes him/her more capable than a games grad. Frankly, when I was taking CS it was probably 20% useful and the rest was completely out of date rubbish.[/quote] That, of course, speaks to a larger problem that CS degrees are almost to the point of being optional. Personally, I took some CS in high school in 84-86 (yes, I'm old) and then 1 1/2 at DeVry in 87-88. I learned PASCAL and a little COBOL. I have since learned 5 languages, relational database modeling, NT networking, was an MS Exchange Server specialist when it first came out in 96, and a number of other odds and ends in the IT world... all self-taught. I would have had to go to school continuously since 89 to do all of that. (Oh yeah, I was in the music biz from 90-94 so I wasn't keeping up with the CS stuff during that period.) I'm self-taught in AI as well... and, while I'm no God-like figure there, I can pull off some pretty nifty stuff. But I needed to be a solid programmer first - THEN an AI programmer. So, while I agree somewhat with Damian on his premise that you need to have solid CS skills, those don't necessarily come from a degree program either. Minor semantics there.

kofman on June 29th, 2008

I am currently a student at FullSail University. For those not familiar with the way the program is structured. Courses are usually a month long, coupled with one other. We're in class at minimum of forty hours a week on a rotating schedule that ranges from 9am-5pm on M-W-F, and 5pm-1am T-Th. I'm emphasizing the environment to help draw contrast between a typical CS degree a game degree. In May, I had successfully finished my course in Artificial Intelligence, the very same that Mark previously pointed towards in the beginning of his blog post. The class is taught by Jeremiah Blanchard, who in his introduction claimed the class to have the highest failure rate in the program. Due to the amount of time, lecture one, coupled with lab one; began with a review on data structures. A review, since the official class had been absent for roughly a year. But the applications were quite simple, linked lists, hash tables, and tree traversals. Most CS students would more than breeze through this section, showing off their knowledge of red-black trees, and other nifty tree balancing techniques. So here is a short list of the classes that followed and their highlights. 2. Game Playing - MinMax, ExpectiMax, Greedy, etc... The lab involved us implementing the MinMax algorithm for a Reversi game. 3 & 4. Path Planner - Two options were available, the grid based project or the hexagonal. In both cases we had to implement Breadth First > Greedy > Uniform Cost > A* > and Waypoint Graph traversal. 5. FSM - A simple lab that speaks for itself. You can see the example [URL="http://www.flickr.com/photos/40996228@N00/2620711792/"]here[/URL]. 6. Flocking - along with other steering behaviors. 7. Decision Trees 8. Neural Networks - (edit: I almost forgot, we had two parts to this. One of them involved a way point finder using nueral nets). Although it’s true that we didn't cover the finer points of AI, the interest was piqued for many. The advantage of such a fast and furious program is the potential for the classes to remain current, and in fact classes are being added and dropped almost every other month. At GDC this year I had the pleasure of speaking with Damian Isla who had confirmed my belief of the impossibility that is entry level AI. He asked if I had any experience with Animation as a possible alternate route, and at the time I had not, nor were their specific classes offered in the curriculum at the time. Only a month after GDC, a class on Animation was added to the curriculum and is taught by the same instructor that teaches Engine Development 1. I might have come off a tad bit strong in this reply, but I feel it’s important to truly understand what game schools are truly about, and how each is so very different.

PaulTozour on June 29th, 2008

[QUOTE=PaulTozour;3184]All of them can be found in the various links at [url]http://www.freewebs.com/paultozour/resources.htm[/url] ... especially the various AI Game Programming Wisdom books and the AI sections of the Game Programming Gems series that Steve Rabin links to from his web page.[/QUOTE] One more quick note ... [URL="http://www.amazon.com/Artificial-Intelligence-Kaufmann-Interactive-Technology/dp/0124977820/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1214765392&sr=8-1"]Ian Millington's book[/URL] just arrived from Amazon yesterday. I haven't had time to do much more than skim through it yet, but it does seem like a pretty solid and pragmatic introduction to game AI, and I think it would also give you good answers to most of my interview questions.

kofman on June 29th, 2008

[QUOTE=PaulTozour;3263]One more quick note ... [URL="http://www.amazon.com/Artificial-Intelligence-Kaufmann-Interactive-Technology/dp/0124977820/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1214765392&sr=8-1"]Ian Millington's book[/URL] just arrived from Amazon yesterday. I haven't had time to do much more than skim through it yet, but it does seem like a pretty solid and pragmatic introduction to game AI, and I think it would also give you good answers to most of my interview questions.[/QUOTE] I have opened and closed the book on hundreds of occasions, I've yet to fully understand the middle of it on tactical planning, but I'm using the ideas from the chapter on execution managers in our final project game. I strongly vouch for it.

Ian Morrison on June 30th, 2008

On the subject of a CS degree, I'm taking one right now and I can echo the sentiment that it doesn't seem to mean all that much. Granted, I haven't gotten into the third year courses yet (which are starting too finally look more interesting). However, I've barely learned anything new within two years, since I've been programming for ages. All I can really say I've picked up so far is this: *The stuff from my algorithms class *I know Java, which is a hop, skip and a jump from C++ *My coding style has gotten cleaner *I learned some linear algebra For the most part, I've just been teaching myself stuff... the degree is mostly about credentials.

Dave Mark on June 30th, 2008

[quote=Ian Morrison;3272]For the most part, I've just been teaching myself stuff... the degree is mostly about credentials.[/quote] And even those are somewhat loose considering that requests for them are usually followed by the phrase "or equivalent experience".

Kevin Dill on June 30th, 2008

[quote=PaulTozour;3263]One more quick note ... [URL="http://www.amazon.com/Artificial-Intelligence-Kaufmann-Interactive-Technology/dp/0124977820/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1214765392&sr=8-1"]Ian Millington's book[/URL] just arrived from Amazon yesterday. I haven't had time to do much more than skim through it yet, but it does seem like a pretty solid and pragmatic introduction to game AI, and I think it would also give you good answers to most of my interview questions.[/quote] I used Millington in the class I taught this spring, and I was quite happy with it. We have some philosophical differences, but it is the most complete and robust introductory book on game AI I've seen to date. I used [URL="http://www.amazon.com/Programming-Game-Example-Mat-Buckland/dp/1556220782/ref=pd_bbs_1?ie=UTF8&s=books&qid=1214865421&sr=8-1"]Matt Buckland's book[/URL] previously, which was also quite good but not as thorough in its coverage. -K

Dave Mark on July 1st, 2008

[quote=Kevin Dill;3288]I used Millington in the class I taught this spring, and I was quite happy with it. We have some philosophical differences, but it is the most complete and robust introductory book on game AI I've seen to date. I used [URL="http://www.amazon.com/Programming-Game-Example-Mat-Buckland/dp/1556220782/ref=pd_bbs_1?ie=UTF8&s=books&qid=1214865421&sr=8-1"]Matt Buckland's book[/URL] previously, which was also quite good but not as thorough in its coverage.[/quote] I've got Alex's, Mat's and Brian Schwab's... oh... and Russell & Norvig's. Now THAT is a beast! Sounds like I should pick up Ian's as well, eh?

Dave Mark on July 1st, 2008

[quote=Kevin Dill;3288]I used Millington in the class I taught this spring, and I was quite happy with it. We have some philosophical differences, but it is the most complete and robust introductory book on game AI I've seen to date. I used [URL="http://www.amazon.com/Programming-Game-Example-Mat-Buckland/dp/1556220782/ref=pd_bbs_1?ie=UTF8&s=books&qid=1214865421&sr=8-1"]Matt Buckland's book[/URL] previously, which was also quite good but not as thorough in its coverage.[/quote] I've got Alex's, Mat's and Brian Schwab's... oh... and Russell & Norvig's. Now THAT is a beast! Sounds like I should pick up Ian's as well, eh? After

Dave Mark on July 1st, 2008

[quote=Kevin Dill;3288]I used Millington in the class I taught this spring, and I was quite happy with it. We have some philosophical differences, but it is the most complete and robust introductory book on game AI I've seen to date. I used [URL="http://www.amazon.com/Programming-Game-Example-Mat-Buckland/dp/1556220782/ref=pd_bbs_1?ie=UTF8&s=books&qid=1214865421&sr=8-1"]Matt Buckland's book[/URL] previously, which was also quite good but not as thorough in its coverage.[/quote] I've got Alex's, Mat's and Brian Schwab's... oh... and Russell & Norvig's. Now THAT is a beast! Sounds like I should pick up Ian's as well, eh? After all, AI knowledge doesn't grow on trees. (Although you could make the case that the AI books do.)

Andrew on July 1st, 2008

I might have to grab that once I'm doing reading my existing books. I myself am aiming at any low level programming job then trying to get into AI from there if possible :)

If you'd like to add a comment or question on this page, simply log-in to the site. You can create an account from the sign-up page if necessary... It takes less than a minute!