AI and Computer Games

Specific AI Techniques

Excalibur Project
Excalibur is an autonomous agent architecture whose goal is to provide a complex computer-game environment in which the agents would operate. These agents not only have to plan and make decisions in a dynamic world with incomplete knowledge, but they also have to communicate with other agents and work as parts of a group as well.

Genetic Algorithms
An explanation of genetic algorithms, and how they might work well with game AI.

Intelligent Agents in Computer Games
A paper detailing the authors' SOAR interface to the popular computer game Quake II.

Machine Learning in Games
A site whose title is somewhat misleading. It is actually more of a repository for AI researchers and game programmers alike. It contains links to a number of papers, techniques, and current projects.

Machine Learning in Games Development
An article that suggests that Machine Learning is rarely, if ever, used in completed computer games. It provides an explanation of what machine learning is (without much explanation of the theory of counting and such): the performance element, learning element, and so on.

Steering Behaviors for Autonomous Characters
A paper on how to make autonomous characters in animation and games move in a life-like manner through steering behaviors.

Who's Doing What?

AI in Games: From Black & White to Infinity and Beyond
A website detailing the AI used in the recent game "Black & White". It discusses autonomous agents, feedback-based learning, and decision trees. It also extrapolates from "Black & White", conjecturing possible directions for future AI in games, such as infinite goals, and real-time planning.

Angband
Angband is a descent through randomly generated dungeons. As one goes deeper, more fearsome monsters are encountered. These monsters are more than just better statistics and a different graphical tile: the monsters also get smarter as you descend. Angband and some of its variants have a player-toggleable option that allows monsters to track the player by scent and sound as well as sight. Certain monsters can also track better than others: canines and the various types of hounds can smell the player from hundreds of feet away, and attack in packs. But scent is also unreliable. Though each time the player moves into a square his or her scent lingers for a while, it is only temporary, and degrades over time, so that after a while, it becomes unreliable.

Complete AI Interviews
Interviews with the AI designers of games such at Unreal Tournament 2003, Deus Ex 2, and Ghost Recon. They discuss what makes good and bad game AI, and why good AI takes so long to develop.

Game AI: The State of the Industry
This article is the basis for information on the two games mentioned above, but it also contains a number of other facts. One is that finite and fuzzy state machines still seem to be the industry standard. Genetic algorithms and neural networks are infrequently used because of a perceived difficulty arising from their non-determinism.

Microsoft's Age of Empires
To make the AI's job easier, Age of Empires uses terrain analysis. The result is a pathfinding algorithm that is more efficient than the standard A*. As well, the game uses so-called influence maps. These maps allow certain structures to be identified as "key structures", and can find optimal placement of buildings relative to these structures. These maps are also used to plan attacks: if any enemy structures are known, the AI will plot out the best possible attack route, so that early warning to the enemy is minimized.

Red Storm's Force 21
Force 21 takes a different approach to pathfinding, drawing on research in visibility graph analysis to divide up larger sections into "reachable" and "unreachable" areas, leaving implementation issues up to the individual units.

The Sims
Although you can do things to make your characters react in this game, they are by and large autonomous agents.

Quake 3
Quake 3 uses a pathfinding system called the Area Awareness System (AAS). A detailed explanation of it can be found here.

Virtua Fighter 4
Virtua Fighter 4 allows you to create AIs, and train them using a form of supervised learning. After a fight, you can tell it whether it was a good fight or not, which the AI can then use as information in future fights.

Warcraft 3
Warcraft 3 uses autonomous agents for better unit behaviour.

Researchers, Research, and Conferences

Alexander Nareyek
The website of Alexander Nareyek, a researcher interested in AI in games. He has written papers detailing approaches and fields which might be appropriate for game AI research, and his thesis is an excellent work which combines agents, planning, constraint programming, and local search. The formal framework he provides is implemented as a computer game to show its viability. He also provides a list of papers, some of which might be as useful as the ones mentioned above.

Artificial Intelligence Magazine, January 2002
A publication of the AAAI, the January 2002 issue of AI magazine has, among articles on more traditional games, an article surveying the history of computer games and AI.

GAMES Group at the University of Alberta, Edmonton, Canada
A research group that produces high-performance strategy games, encompassing both traditional games such as Chess, Go, Poker, etc., as well as cutting-edge technology produced in association with industry giants such as Electronic Arts and Bioware.

GCDC00, GCDC01, GCDC02, GCDC03
Moderator's notes from the roundtables on AI in Computer Games at the Computer Games Development Conferences 2000-2003.

J.M.P. van Waveren
Mr. van Waveren created the Quake II bot Gladiator, which was extended to provide the core Quake III bot AI. His MSc. thesis describes the Area Awareness System (AAS) pathfinding method used in the bot.

John Laird's Computer Game Research
John Laird is a professor and associate chair of the computer science and engineering division of the College of Engineering at the University of Michigan. This page details his research in the field of computer game AI. It contains a number of his papers, as well as links to the source code of projects he has worked on. Of particular interest might be Interactive Computer Games: Human-level AI's Killer Application, described by Professor Laird on his website as "a general, over-the-top paper attempting to rally people to work on artificial intelligence and computer games." He also wrote an article entitled "The Future of Game AI" for the Gamasutra website, and maintains a list of interesting games from an AI perspective.

Research Directions for AI in Computer Games
A technical report of the computer science department of Trinity College Dublin. It describes the level of AI being used in the industry, as well as how AI is used in a number of different genres. It then identifies reasons as to why AI in the industry tends to be much less sophisticated than that studied in academia, as well as a discussion of game AI as an academic subject, and TCD's Game AI Project.

