Upcoming Events
Southwest Gaming Expo
11/20 - 11/22 @ Dallas, TX

Workshop on Network and Systems Support for Games (NetGames 2009)
11/23 - 11/25 @ Paris, France

ICIDS 2009 Interactive Storytelling
12/9 - 12/11 @ Guimarães, Portugal

Global Game Jam
1/29 - 1/31  

More events...


Quick Stats
7510 people currently visiting GDNet.
2341 articles in the reference section.

Help us fight cancer!
Join SETI Team GDNet!



Link to us

Link to us

  Intel sponsors gamedev.net search:   

Paris Game AI Conference


The Racing AI in Pure

Eduardo Jimenez is Senior Programmer at Black Rock Studio. He was responsible for the AI in Disney Interactive's dirt bike racer Pure. He explained to us how the AI for riders is designed to prevent the feeling of rubber band AI. He did this by using Pure as an example and which iterations they did to create a believable racing AI.

To achieve this, as Eduardo told us, they have chosen to make usage of a race management mechanism. The reason for this is that games not using such a system usually have an AI that is either too good or too bad, and the AI won't react to the player's mistakes. Using a race management system allows developers to create games that are more challenging for everyone, which adapt to different situations and which actually are fun.

The first technique presented by Eduardo is called "Rubber band". In fact, a big rubber band is placed around the player, forcing the AI players to be around him. This is usually realized by any means necessary, if the player is too far behind or too far ahead. The player perceives this as cheating, because it's quite obvious what is happening. While this solution works almost always and removes completely the feeling of "lonely racing game", it usually breaks the illusion of fairness because the cheating used to achieve this is easy to spot.

Eduardo then talked to us about a skill based system. In a skill system a skill represents how well a player performs on a particular behavior or game play aspect. For each player and behavior, one skill will be stored which is normalized (0..1). Eventually all behaviors have the same skill value and the set of skills can be used to represent the personality of a character. In their first iteration of a skill based system in Pure, they used a static skill system which didn't work out well because it either was too hard or too easy and still could create "lonely racing".

Therefore they implemented a second skill based system called "Dynamic Competition Balancing" (DCB). This system modifies the skills dynamically during a race by applying rules to them. In their first approach to DCB, they tried to match the player index within the leader board but it proved to be too inflexible and thus didn't work well. To bypass this problem the system has been coupled with a grouping concept: the riders are split into different groups, each group having a leader and members. The members follow the leader and the player will have the possibility to jump from group to group. Unfortunately this solution wasn't very good because the groups were too loose and if the player jumped ahead of the first group, "lonely racing" still occurred.

This is where the system called "Race Script" has been implemented. It's the final method used in Pure and it worked out quite well. A race script includes a definition of a script and parts of the implementation. It's implemented by the designers and contains an explanation of how the race should ideally develop under different circumstances. The different player skills must be reflected in the document. The designer must understand that the race actually depends on the player's performance and thus the document is not a strict script but just guidelines.

The implementation is still based upon DCB but the main rule for grouping is the distance. Every rider aims to reach a point X meters in front or behind the player and the skills will be modified dependent on the distance to that point, not the distance to the player. Grouping is achieved through giving a similar aiming point to the AI riders. Since the aiming point moves during the race, the groups progress. The player is progressing from his perspective; he doesn't know the game is made easier for him because the changes are subtle. This is very rewarding for him. The difference to the rubber band technique described at the beginning of this speech, is the fact that the skills are limited to a certain range and the race follows a script.

Other mechanisms have been used in the game to ensure good playability. At the beginning of the race each AI rider only has 1 skill and the difficulty is changed every lap. In the last meters the AI will stop improving their skills to make the first place more accessible to the player.

To conclude his session, Eduardo said that the main goals have been achieved: Having challenging, fun races which do not contain "lonely racing" and which are subtle and rewarding. Throughout the entire race coherent groups are around the player, motivating him to progress. The method itself may be adapted to other types of games if a good set of skills can be generated. This mechanism also gives more control to the designers over the difficulty of the game.

AI Characters From Animation to Behavior

Christiaan Moleman, an animator who has recently been working at Arkane, brought together Phil Carlisle, Julien Hamaide and one additional person who's name I didn't catch (sorry for that...). The panel talked about challenges of next-gen animation. This was more a question & answer session, so I'll try to put the questions and answers into a coherent text, which is not an easy task.

Upon the question what AI plus animation actually is, Phil said, that it is bringing life to characters. Now, this is a nice metaphor because it not only shows how far we already could go and how far we actually go in games. Julien put his emphasis onto the fact that the animation actually is the showcase of AI because it displays what the AI wants to do. An AI without appropriate feedback is not enjoyable. He used the game Totem by 10tacle Belgium as an example: In Totem the player was able to make usage of his totems which were animals. The totem’s powers were transferred to the player's character and the character moved according to the totem's animal. The player immediately understood what kind of power he was using by only taking a look at the character’s movements.

Taking the example of The Muppets, Christiaan stated that with a single hand gesture and posture, huge expressions are achieved. The timing is key with the puppets posture. He stated that puppetry is interesting for animation because it generates much outcome with little efforts. The posture (gaze, body movement) seems to be a major point when it comes to generating the feeling of true emotions and real depths in characters. Most games don't catch this right because they do not use well the facial expressions and the body language. Concerning facial expressions the important point was stated that the gaze and the eye-lids play a major role. If someone is talking to me and he's not blinking with his eye-lids or if he's not looking at me, it doesn't feel right, it feels like something is missing.

This is also a point where designers have to improve and learn the subtle differences that make a character actually seem to live. But then, what most often hinders more impressive expressions is the fact that those animations are quite difficult to achieve and it's not quite clear if the effort is worth the money spent on it (means: does it generate more sales). Everyone is struggling to get the best graphics, but almost no company (if any) is trying to have the best animation system. Consensus is that almost all games that pushed the limits of animations have had success, both from the game review point of view and the sales.

The question is: Why don't we integrate better, deeper animations? While some agree that mentality has to change, others put emphasis on the fact that it's a question of how much added value it brings to the game.

Voxelization of Polygon Soups for Navigation

The last talk, by Mikko Mononen, introduced us to his R&D project called Recast. The project is based on the idea of converting polygon soups into navigation meshes using voxelization. Mikko is the Lead AI Programmer at Recoil Games and previously was Lead AI on Crysis. The speech was very technical and I must admit that I didn't take many notes because I was more interested by the things going on up on the screen. I haven't yet digged into navigation mesh generation and thus I had to listen hard to understand half of what he was telling us. Mikko used his open source project to explain his techniques. I've added a link to the project page if you're interested.

I've taken this part from the open source project page: Recast automatically generates navigation meshes. The Recast process starts with constructing a voxel mold from a level geometry and then casting a navigation mesh over it. The process consists of three steps, building the voxel mold, partitioning the mold into simple regions, peeling off the regions as simple polygons. The voxel mold is build from the input triangle mesh by rasterizing the triangles into a multi-layer heightfield. Some simple filters are then applied to the mold to prune out locations where the character would not be able to move. The walkable areas described by the mold are divided into simple overlayed 2D regions. The resulting regions have only one non-overlapping contour, which simplifies the final step of the process tremendously. Finally, the navigation polygons are peeled off from the regions by first tracing the boundaries and then simplifying them. The resulting polygons are finally converted to convex polygons which makes them perfect for pathfinding and spatial reasoning about the level. Recast



Conclusion


Contents
  Introduction & ToC
  Page 1
  Page 2
  Page 3
  Page 4
  Page 5
  Conclusion

  Printable version
  Discuss this article