AI Roundtable Moderator’s Report
Game Developer’s Conference 2000, March 10-12
Steven Woodcock
Ferretman@gameai.com
Background
Eric Dybsand, Neil Kirby, and myself have conducted the AI roundtables at the Game Developer’s Conference for four years now. Since the games industry is an ever-evolving forum so too are our roundtables, and we again modified our format slightly this year to accommodate feedback and requests from roundtable participants at the 1999 GDC.
Our roundtables this year attempted to span the breadth of the game industry by addressing different topics on each day. Day One (Friday) were the general AI sessions, in which participants in all three roundtables were encouraged to discuss any aspect of game AI and game AI development that they chose. Discussions were intended to be wide-ranging and free-flowing, with no particular focus on anything beyond what the participants in each session felt like talking about.
Day Two (Saturday) had focused sessions, each dealing with a particular genre of games and their related AI issues.
Neil's
session took on the subject of role-playing games (RPGs) and first-person shooters, while Eric focused on the sports game arena. My session was devoted to strategy games (both real-time and turn-based). This devotion of sessions to specific arenas of game development were intended to help satisfy attendees who had questions or comments specific to a current project, which might otherwise not come up in a more general discussion.
Day Three (Sunday) threw out the three parallel roundtables format in favor of a more panel-oriented discussion. The topic was "AI for Beginners"; in this session, we attempted to address the needs of developers new to the field of game AI who often didn’t know where to start. We also tried to reach out to artists, producers, and others involved in the game development process who were interested in the field of game AI but who really didn’t know much about it. Our hope with this session was that we would be able to both help developers new to the field and aid in bridging the "understanding gap" that can crop up between AI developers and others on their team.
Friday, March 10th
My first session was attended by 15 (out of a total of 52) between the three sessions) people, rather a drop from last year’s first session. Given that we were in direct conflict with the Bill Gates keynote address, however, this was completely understandable—in retrospect I’m rather surprised we did as well as we did. (In the future, however, it might behoove the GDC conference organizers to put more space in the schedule to avoid conflicts such as this.)
I began by briefly covering our intentions for the roundtable sessions (described above) and then announced our Third Annual AI Programmer’s Dinner. After a brief discussion on the details of the time and place of this event we began talking game AI.
The roundtable discussion was very lively, though it varied somewhat from previous sessions in that we tended to cover fewer topics more deeply. It was definitely something of a rude shock when we ran out of time…we could have easily run longer if we’d had the time. Nearly 2/3 of the developers present (9) were experienced AI programmers, and virtually all of them were actively involved in a current project. The highlights:
- Game AI Software Development Kits (SDKs):
We began with a discussion of the merits and problems inherent in developing and using a game AI SDK. A quick poll of the attendees revealed that none of those present felt that such a toolkit was either practical or that it would be useful for their particular project. We discussed the two toolkits that I knew about (Mathematiques Appliquees DirectIA and LouderThanABomb’s Spark!) to some degree—most of the attendees seemed unaware of their existence—and also talked about the AI-related capabilities of Motivate, an artist’s tool. As this discussion began to peter out one of the attendees who had previously been very quiet piped up and said that his company was in the process of evaluating DirectIA and thought it might be of some use. I asked him to email me privately regarding his experience with the product, and promised to post anything I learned on my AI page (www.gameai.com).
Also discussed briefly in conjunction with this topic was the matter of what developers would be willing to pay for such an SDK, should a useful one actually be available. Most felt that price was not a particular object; developers are used to paying (or convincing their bosses to pay) thousands of dollars for toolkits, SDKs, models, etc. today.
This tells us that if somebody can develop an AI SDK that would be flexible enough to meet the demands of developers they should be able to pay the rent.
- Path-finding:
A perennial topic at the AI roundtables, this year found rather less discussion of it than had often been the case in the past. Every developer present who had had a need to do path-finding for their game had used some form of the A* algorithm. Most had also used influence maps, attractor-repulsors, and flocking to one degree or another. Generally speaking the games community seems to have this problem well understood and is now focusing more on particular implementation details for specific games (i.e., path-finding in 3D space, doing real-time path granularity adjustments, efficiently recognizing when paths were blocked, etc.).
- Resources:
Another favorite topic, the conversation turned to the question of resources available for game AI after one of the attendees mentioned that they were working on a turn-based strategy game (Stars Supernova). They liked the fact that they had "nearly infinite" amounts of CPU and wondered how other developers felt about it.
A quick poll revealed some interesting statistics. Of the 15 attendees, most reported average CPU availability for their work at anywhere from 20-30%. Two turn-based games were in the works, giving those developers an effective 100% availability if necessary (though they were both quick to add that they did quite a bit of processing during the human player’s turn during otherwise idle CPU cycles). This gave an overall average CPU availability of 25%, a huge increase from the 10% last year’s group reported. Given the increased capability of today’s CPUs, combined with the larger percentages of resources being allocated, one can only conclude that companies are taking good game AI seriously.
A second poll revealed that game AI developers had plenty of manpower to get their jobs done too. Eleven attendees revealed that their project had at least one full-time AI developer, while three others reported one or more "half-time" programmers devoted to game AI.
- Formations:
The conversation then moved to talk of unit formations and the techniques being used by developers to make them behave realistically. While only a few of those present had actually had a need to use formations in their games the topic sparked quite a bit of interest (probably due to the recent spate of games with this feature). Most of those who had had to implement formations had used some form of flocking together with a strict rules-based system overlaying it to ensure that units stayed where they were supposed to. One developer, who was working on a sports game, said he was investigating using a "play-book" approach (much like that used by a football coach) to tell his units where to go.
Saturday, March 11th
Day Two was much more heavily attended than Day One, thus proving that we’d been significantly impacted by Bill Gates’ talk the day before. My room filled up quickly with 26 people and we began the session roughly 10 minutes early.
The focus for my roundtable this day was on Strategy Game AI, and we got started quickly with several participants having either comments to make or questions to ask. Overall we covered more topics in somewhat less detail than the first day, with some repetition:
- Terrain Analysis:
We quickly began with a lively discussion of the problems some developers were facing doing terrain analysis for their strategy game (a real-time game in the Age of Empires genre). One of the Ensemble folks (developers of AOE) briefly gave a preview of Dave Pottinger’s later GDC talk on how they performed this task in AOE, and some Q&A ensued between various attendees discussing the relative merits and demerits of various solutions. This conversation then rapidly evolved into a discussion of
- Resources:
As in the first day’s session, most developers felt that they had more or less enough resources to do the job of "good AI" well. Average CPU availability for those developers present (22 of the 26 present) was between 15% and 35%, with the turn-based guys (one developer) getting their usual 100%. Every developer was either using a thread to encapsulate the AI or considering doing so.
- Scripting/Extensible AI/User Modification:
The conversation then shifted briefly to a discussion of to what degree developers should modularize and parameterize their AIs so that a.) they could modify them to meet the needs of their producers and b.) users could "roll their own" AIs. Most of those present felt that it didn’t make as much sense in strategy games as in first-person shooters, though everybody admired the ‘bot approaches implemented by most FPS games released today. Several developers said that they were reluctant to provide the user with the ability to get into the "low level" AI affecting unit production and combat for their games, but did provide data files and hooks through which the user could affect AI "personalities" in one way or another.
- Game AI Software Development Kits (SDKs):
Almost inevitably the topic moved to the subject of AI SDKs again, with much the same overall opinion. Most of those present felt that any such SDK would be unlikely to meet their needs entirely, though everybody seemed to hope one or more SDKs would hit the market so they could be proven wrong. Feature-wise most felt that an SDK providing simple flocking or path-finding functions might work best. One developer said he’d like to see some kind of standardized ‘bot-like language for AI scripts.
- Smart Terrain:
The success of Will Wright’s The Sims brought this subject to the front towards the end of the session. Various developers thought that this was a great way to add some "flavor" to their strategy games, and to make units behave more realistically in crossing rivers, avoiding forests, etc.
Sunday, March 12th
Day Three—the "AI for Beginner’s" session. As described above Neil, Eric, and myself combined our three sessions into a panel discussion in the largest room. We could have easily taken more people—as it was we packed the room with 64 attendees and had to turn away a few others during the course of the hour. Neil and Eric took most of the questions while I recorded answers on a whiteboard and drew examples as needed.
Though it started slowly the session went quickly…we had more topics to cover than we could have possibly done in an hour. What follows are the questions I got onto paper together with the best summation of our answers (and related discussion) I could get down:
- To what extent can an AI know its environment?
There are several ways to prioritize your AI so that it’s only "thinking" about relevant events. The easiest is simple distance…think more about the things nearby and less about the ones farther away. Influence maps are another way of judging worth relative to a given unit’s position. Additionally, your graphics guy has already had to solve the problem of culling out inactive units or those too far away to be an influence…talk to him.
- Are there AI SDKs or libraries available?
A few. You get the most "bang" for your buck re-use wise when you’ve done it before…there’s nothing quite like building on your own code. There are some kits available: DirectIA (www.animaths.com), SOAR (www.isi.edu/soar/soar-ifor-project.html), and Spark! (www.louderthanabomb.com).
- How do I do path-finding?
An oldie-but-goodie. A* is king; find a good reference on it (there are several at www.gameai.com) and dig in. Djikstra’s is also useful though generally slower than A* for what most developers need. Bryan Stout wrote an excellent article on A* for Game Developer magazine (www.gdmag.com), and there’s an excellent discussion of the topic in general in the book AI: A Modern Approach by Russel and Norvig.
- What’s new in game AI?
Well, that’s a different question. Path-finding is pretty much solved. We’re seeing lots more dedicated AI programmers now—it’s rare to find a project that doesn’t have one or more such individuals. Behavior in games (especially first person shooters and sim-life games) is getting more realistic in general. Both ‘bots and flocking behavior seem to be widely used. Autonomous agents seem to be the "next big thing", along with "smart terrain" (both concepts demonstrated admirably by The Sims).
- Is speech recognition practical?
That depends on what you need. It’s hard code-wise and relatively expensive CPU-wise. Do you want to talk to the AIs and have them respond in context? There are problems with players speaking excitedly when under pressure (such as when a ‘bot jumps up behind their teammate). There are several SDKs to make the job easier…ViaVoice is one of the more popular. Neil Kirby’s paper from the 1998 GDC might also be of use; it should be available at www.gamasutra.com.
- How can I handle written language/speech?
The best examples are still the MUD-bots—Eliza, Julia, others. There are lots of good web pages out there on the topic; some of the best are www.verbot.com and www.textfire.com.
- How do I handle difficulty levels?
It’s hard enough to make the AI play a competent game, much less scale it. Throwing more units at the player is pretty much always easier, even if it’s not too elegant. Most games cheat.
- How can I build a learning AI?
Another great question. It’s a tough job though….it can be very difficult to tie cause and effect together in a game if they’re separated by several turns. Generally you’re drowning in data so it’s hard to pick out specific trends and turning points. It can also be tricky to prevent your AI from learning to be an idiot (drawing the wrong conclusions from noisy data). Some simple adaptation to the player’s moves is doable…most fighting games do some variation of that, and some ‘bots learn player preferences on weapons and such.
- What does "NPC" mean?
Non player character.
- How does one get experience in writing game AI, especially if you’re coming from an academic background?
Good question. Probably the best way to go would be to start with one of the first-person shooters (Quake, Half-Life, Unreal) and their ‘bot kits. They provide lots of support, tons of examples, and ready-made environments to test your creation in. RARS provides a similar environment for racing cars, and Mindrover (just released) promises to be an interesting toolkit of sorts (though nobody present had experimented with it yet).
- What are some good web sites for starting reference?
www.gameai.com, www.gamasutra.com, www.red.com/cwr/steer, www.red.com/cwr/boids.html.
Conclusions
The GDC 2000 AI roundtables (and subsequent AI Programmer’s Dinner) were a huge success and built well on previous years. Though turnout was slightly less overall than in the 1999 sessions (215 vs. 236 in 1999) we attribute this to our first day being scheduled opposite Bill Gate’s keynote.
Our current approach for topic selection (general discussion on day one, genre specific discussions on day two, and a beginner’s session on day three) seems popular and I’m inclined to continue with it. Our biggest complaint seemed to have been a familiar one—the roundtables are too short at one hour! GDC might wish to consider allowing a 1 ½ hour format in future conferences.
This was fun, and we should definitely do it again for GDC 2001.
Steven Woodcock
Ferretman@gameai.com
www.gameai.com