Robert Zubek
A Ph.D candidate at Northwestern, Mr. Zubek's research extends into "social" AI - creating bots and other forms of AI which can engage with the player socially. One of his projects, tt14m the trash-talking 14-year-old moron, attempts to model verbal posturing and emotional involvement.

Text Book: Game AI
The table of contents for what could be an academic text book on game AI. The idea is to demonstrate what might be useful for university courses on game AI, as there currently seems to be no academic textbook on this subject. It is meant to generate discussion rather than be an actual work in progress.

Towards an AI Behavior Toolkit for Games
An article by researchers who are trying to develop a toolkit for games that would allow programmers access to state-of-the-art AI ideas and advances, thus bridging the gap between academia and the industry.

Academic Courses

Computer Game Design at Northwestern
A course on computer game design offered at Northwestern University.

Game AI at RIT
A course on game AI at the Rochester Institute of Technology.

Game Programming at the University of Michigan
While not specifically a course on game AI, this course is intended to cover all areas of game design and implementation.

General

AI Depot
A website covering many aspects of artificial intelligence.

AI Wisdom
A book of articles on AI techniques used in video games by programmers in the industry.

Artificial Intelligence FAQ
Frequently asked questions about artificial intelligence.

comp.ai.games
A newsgroup devoted to game AI.

Game AI
A website devoted to the topic of artificial intelligence in games.

The Angband Borg
A 'bot that plays Angband as if it were a normal player looking at the screen. It was originally written by the maintainer of the game, though because the source is freely available, there are a number of variants for different versions of the game. It maintains a set of goals, the weight of which changes depending on the situation it finds itself in. Then, each turn, it looks at its surroundings and its goals, and does that which will best satisfy its current most important goal.

Game Development Resources

Articles

Amit's Game Programming Information
A resource for information on articles and particulars of game programming. Includes sections on pathfinding and A*, tile-based games, and more.

Gamasutra
A website with many articles covering all areas of game development.

Game Development Search Engine
A website containing many resources for game developers. Its search engine lets you search articles from many game-related websites, and it also contains links to other sites, with rankings showing their general usefulness.

Introduction to Writing a Bot
A tutorial that guides you through the processes of creating a bot for a game like Quake 2, Quake 3, or Half-Life.

Justin Heyes-Jones personal web pages - A* Tutorial
A tutorial on A* search, as well as an implementation written in C++, using the standard template library. It claims to be platform-independent, but isn't. However, removing the line "#include <conio.h>" in the source should allow you to compile it correctly under a non-Windows operating system.

Timeline of Knowledge Representation
An excellent timeline of knowledge representation from 10000 BC to 2003 AD.

Compilers

DJGPP
A 32-bit C/C++ development system for machines running some form of DOS.

GameDev
A Windows-based toolkit for developing side-scrolling computer games.

Haskell Compilers and Interpreters
Links to the Hugs 98, GHC, nhc98, and other Haskell interpreters and compilers.

Java Technology
Sun's Java website.

MinGW
A collection of windows-specific header files and tools which allow one to develop native Windows programs.

Python
The official website for the Python programming language.

The GNU Compiler Collection
A collection of compilers. Currently, it contains front ends for C, C++, Ada, Java, Fortran, and Objective-C. Distributed with almost every copy of Linux, and often with the BSD family of operating systems, this comes close to being ubiquitous outside the Windows world.

Libraries

Bayesian Networks in Java
A Java/XML toolkit for writing and using Bayesian networks in Java.

FEAR: Foundations for General Game AI
A project that bills itself as "a language independent open-source project providing portable support for the creation of genuine Artificial Intelligence within realistic simulated worlds".

Free Fuzzy Logic Library
A library useful for those intent on using fuzzy logic as part of their game AI.

Haskell Graphics Library
A graphics library for use with the Hugs Haskell system. There are demo snippets of code available on the website. The library is supposed to work on both Windows and Unix/Linux.

OpenGL
The Open Graphics Library, a widely-used general-purpose graphics library.

PyGame
A set of modules for the Python programming language which allow multimedia programming, and which are usually used for games development. PyGame is written on top of the SDL multimedia library.

SDL
The Simple Directmedia Layer, a C multimedia library which allows crossplatform multimedia access to the mouse, keyboard, graphics, and sound.

SVGALIB
A low-level SVGA graphics library for Linux.

Games and Engines

Angband
Though its graphics are extremely primitive by today's standards, Angband still has a fairly large user base, and is in constant development. Several years ago, the old maintainer cleaned up the source code considerably, so as to more easily facilitate variants of the game. Monsters, races, items, and so on are all specified externally in text files, so variants can quickly be made that way; and while the source is still quite large, it is extremely well-commented and well laid out.

Botman's Bots
A resource for bots for Half-Life and its associated modifications. It includes both source, binaries, and instructions on how to compile everything.

Crystal Space
Crystal space is a freely available (LGPL) 3-D game development kit. It can use OpenGL, Allegro, X11, and SVGALIB, depending on one's operating system setup.

Freeciv
Freeciv is a turn-based strategy game based loosely on the Civilization series of games. Its source is freely available, and the developers encourage contributions from the community.

Quake and Hexen 2 Source
A repository for the Quake and Hexen 2 source code, as well as modifications ("mods") for those engines.

Quake 2 Source
This site contains the final release of Quake 2, as well as its source code.

I welcome all suggestions for additions or revisions. My e-mail address is jcd748@mail.usask.ca.