We don’t have an AI section in the forums, but I figured at least a few developers on the forums here are interested in Game AI and might want to hear whats current, so I thought I’d write a quick post.
I recently (like last week) was at the Vienna Game AI Conference. Its the largest specialist Game AI Conference in the world and there are some great talks for both technology and the design side of AI. I’m not going to go over all the content or anything, but just note some takeaways and general feelings from the content I saw, in no particular order.
- Pathfinding is pretty much solved.
There were a couple of great presentations by Daniel Brewer (Warframe) and Ben Sunshine-Hill (Havok) that pointed to pretty much the hardest cases of pathfinding out there. Daniel showed their navmesh solution which allows the warframes to do ninja movements off pretty much any surface, allowing wall running and acrobatics and all that good stuff. They use a custom navmesh generator with hierarchy and some influence map propagation based on their procedurally generated levels. One interesting thing they did was use actual players to train the wall running of the NPC’s (basically leave breadcrumbs where players do the wall running and then have the NPC’s use the same places), which were then used to train new players about wall running. Ben showed a solution to the problem of parkour like traversal of a complex environment. Basically most of us would use swept capsule check from start to end point to make sure there was no collision when doing jumps and mantles, but those kind of checks have to become samples over say the whole length of a wall. His solution called Segment tracing(casting) uses a geometric method to essentially give a resulting function that could return a time to collision (i.e. where it collides if at all) along a continuous span like a wall more efficiently. This is implemented in Havok AI of course, but the overall idea sounded very good.
- Behavior trees and injection
Behavior tree’s are by far and away the most generally popular AI architecture used in games right now. But BT’s aren’t one specific architecture, rather they kind of express varieties of tree like structures that have all sorts of different methods for action selection (priority, parallelism, injection etc). There was an interesting talk by Thomas PLch (no that capital L isn’t a spelling error) from Warhorse studios about their use of behavior injection. Basically they have highly dynamic behavior trees that are altered on the fly by various entities. So for example if an NPC entered a tavern (its a “historically accurate” medieval game) then the tavern would inject some tavern specific behavior into the NPC’s behavior tree, then prune it out again when the NPC left the tavern. Similarly there was a hierarchy of areas (tavern, village, castle, house) that would each inject their own behaviors for NPC’s. I’d read a paper by Damien Isla from Bungie where he dismissed the idea of dynamically configuring behavior trees, but I always imagined it would be generally useful. It does look like a pain to debug though!
- Everyone uses smart things.
Smart Objects of the type made popular by Richard Evans on his work for the Sims. Basically all of the various talks presented some form of “smart” objects. These are essentially entities that coordinate the action of an NPC, such that the NPC can “use” them without knowing what its doing. So you have the NPC behavior as relatively simple and shift the complexity to the control of the thing being used. The reason this idea is common is that it allows you to add new things without having to keep rewriting your main NPC AI. A very common AI pattern.
- Systemic AI and Emergence is becoming acceptable
There was a great talk from Julien Vernier about the AI from the Far Cry franchise. They use a bunch of procedurally populated “encounters” that give small islands of interesting gameplay things (like for example an elephant attacking an enemy patrol) and then relied on the emergence of those encounters sometimes overlapping to provide highlights. There was a lot of discussion of “Systemic” (as opposed to linear scripted) AI and of course this sits well with an audience of AI programmers. It seems Ubi are really at the forefront of this “systemic” emergent design philosophy though. I hope more companies follow this idea up.
- Monte Carlo Tree Search
MCTS is definitely a useful thing to know about. Used in Rome 2 Total War amongst others. I’ve been seeing more and more discussion about this algorithm, worth looking up.
- Free-to-play and “Service” based development + Analytics
You have to be hiding in a cave not to notice the games industry swinging around to point towards F2P game development. While I share people’s concerns about it as a business model, it seems inevitable that we’re going to see more like it. Daniels talk about Warframe (a F2P sci-fi ninja combat game made with Unreal Engine I believe?) certainly got me thinking of the POSITIVE aspects of the F2P model. The fact that you can iterate and improve over time. That you can listen to your player base and give them more things they like rather than shipping and forgetting things. That the community of players actually has direct contact with the people developing the game actually seems to me like it hits most of my indie buttons (I’m very much of the indie mindset, just so you know). There was a talk during the AI Director workshop (ran just after the main conference) about analytics approaches and I started thinking that the F2P model is prime ground for using analytic data to help make better games (OK, so analytics is generally used for monetization and all that nasty stuff too, but lets gloss over that). I’m a research scientist for some of my time and I am really interested in how we can start using metrics data to help inform our designs, it seems like F2P games can be a great help here.
There was a lot of great content at the conference. You can sign up over at aiGameDev.com and I’m sure they’ll be putting some of it online (it was livestreaming during the day). See for yourself!
If anyone has specific questions I’d be happy to answer if I’m able. A load of the value at these kind of events actually comes from discussions over dinner, or from personal chats with people you may already know (I was talking to Meisko from Epic about how to encourage more feedback for his work for example).