Game AI Roundup Week #7 2008: 6 Stories, 1 Source Code, 1 Video, 2 Jobs

Novack on February 16, 2008

This week is a rather quiet on the game AI front in the build-up to GDC in San Francisco. However, by digging a little deeper we’ve found a bunch of smart links for you. This roundup is brought to you by Alex Champandard and Novack. If you have any news or tips for next week, be sure to email them in to: editors at

Remember there’s a mini-blog over at (RSS) with game AI news from the web as it happens.

Game AI Roundup

Turok Interview: Re-inventing the Wheel

Here’s another interview about Turok’s and its acclaimed AI, already featured in video 1 and video 2 a few weeks ago.

“We knew that we wanted to create the impression of a realistic ecosystem. At the same time we couldn?t model true dinosaur behavior because it’s an action game and it could be boring. We went through a few phases in our research and development of the creatures.

In our first phase we learned as much as we could about dinosaurs, the historical facts of their time on the planet and theories on their behaviors and interactions. In the second phase we looked at popular culture. We looked at Jurassic Park, and other various films and books to see the different influences that people would have that would live up to expectations.”

Anyone played the game care to post a short review?

Prototype AI for Green Vegetables

Play With Your Peas

Dan Cook over at is providing a full design for a game: Play With Your Peas, along with fancy graphics for programmers who want to prototype a simulation game. The design has many challenges when it comes to the AI, and Dan has the following advice:

One problem that is common to AI-driven systems is that most of the behaviors go on underneath the cover, away from the player’s eyes. It is very easy to fall into the trap of creating an intricate AI that ‘plays itself’ but is completely incomprehensible to the player. Instead of asking how you might make the most realistic AI system, I prefer to steal a page from Nintendo’s playbook. Instead ask ‘What is the simplest system that drives forward the player experience?’

Soren Johnson at GDC: A Farewell to Civ

Civilization 4’s lead designer and AI programmer Soren Johnson wrote a blog post about his upcoming talk at GDC next week:

“Essentially, I will be talking about the difference between thinking of the AI as the player’s opponent and thinking of it as simply an extension of the core game design (what one might call the difference between ‘good’ AI and ‘fun’ AI). There will also be a long section on AI cheating - the bane of my existence for many years - concerning which type of cheats are acceptable to players and which type are not, using Civ as an extensive case study. Further, I hope to prove that, for Civ at least, there is no such thing as - and never could be - a ‘fair’ difficulty level where the AI is playing the same game as the human. Your mileage , of course, might vary.”

The talk is inspired in part by his AIIDE ‘07 “Work in Progress” slides.

Computer AI: Playing Tetris

“This article describes how a computer can play the classic video game Tetris by getting information about the board, determining good actions, and performing those actions. […] An ordinary USB web camera was used to enable the computer to “see” the screen of the other computer. A relay board was controlled via an RS-232 interface to enable the computer to “press keys” on the keyboard of the other computer. Thus, the first computer has a relationship to the second computer that is similar to a typical human player’s relationship to a computer when playing Tetris; the game state is only known by looking at the screen, and player actions can only be initiated through a keyboard.”

Fregl: An Introduction to FRP

Luke Palmer introduces a new version of his Fregl library for Functional Reactive Programming. This kind of stuff is ideal for game logic, combining events and signals into elegant programs in the same way a behavior tree builds up control from modular logic. Here’s an example:

-- wait for a given amount of time
waitTime time = do {
  if time <= 0 then
      return ()
  else do {
      dt <- waitTimestep;
      waitTime (time - dt);

Discussion 0 Comments

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!