Scaling Up To More Sophisticated AI Without Overburdening Developers - Lessons Learned Marc Atkin...
-
Upload
dwain-york -
Category
Documents
-
view
215 -
download
0
Transcript of Scaling Up To More Sophisticated AI Without Overburdening Developers - Lessons Learned Marc Atkin...
Scaling Up To More Sophisticated AI Scaling Up To More Sophisticated AI Without Overburdening Developers - Without Overburdening Developers - Lessons LearnedLessons Learned
Scaling Up To More Sophisticated AI Scaling Up To More Sophisticated AI Without Overburdening Developers - Without Overburdening Developers - Lessons LearnedLessons Learned
Marc Atkin
Irrational Games
AGDC 4-Dec-2004
MotivationMotivationMotivationMotivation
Why Do We Want Better AI?Why Do We Want Better AI?Why Do We Want Better AI?Why Do We Want Better AI?
• Bad AI is always noticed
• AI often inconsistent between games – why can’t we build on previous work?
• The AI is a big part of what makes a game world immersive and fun
What’s Stopping Us?What’s Stopping Us?What’s Stopping Us?What’s Stopping Us?
• What makes AI complex?– AI has many possible reactions to
many situations– Many behaviours are operating on
the AI at any given time– Hard to account for all the possible
interactions
• Impression that academic AI research isn’t applicable (too slow, too complex, too flaky)
The Basic Idea: Use ModularityThe Basic Idea: Use ModularityThe Basic Idea: Use ModularityThe Basic Idea: Use Modularity
• It’s not just for coding anymore!
• Produces AI that is easier to understand and debug
• Produces AI that it reusable within and between projects
• The key point: Design the AI architecture so that it facilitates modularity
Tribes: VengeanceTribes: VengeanceTribes: VengeanceTribes: Vengeance
• First-person shooter
• Emphasises speed and freedom of movement (jetpacks!)
• 3rd in the series
AI ChallengesAI ChallengesAI ChallengesAI Challenges
• AI works in service of the game:– AI characters shouldn’t act stupidly– yet still be fun to fight
• AI’s should exhibit diversebehaviour
• AI’s should jetpack and ski• AI’s should react to their environment• AI’s should have recognizable roles
– Sniper, duelist, mortar user, etc.
System OverviewSystem OverviewSystem OverviewSystem Overview
NavigationSystem
NavigationSystem
PhysicsSystem
PhysicsSystemAIAI Game
World
GameWorld
PathfinderPathfinder
AnimationSystem
AnimationSystem
What makes our game What makes our game characters “intelligent”?characters “intelligent”?What makes our game What makes our game characters “intelligent”?characters “intelligent”?
• A large set of sophisticated, hand-designed behaviors
• Common sense reactions
• The ability to exploit opportunities
• A consistent long term viewof tasks to be accomplished
What makes our game What makes our game characters “intelligent”?characters “intelligent”?What makes our game What makes our game characters “intelligent”?characters “intelligent”?
• A large set of sophisticated, hand-designed behaviors
• Common sense reactions
• The ability to exploit opportunities
• A consistent long term viewof tasks to be accomplished
Tyrion: An architecture forspecifying and executingAI behaviour
How Tyrion WorksHow Tyrion WorksHow Tyrion WorksHow Tyrion Works
Resources, Goals, and ActionsResources, Goals, and ActionsResources, Goals, and ActionsResources, Goals, and Actions
• Goal: A description of adesired world state
• Action (or behaviour):A method for achieving a goal
• Resource:An entity required toperform an action
Resource HierarchyResource HierarchyResource HierarchyResource Hierarchy
Team
Squads
Vehicles
Characters
Driver/Gunners
Legs/Arms/Head
Resource HierarchyResource HierarchyResource HierarchyResource Hierarchy
Team Strategic level
Tactical levelSquads
Vehicles
Characters
Driver/Gunners
Legs/Arms/Head
IndividualUnits
Motor Control
Action/Goal HierarchyAction/Goal HierarchyAction/Goal HierarchyAction/Goal Hierarchy
Attack From All Sides
NormalAttackDuelistAttack
MoveTo
Squad
Character
Legs /Arms
Attack Goals
Fire Weapon
MoveTo GoalFireAt Goal
Grunt
Duelist
Action StructureAction StructureAction StructureAction Structure
• Goal satisfied by action
• Selection heuristic– Evaluates appropriateness of action
in a given situation
• Message callback functions for child actions
• Message callback functions for sensors
• Body (Unreal script latent code)– Typically executes over a number of game ticks
Example Action: SearchExample Action: SearchExample Action: SearchExample Action: Search
• Satisfies:SearchGoal( target, searchDistance )– Only action that satisfies this goal
• Child action callbacks:– Set errorCode
• Sensor callback:– Terminate action if target spotted
Example Action: Search (cont)Example Action: Search (cont)Example Action: Search (cont)Example Action: Search (cont)
• Body:– Store location and rotation– ActivateSensor( TargetSensor, target )– Loop over searchPositions:
• WaitForGoal( MoveToGoal, searchPosition)• Fail() if MoveToGoal was not achieved• Play LookingAround animation• Pause AnimationTime seconds
– WaitForGoal( TurnGoal, originalRotation )– Succeed()
Sensor HierarchySensor HierarchySensor HierarchySensor Hierarchy
• Sensors can build upon one another, too
DodgeSensor: Warns a character about incoming projectiles
EnemySensor: Maintains a list of visible hostiles
TargetSensor: Triggers when a particular unit is visible
Vision SystemVision System
AI and ScriptingAI and ScriptingAI and ScriptingAI and Scripting
• High level behaviours look a lot like scripts
• A script is essentially a one-time use behaviour
• Tyrion could be used to drive the scripting system
Example ScriptExample ScriptExample ScriptExample Script
• Executes when player enters trigger
• Spawns AI’s
• Moves AI’s into position and has them attack player
Example ScriptExample ScriptExample ScriptExample Script
• Executes when player enters trigger
• Spawns AI’s
• Moves AI’s into position and has them attack player
Sensor activation
Posting sub-goals
Execution ModelExecution ModelExecution ModelExecution Model
• 10 times a second:– Iterate over every resource:
• Order unmatched goals by priority• Find actions that achieve them• Tick every running action• Tick every active periodic sensor;
send messages• If an action completes, mark its goal as
achieved/failed; send messages
A Day in the Life of a GruntA Day in the Life of a GruntA Day in the Life of a GruntA Day in the Life of a Grunt
• A Grunt AI with three goals:– PatrolGoal (priority 40)– AttackGoal (priority 50, dormant)– DodgeGoal (priority 90, dormant)
• AttackGoal will activate when an enemy is sighted
• DodgeGoal will activate when a visible projectile will hit the AI
A Day in the Life (cont)A Day in the Life (cont)A Day in the Life (cont)A Day in the Life (cont)
Patrol is executing 4040
PatrolGoal AttackGoal DodgeGoal
legslegs
armsarms
A Day in the Life (cont)A Day in the Life (cont)A Day in the Life (cont)A Day in the Life (cont)
Patrol is executing 4040
PatrolGoal
Enemy spotted! Sensor wakes up AttackGoal
Attack executes; posts subgoalsfor legs & arms
4040 5050
AttackGoal DodgeGoal
legslegs
legslegs
armsarms
armsarms
5050X
A Day in the Life (cont)A Day in the Life (cont)A Day in the Life (cont)A Day in the Life (cont)
Patrol is executing 4040
PatrolGoal
Enemy spotted! Sensor wakes up AttackGoal
Attack executes; posts subgoalsfor legs & arms
4040 5050
AttackGoal DodgeGoal
legslegs
legslegs
armsarms
Projectile spotted! Sensor wakes up DodgeGoal
Dodge executes; needs legs arms continue executing Attack!
90904040
5050
armsarms
5050
legslegs
armsarms
X
X 5050X
A Day in the Life (cont)A Day in the Life (cont)A Day in the Life (cont)A Day in the Life (cont)
Patrol is executing 4040
PatrolGoal
Enemy spotted! Sensor wakes up AttackGoal
Attack executes; posts subgoalsfor legs & arms
4040 5050
AttackGoal DodgeGoal
legslegs
legslegs
armsarms
Projectile spotted! Sensor wakes up DodgeGoal
Dodge executes; needs legs arms continue executing Attack!
90904040
5050
Dodge finishes: legs resumeAttack subgoal
4040 5050
armsarms
5050
legslegs
armsarms
legslegs
armsarms 5050
X
X
X
5050X
Lessons LearnedLessons LearnedLessons LearnedLessons Learned
Sophisticated AI != Expensive AISophisticated AI != Expensive AISophisticated AI != Expensive AISophisticated AI != Expensive AI
• This is not an expensive system– No search due to scoring function on actions– Action to goal matching only occurs when goal
list changes for the resource– Although there are many actions running
simultaneously, at any given time a lot are sleeping
– Most of high-level AI was written in Unreal Script (20x slower than C++) yet it still wasn’t a bottleneck.
Some AI Some AI isis expensive expensiveSome AI Some AI isis expensive expensive
• Superficially simple systems that require large amounts of debugging and tweaking (e.g. emergent AI)
• Search (e.g. planning, pathfinding)
• Line checks (e.g. vision)
Analysis (pluses)Analysis (pluses)Analysis (pluses)Analysis (pluses)
• Character actions were very useful in coordinating squads and chaining sub-actions
• Useful to think of legs and arms as separate resources
• Architecture no harder to use than others, but quite easily reusable for other projects
• Using squad goals worked well: helped reduce the amount of level design work
Analysis (minuses)Analysis (minuses)Analysis (minuses)Analysis (minuses)
• Full potential of architecture not exploited: FPS opponents are only human-like to a degree; their required spectrum of behaviours is fairly limited
• Exposed too much detail to designers; editor could have been streamlined
• We didn’t use the AI architecture to drive the scripting system: duplication of effort
General Lessons LearnedGeneral Lessons LearnedGeneral Lessons LearnedGeneral Lessons Learned
• Create AI that’s required by the game
• Create debugging tools early
• Leave time for tweaking
• Make sure the player knows when the AI does something cool
• Does good AI make a game fun (or is it just that bad AI makes a game not fun)?; do games need scripted set-pieces?
Take-home MessageTake-home MessageTake-home MessageTake-home Message
• powerful AI != expensive AI
• One AI description language can control control teams, squads, characters, and scripting
• A modular AI is a reusable AI – let the AI engine handle the interaction complexities
The EndThe EndThe EndThe End
Unused Slides Follow….Unused Slides Follow….Unused Slides Follow….Unused Slides Follow….
Oh No, Not Another Hierarchy!Oh No, Not Another Hierarchy!Oh No, Not Another Hierarchy!Oh No, Not Another Hierarchy!
• Control hierarchies are a dime adozen in the AI/robotics literature
• Tyrion’s more interesting features:– No set number of levels– Uniform description language and execution
model used across levels– Separate sensing system– Dormant goals– Supervenience: information is sent up, goals
are sent down
Relationship to AI PlanningRelationship to AI PlanningRelationship to AI PlanningRelationship to AI Planning
• Tyrion can be viewed as a Task Network (or Partial Hierarchical) Planner
Goal A
Possible Actions
Relationship to AI PlanningRelationship to AI PlanningRelationship to AI PlanningRelationship to AI Planning
• Tyrion can be viewed as a Task Network (or Partial Hierarchical) Planner
Goal A
Possible Actions
Sub-goals
Possible Sub-Actions
Relationship to AI PlanningRelationship to AI PlanningRelationship to AI PlanningRelationship to AI Planning
• Tyrion can be viewed as a Task Network (or Partial Hierarchical) Planner
Goal A
Possible Actions
Sub-goals
Possible Sub-Actions
x Outcome for goal A