The Paris Game AI Conference 2009 took place earlier this month on June 10th and 11th, co-organised by AiGameDev.com and the CNAM where it was held. In total, almost 200 people from Europe and beyond attended this two day standalone event — with around 170 attendees per session on average. The event was based on last year's innovative workshop that we held for the first time after another conference in Paris, although this year was an complete upgrade in every way: the presenters, content and location were better in all aspects!
The whole event was made possible thanks to Stephane Natkin, director of the CEDRIC research lab, and Axel Buendia, CEO of the middleware company Spir.Ops. The rest of the organisational committee was pretty much only myself (Alex Champandard) and Petra (Mrs AiGameDev.com) — which explains the last few quiet weeks as we recover from the hectic months of organisation...
In the following post, you'll find the original slides for the presentations, my personal takeaway and executive summary from each session, and some references as appropriate. The recordings will take time to prepare and edit, but all audio and video will be published over the next four months in the AiGameDev.com Premium area. (Sign-up here if you'd like to see this again next year!)
Table of Content
On this page, you'll find the coverage of the following sessions:
That was day one, and day two follows:
There were many active bloggers and game development enthusiasts in the crowd who took notes during the event. You can find them here:
Stefan Maton's Feature on GameDev.net,
Andrew Armstrong's Coverage on his own site,
Gonçalo Lopes' Notes in our forums.
Also, special thanks to everyone who helped during the day, and Phil Carlisle for his invaluable support and contribution to the event.
State of the Industry
The conference started out with an informal ~30 minute session where I introduced all the speakers, and asked them about the current challenges of AI in the games industry. This session certainly felt experimental, but contributed heavily to the friendly atmosphere that persisted throughout the event — and many attendees appreciated that compared to other conferences.
The basic takeaway from this session was a theme that was left open at the end of the AI Summit. At the end, a veteran programmer called Brian (who worked on Starcraft's pathfinding system at Blizzard) asked a question along these lines:
“If you had to sum up the last ten years in game AI in one sentence, what would you say?”
Obviously, it's a hard question and the answers that were given at the time weren't particularly conclusive. Brian mentioned this at our AiGameDev.com Launch Party that evening, and I gave him the following answer — which he seemed much happier with:
“We've mastered the technology to the point where the major problems we have now are primarily in production and design.”
Of course, this doesn't mean there's no innovation to be done in technology, but multiple sessions emphasized the importance of design and its interplay with the technology.
Emotions in Game Characters
People: Phil Carlisle
Phil presented an overview of recent progress adding character and emotion to in game NPCs, as well as a review recent research in the field for developers who are curious about emotional reactions for game characters. He’ll also discussed this from a practical perspective using his work as the basis, outlining the techniques that are ready to be applied.
Phil got much more time to share his ideas than the last time I heard him speak, and he's made visible progress since then. Though he could have gone on for another 45 minutes!
There are various emotional models, but they all boil down to a set of floats!
The usual sense / think / act routine needs to be rethought for including emotions.
There's a big architectural diagram that most researchers use to implement their emotional systems.
Phil's behavior tree approach uses a blackboard, very similarly to the Killzone 2 AI presented later.
Coordinating Agents with Behavior Trees
People: Ricardo Pillosu
Recently, the concept of Behavior Trees has been gaining traction and was used in games like Spore or Halo 3. Crytek has adopted and developed this technology to also coordinate different agents in complex situations. After a introduction to Crytek's perspective on Behavior Trees, Ricardo provided examples on how this concept can be used to simulate group tactics.
It was fascinating hearing about Ricardo's behavior tree innovations in contrast to last year's Paris '08 Workshop, when Ricardo wasn't yet fully convinced about BTs. But as a testimony to Crytek's team, and the power of behavior trees, this year he talked about extensions of their implementation.
As for key points I took away from this:
Ricardo's approach deals mainly with coordination via timing, enabling and disabling branches on demand.
Building more complex squad maneuvers with this approach would require distributing additional information to behaviors using a similar centralized manager.
Ricardo also mentioned simplicity as an explicit goal, though in my mind the complexity is in the problem itself and not the solution. So, there are different ways to achieve this in practice: either hide the complexity from the designer and let programmers do the work, provide a limited set of parameters and sliders to control the behaviors, or use smaller building blocks and combine them as necessary. All of these tricks are generally useful, but my favorite is the third as it results in more modular code — even though that's not what I'd always expose to designers.
Behavior Trees for Next-Gen AI Alex J. Champandard GDC Lyon 2007 Watch Online (free registration required)
Squad Behaviors Discussion
People: Florent Dotto, Mieszko Zielinski, Mikko Mononen, Ricard Pillosu
This Q&A session follows Ricardo's talk; it features a panel discussion with Mieszko and Mikko, talking about squad behaviors in general. What are the biggest challenges and key points that we need to address going forwards? How can we improve the behaviors and make them easier to author?
Since I moderated this panel, many of the questions were very relevant to me :-) So I got a lot out of this session, in particular:
Intuitive Control — Mikko mentioned an idea he had of using war maps, like sketches drawn in the sand indicating how a battle should take place. Obviously this would be a great interface for players to interact with squads, though the bulk of the work would be in the pattern recognition and not the group logic!
Cheating — Mieszko pointed out that it's relatively simple to make a squad behavior that doesn't cheat, simply sharing information from individual members. I suggested that having "embodied" individuals that don't cheat is possibly enough, then you can have the squad give out orders knowing how to maximize player satisfaction and using more information if necessary.
Top-Down — There are two choices for building group behaviors: implicit coordination based no shared information (bottom-up), and explicit ordering (top-down). Mikko mentioned he preferred the top-down approach.
Obvious Behaviors — Everyone emphasized the need to for making the group behaviors over the top, including audio queues and gestures. These can even work on their own without group behaviors as in F.E.A.R. In Crysis, a lot of time was spent making sure the person making gestures was visible on screen!
One fascinating topic we didn't have time to address, is building a mixed squad with NPCs and human players together. The challenges here are two-fold, trying to understand what the player is doing and adapting to that, as well as behaving in a combat situation context sensitively.
The AI for Killzone 2's Multiplayer Bots
People: Alex J. Champandard, (Tim Verweij), Remco Straatman
This talk will discuss the implementation of bots in Killzone 2’s online and offline multi-player component. We will discuss the overall hierarchical AI framework, the way individual bot behaviors such as badge usage are implemented using our HTN planner, how individual behaviors mix with the overall objectives in multiplayer modes and how we use data acquired at run-time to influence the tactical decisions.
I worked on this project and gave this talk, so my key points made it into the presentation and slides. However, a few are worth emphasizing:
HTN Planning — This conference will mark the advent of Hierarchical Task Networks. It's becoming increasingly hard to make a case for non-hierarchical STRIPS-like goal-oriented planners.
FPS & RTS AI — The question of using techniques from RTS games in FPS games came up during multiple GDC panels this year. The multiplayer bots in Killzone 2 made a big stride in this direction!
Incremental Evolution — Remco mentioned that the team has been working on the AI codebase over numerous years and multiple projects. I think this is very much obvious in the game.
HTN Planning: Complexity and Expressivity K. Erol, J. Hendler, and Dana S. Nau. Download PS
SHOP: Simple Hierarchical Ordered Planner D. Nau, Y. Cao, A. Lotem, and H. Muñoz-Avila. View Online
People: Bjoern Knafla
Bjoern will provide an overview of the concepts and techniques that are the most commonly used for parallelizing code in the games industry, and present some of his own results applying multi-threading to a large crowd simulation.
I'll combine these notes with the following panel too. Here were my notes:
Design for Memory — When paralellizing code, if you don't think about your memory accesses your game may end up being even slower!
Rethinking OO — Object oriented design doesn't map directly to nice multi-threaded code. You'll almost be better off thinking at the plain C level!
Clean Code — There are many patterns that will help you parallelize code, but having a nice codebase that doesn't involve a large Entity.h file is a good thing!
Incremental — Don't try to do everything upfront, take your current code and move it to separate threads one piece at a time.
Parallelization of Game AI Bjoern Knafla Download PDF
The Art of Multithreading
People: Julien Hamaide, Markus Mohr, Bjoern Knafla
Bjoern's presentation will be followed by a panel discussion with Julien and Markus that looks into some of the more practical aspects of game AI multithreading. Desining and architecture for concurrency can be a bit of an art, so be prepared for more subjective and possibly controversial opinions!
Advice and Tales from the Trenches
People: Eduardo Jimenez, Phil Carlisle, Mieszko Zielinski
In this interactive discussion panel, these veteran game developers will tell the story about how they got started, share some of their experiences from working in industry, and give advice to developers who are looking to get into the industry as AI Programmers.
There were some interesting stories and perspective shared, but I'll save those for a separate blog post. Here's some advice for people trying to get into industry:
Generalize — Even though you're likely to join large teams and work on specific problems, having general knowledge in game development and mastery of C++ will help you being able to solve anything that's thrown at you.
Go Indie! — Everyone emphasized that the best thing you can do for your career is to build a game yourself. Phil also expressed surprise that so few students are becoming independent developers.
Be Lucky? — This one I found rather funny. Everyone on the panel, myself included, mentioned that they'd first got into the industry with a bit of luck... So make sure you're in the right places at the right time!
Multi-Unit Planning with HTN and A*
People: William van der Sterren
William's presentation will discuss the application of HTN and A* to help plan and coordinate groups of units. In the context of a turn-based strategy game, he’ll show how a planner can be used offline to create stimulating new scenarios for current games without the need for manual scripting.
This session was enlightening, for multiple reasons:
Mission Design — Using AI to automatically help design missions is a hot topic in the game development community, particularly since Left 4 Dead. It can add lots of depth and replayability to the same game content.
Web Services — Having the AI as a separate web-service I think is an idea that has potential, similarly to MMO clusters. I'm amazed Ruby's performance was good enough for this!
A* Heuristic Magic — There's no getting away from the fact that A* based solutions rely heavily on black magic. This is the case also to get good performance, as with any STRIPS-like solution.
Multi-Unit Planning with HTN and A* William van der Sterren Download PDF
HTN and Planning in Games Discussion
People: Remco Straatman, William van der Sterren
The Q&A session following William's talk will include an informal discussion including Remco about the benefits and risks of using HTN in games, provide advice for developers keen to look into this approach, and look forward for where to move next.
The topic of HTN Planners was one of the biggest ideas to come out of the Paris Game AI Conference '09. They combine many aspects of behavior trees along with the benefits of planning to reduce the authoring burden. You'll be hearing more about these in the future.
It was also interesting to hear Remco's perspective on the performance challenges of getting the HTN Planner to run in realtime on the PS3, including using a depth-first "ordered" search.
Interactive Narrative Generation and Story Telling
People: Daniel Kudenko
Daniel will be providing an overview over approaches to Interactive Drama, highlighting and summarizing the state of academic research on the subject, present an overview of selected systems, and point to potential avenues in industry collaboration to help you figure out where to start looking.
Approaches to Interactive Drama Daniel Kudenko Download PDF
Discussion about Emergent Stories in Games
People: Axel Buendia, Vincent Corruble, Daniel Kudenko
Researchers in the field of procedural storytelling will answer questions from developers, and explain how academia would tackle many of the narrative challenges faced by modern games. Axel will act as the industry connection using examples from games like Far Cry 2, GTA 4 and S.T.A.L.K.E.R.
For this session, my biggest takeaway came from a comment in the audience. It's the idea of using a dual AI representation, which includes character and an actor. One of them is responsible for making sure the story elements are chosen according to a pre-defined personality, and the other is responsible for assuring a certain basic level of human responsiveness.
The Racing AI in Pure
People: Eduardo Jimenez
Eduardo will explain how the AI for riders is designed to prevent the feeling of rubber band AI that’s symptomatic of many racing games, and will present the solution to the problem applied in Pure which falls into the increasingly popular category of “experience management” for games.
I very much enjoyed Eduardo's presentation, as it shows the importance of design in the whole process of creating critically acclaimed AI. It also falls into the domain of experience management, which is the area to be involved in at the moment! Some notes:
Groups — Eduardo made it clear from the start that having the AI form groups with the player was a design goal, and this made the game much more fun.
Skills — Many games actually include the idea of "AI skills" and Eduardo explained how the idea of game balancing could be done in other genres with a similar approach.
Player-Driven Design — The idea of combining a player-centric approach with mostly autonomous AI is something that every game developer needs to address.
Game Characters from Animation to AI
This panel brings together an artist/animators, and animation programmers/designers to discuss the challenges of next-gen animation. How can we improve our current animation workflows to get around the usual motion capture problems? How can we improve the quality of characters without having gigabytes of motion capture?
This session was setup based on the increasing need to know and understand character animation to build good AI. AI is also the best ally that animators have for improving animation quality. I'm a part-time animation geek, so I got a lot out of this session:
Gaze & Head Tracking — While most AAA games already use some form of eye and head movement, there's still a fair amount to be done in this area. In particular relating to the following...
Animation Timing — One thing that Christiaan emphasized is that animation is really all about timing. Things like the muppets and the fraggles are more expressive than game characters because they have timing.
Design above Technology — A recurring theme was that we have already lots of technology that can help us build more expressive characters. The question is more about finding situations and cases where this pays off.
Multi-Disciplinary Teams — Based on the panelists' experience, having AI and animation programmers work alongside animators helps a lot, and integrating everyone into a "Character Team" made a big difference.
Building Navigation Meshes by Voxelization
People: Mikko Mononen
Mikko will talk about an open source R&D project of his called Recast. The project is based on the idea of converting polygon soups into navigation meshes that can be used for pathfinding in space. He’ll present his approach step by step and discuss the benefits of this approach compared to other techniques.
I've seen Mikko's work and masterclasses in the past already, so my takeaways were mostly not technical, instead:
Bouncy Lines — In the latest version of Mikko's library, he uses arcs as connections between nodes to better visualize the links between areas.
Visualization — It struck me during the presentation how important debug visualizations are, and how useful they can be for explaining concepts.
Seeing nearly 200 people passionate about game AI come together during these two days was incredible, and certainly one of the most rewarding moments of my professional career. A very large number of programmers from game studios around Europe attended including Ubisoft, Guerrilla Games, Arkane, Recoil Games, People Can Fly, Crytek and more. On top of that, a majority of game AI middleware developers were in the audience, including Wednesday's coffee break sponsors Havok and of course Spir.Ops — with only one notable absence from Germany.
What's particularly amazing is that everyone came especially to hear about artificial intelligence in computer games, and not just because this event was an appendix to another bigger conference which they happened to attend. (This was the case last year for our Paris Game AI Workshop '08.) On top of that, we were extremely lucky and thankful for the world-class lineup of speakers, who came not to get a pass to a conference but because they feel genuinely passionate about their topic. This passion and friendly atmosphere was apparently one of the most unique things about this event for attendees.
To be honest, this event was a lot of work to prepare and organize — more so than Petra & I expected. But based on all the feedback, it's been incredibly valuable for both the European community and for game developers outside of the U.S. looking for a more a more accessible industry-oriented conference on game AI. We have pages full of things to improve, and the event will definitely return. Some major things will change, but this event will be back next year!
Comments and Feedback
“Congrats once again on pulling the conference off: it was by far the most inspiring work-related event I've ever been to. I hope it will become a regular event.”
— Remco Straatman, Lead AI Programmer, Guerrilla Games.
“What a great event. Focused, consistently high quality material, inspiring presentations. Well done to everyone involved!”
— Thomas Young, Founder, PathEngine.
“This conference was a real deal — cutting edge presentations and experienced speakers. My take away list from this one is impressive! I feel this event can really push Game AI forward!”
— Mieszko Zielinski, AI Programmer, People Can Fly.
“I really hope this will become a regular event! I will definitely try to attend next year again. It was really inspiring and useful to see implementations of planners and BT's for example. Emotions in characters was a real eye-opener for me. We will start and try to implement some of these things in our game as fast as we can. Thank you!”
— Joakim Wahlström, Gamplay-Programmer, Fatshark, Sweden.
“Awesome conferences, where professionals are sharing their knowledge, and their passion. It's quickly going to be the reference in the AI community.”
— Xavier Dolci, Lead AI Programmer, Ubisoft Montpellier.
“Very interesting conferences, covering a wide array of subjects (wide enough to be sure that everyone learned something during these two days). I'd definitely want to be there for a second edition...”
— David Steinberg, Senior AI/Gameplay Engineer, Darkworks.
“Great talks, real experts and real solutions for real issues in game AI. Very very interesting.”
— Guillaume Chatelet, Lead Programmer, Mikros Image.
“The very down-to-earth, pragmatic approach of the presentations and panels succeeded in making all the various topics much more approachable. In the end of the day, we all want to apply good ideas to our own games in practice, and I think I can do just that with virtually any of the communications presented at the Paris Game AI Conference '09.”
— Gonçalo Lopes, Software Engineer, YDreams.
“The conference gave me a comprehensive insight into new approaches and solutions for problems I also have been dealing with. Going there will definitely reflect in our project and daily work. This is an event you don't want to miss.”
— Daniel Kollmann, AI Programmer, YAGER Development.
“This conference was very useful, with a lot of subjects being directly applicable in professional projects. Making it also a free conference is also something really nice, as everyone can intend it, whether there student, or belong to a small or big company. Sharing knowledge between everyone is the best step to advance quickly and make better games!”
— David Partouche, AI Programmer, Eden Games
“A very interesting and inspiring event. I've learn a lot and met great people i'm eager to work with in the future!”
— Clodéric Mars, R&D Software Engineer, Golaem
“It was two days packed with diverse and interesting topics. Not only that it was also a great place to meet intersting people from the Game AI-Field. Thanks Alex, I will definitely attend the conference next year!”
— Denis Schluchter, AI Programmer, YAGER Development