Killzone 2 Multiplayer Bots Alex Champandard – AiGameDev.com Tim Verweij – Guerrilla Remco Straatman - Guerrilla Game AI Conference, Paris, June 2009
Introduction  Game AI Conference, Paris, June 2009  Killzone 1 bots well received feature  More focus on MP in Killzone 2 Role of bots in Killzone 2
Scope  Game AI Conference, Paris, June 2009  Killzone 2 / PS3 Max 32 players Team-based game modes  Multiple game modes on one map Players unlock / mix “badge abilities” Offline (1 human player & bots) Online (human players & bots)
Scope  Game AI Conference, Paris, June 2009  Game modes Capture and Hold Body Count Search and Retrieve Search and Destroy Assassination
Scope  Game AI Conference, Paris, June 2009  Badges Scout: Cloak, Spot-and-Mark Tactician: Spawn Area, Air Support Assault: Boost Engineer: Sentry Turret, Repair Medic: Heal, Med packs Saboteur: Disguise, C4
Scope : movie Game AI Conference, Paris, June 2009
Architecture  Game AI Conference, Paris, June 2009
Architecture  Game AI Conference, Paris, June 2009  Strategy AI –  ISA Strategy AI –  HGH Squad AI Squad AI Squad AI Squad AI Individual AI Individual AI Individual AI Individual AI Individual AI Individual AI Individual AI Individual AI Individual AI
Architecture  Game AI Conference, Paris, June 2009  Strategy AI Squad AI Individual AI Strategy to Squad:  Orders: Defend, Advance, ... Squad to Strategy: Feedback: Order failed Squad to Individual: Orders: MoveTo Individual to Squad: Combat information Strategy to Individual: Orders: Assasination target Individual to Strategy: Request reassignment
Individual AI Game AI Conference, Paris, June 2009
Individual AI Game AI Conference, Paris, June 2009  stimuli perception Threats daemons World state planner Plan task execution Controller  input Orders Messages
Individual AI Game AI Conference, Paris, June 2009  stimuli perception Threats daemons World state planner Plan task execution Controller  input Orders Messages
Individual AI : HTN Planner Game AI Conference, Paris, June 2009  Domain Has Methods 1 … x Each with Branches 1 … y Preconditions Task list Task Primitive, or Compound (solve recursively) HTN Planning: Complexity and Expressivity.  K. Erol, J. Hendler and D. Nau. In Proc. AAAI-94.
Individual AI : HTN Planner Game AI Conference, Paris, June 2009  (: method  (select_weapon_and_attack_as_turret  ?inp_threat ) (  branch_use_bullets   // Only use bullets against humanoids and turrets. (and (or (threat  ?inp_threat  humanoid) (threat  ?inp_threat turret ) ) (distance_to_threat  ?inp_threat ?threat_distance ) ( call  lt  ?threat_distance  @weapon_bullet_max_range)  ) ( (attack_as_turret_using_weapon_pref  ?inp_threat  wp_bullets)) ) (  branch_use_rockets   // Don't use rockets against humanoids and turrets. ( and  ( not  (threat  ?inp_threat humanoid )) ( not  (threat  ?inp_threat turret )) (distance_to_threat  ?inp_threat   ?threat_distance ) ( call  lt  ?threat_distance  @weapon_rocket_max_range) ) ((attack_as_turret_using_weapon_pref  ?inp_threat  wp_rockets)) ) )
Individual AI : Plan monitoring Game AI Conference, Paris, June 2009  Plan fails when current task fails Abort current plan preemptively when Better plan available Current plan no longer feasible So, we keep planning @5hz, but: Prevent twitchy behavior Prevent unnecessary checks (optimizations) Combine planning and monitoring using  continue branches Branch with “continue” as only task in plan When encountered during planning, keep current plan.
Individual AI : Plan Monitoring Example Game AI Conference, Paris, June 2009  (: domain   attack_portable_turret (: method  (attack_as_turret)  // Turret keeps attacking same target as long as possible. (  continue_attack_as_turret   // Continue branch ( active_plan  attack_as_turret) ( ! continue )  ) (  branch_attack_as_turret   // Attack an enemy if possible () (  (! forget   active_plan  **) (! remember  -  active_plan  attack_as_turret) (select_threat_and_attack_as_turret 0) (! forget   active_plan  **) ) ) ) … .
Individual AI : Application Game AI Conference, Paris, June 2009  General combat behavior Opportunistic badge Medic heal behavior Engineer repair Ordered  Badge specific interpretation Mission specific S&R Carrier S&D Target
Individual AI : Application Game AI Conference, Paris, June 2009
Individual AI : Application Game AI Conference, Paris, June 2009  + branch_mp_behave + (do_behave_on_foot_mp) + branch_medic_revive + (do_medic_revive) - branch_medic_revive_abort - branch_medic_revive_continue + branch_medic_revive ( !forget  active_plan **) ( !remember  - active_plan medic_revive [Soldier:TimmermanV]) ( !log_color  magenta “Medic reviving nearby entity.”) ( !broadcast  friendlies 30.0 10.0 medic_reviving [Soldier:TimmermanV]) ( !select_target  [Soldier:TimmermanV]) + (walk_to_attack 5416 crouching auto) + (wield_weapon_pref wp_online_mp_bot_revive_gun) - branch_auto_and_have_active - branch_auto_wp_pref - branch_dont_switch_weapon + branch_switch_weapon (#0 = wp_online_mp_bot_revive_gun) + (wield_weapon_pref_internal wp_online_mp_bot_revive_gun) ( !use_item_on_entity  [Soldier:TimmermanV] crouching) ( !forget  active_plan **)
Individual AI : Application Game AI Conference, Paris, June 2009  HTN PLAN (non-interruptible) – [BOT] Tremethick DECOMPOSITION TASK LIST ( !forget  active_plan **) ( !remember  – active_plan medic_revive [ Soldier:TimmermanV ]) ( !log_color  magenta  “Medic reviving nearby entity.” ) ( !broadcast  friendlies 30.0 10.0 medic_reviving [ Soldier:TimmermanV ]) ( !select_target  [ Soldier:TimmermanV ]) ( !walk_segment  ( 2370 2369 2368 2367 2366 2365 … 5416 ) standing auto () () ()) A ( !select_weapon  wp_online_mp_bot_revive_gun) ( !use_item_on_entity  [ Soldier:TimmermanV ] crouching) ( !forget  active_plan **) ACTIVE TASK INFO AIHTNPrimitiveTaskSelectWeapon –
Individual AI : Random Numbers Game AI Conference, Paris, June 2009  Individual bot domain 360 methods 1048 branches 138 behaviors 147 continue branches  During multiplayer game (14 bots / max. 10 turrets / max. 6 drones / squads) Approx. 500 plans generated per second Approx. 8000 decompositions per second Avg. 15 decompositions per planning. Approx 24000 branch evaluations per second.
Squad AI  Game AI Conference, Paris, June 2009
Squad AI  Game AI Conference, Paris, June 2009
Squad AI Game AI Conference, Paris, June 2009  daemons World state planner Plan task execution Individual Orders Strategy Orders Member Messages
Individual AI : Application Game AI Conference, Paris, June 2009  HTN STATE - HGHSquad2 (time 871273) (faction hgh) (current_level mp_level_05) (capture_and_hold) (capture_area_status [CaptureAndHoldArea:CnH_Area3] [AIArea:CnH_Area3] captured) (capture_area_status [CaptureAndHoldArea:CnH_Area2] [AIArea:CnH_Area2] enemy_controlled) (capture_area_status [CaptureAndHoldArea:CnH_Area1] [AIArea:CnH_Area1] enemy_controlled) (have_order 2 2473) (order 2473 2 defend [AIMarker:Assn_Hide3_Defend2] 0)  (squad_status defend ready 424.166016) (nr_of_members 3) (player_count 3) (member_status [Soldier:[BOT] Brueckner] defending 2473) (member_status [Soldier:[BOT] Politeski] defending 2473) (member_status [Soldier:[BOT] VanDerLaan] defending 2473) (area_of_member [Soldier:[BOT] Politeski] [AIArea:CnH_Area3]) (area_of_member [Soldier:[BOT] Brueckner] [AIArea:CnH_Area3]) (area_of_member [Soldier:[BOT] VanDerLaan] [AIArea:CnH_Area3]) (squad_member 2 [Soldier:[BOT] Politeski]) (squad_member 1 [Soldier:[BOT] Brueckner]) (squad_member 0 [Soldier:[BOT] VanDerLaan])
Squad AI Game AI Conference, Paris, June 2009  (:method (order_member_defend  ?inp_member ?inp_id ?inp_level ?inp_marker ?inp_context_hint ) … (branch_advance () ( ( !forget  member_status  ?inp_member  **) ( !remember  - member_status  ?inp_member  ordered_to_defend  ?inp_id ) ( !start_command_sequence   ?inp_member ?inp_level  1)   (do_announce_destination_waypoint_to_member  ?inp_member )   ( !order   ?inp_member clear_area_filter )   ( !order   ?inp_member   set_area_restrictions (call find_areas_to_wp  ?inp_member  (call get_entity_wp  ?inp_marker )))   ( !order_custom   ?inp_member  move_to_defend  ?inp_marker ?inp_context_hint )   ( !order_custom   ?inp_member  send_member_message_custom completed_defend  ?inp_id )   (order_set_defend_area_restriction  ?inp_member  (call get_entity_area  ?inp_marker ))   ( !order_custom   ?inp_member defend_marker   ?inp_marker ?inp_context_hint ) ( !end_command_sequence   ?inp_member ) ) ) )
Squad & Bot Management
Challenges Must support 1-14 potential bots per-side. A fixed policy just won’t work... Paris Game AI Conference, 2009.  Squads: Bots:
Inspiration Paris Game AI Conference, 2009.  Building a Better Battle:  The Halo 3 AI Objectives System Damian Isla Game Developers Conference, 2008. disposable enemies persistent bots level  specific use applied generally for designers for programmers mostly declarative mostly procedural story-driven strategic
Principles The strategy is built with a goal-driven approach by separating ‘what’ to do and ‘how’ to do it. Paris Game AI Conference, 2009.
Internal Architecture Paris Game AI Conference, 2009.  Base Strategy Capture & Hold Search & Destroy Assassination Body Count Search & Retrieve Objectives: Squads: Bots:
AI Objectives Paris Game AI Conference, 2009.  Static Offensive AdvanceWaypoint Defensive DefendMarker Dynamic AttackEntity EscortEntity
Search and Retrieve Paris Game AI Conference, 2009.  advance advance attack escort defend
Sub-Objectives Objectives must  also  scale up and down with the number of bots. Need rich and detailed information for each objective. Provides more diverse behaviors when there are few bots! For example: Multiple specific defend locations, e.g. entry points. Different approach routes, e.g.  for  flanking. Paris Game AI Conference, 2009.
Search & Destroy: Defending (1) Paris Game AI Conference, 2009.
Search & Destroy: Defending (2) Paris Game AI Conference, 2009.
Search & Destroy: Defending (3) Paris Game AI Conference, 2009.
Assignments Achieving Objectives Paris Game AI Conference, 2009.
Squad & Bot Assignment Algorithm 1) Calculate the ideal distribution of bots, then squads. 2) Create new squads if necessary. 3) Remove extra squads if too many assigned to any objective. 4) Pick an objective for each squad: If objective is active already, pick new sub-objective regularly. Otherwise, assign the best objective to each squad. 5) Unassign bots if too many for squad or objective. 6) Process all free bots and assign them to the best squad. Paris Game AI Conference, 2009.
Squad & Bot Assignment Heuristics a. Assign bots to squads Based on distance to squad center, or objective. Preference to other bots. b. Assign squads to objectives First come, first served! c. Bot badge selection Global policy, chosen by design.
Capture and Hold Paris  Game AI Conference, 2009. advance advance defend
Strategic Reasoning
Manual Level Annotations Fixed number of levels, Not overly big by design, Low overhead for annotations. Paris Game AI Conference, 2009.  “ Create the information by hand first, then automate it later if necessary.”
Regroup Locations Paris Game AI Conference, 2009.
Sniping Locations Paris Game AI Conference, 2009.
Mission Specific Defense Paris Game AI Conference, 2009.
Automatic Level Processing Paris Game AI Conference, 2009.  Because it’s awesome.™
Strategic Graph Paris Game AI Conference, 2009.
Strategic Graph WHY? Support runtime strategic decision making algorithms. Help interpret the manual annotations dynamically. WHAT? Set of areas created as groups of waypoints. High-level graph based on the low-level waypoint network. HOW? Automatic area generation algorithm done at export time. Paris Game AI Conference, 2009.
Waypoint Network Paris Game AI Conference, 2009.
Waypoint Areas Paris Game AI Conference, 2009.
Strategic Graph Paris Game AI Conference, 2009.
Area Clustering Algorithm: 1) Start with one waypoint per area. 2) Find the best possible areas to merge. 3) Repeat until target area count reached. Heuristic: Area size and waypoint count (squared). Inter-area links between waypoints. High-level graph quality, minimize connections. Paris Game AI Conference, 2009.
Strategic Graph Paris Game AI Conference, 2009.
Strategic Graph Paris Game AI Conference, 2009.  Runtime Information
Influence Mapping WHY?  Dynamic information overlaid onto the graph. U sed for many decisions: where to hide / regroup / defend. WHAT? Areas store positive / negative influence based on faction “controls”. Compromise of stable strategic information and up-to-date. HOW? Calculated based on all bots, turrets, and deaths. Values are smoothed  in the graph , new values weighted in. Paris Game AI Conference, 2009.
Influence Map Paris Game AI Conference, 2009.
Example: Regroup Location Selection Identify candidates: Don’t use the same location as other squads. Also avoid the previous selected regroup locations. Filter based on the squad type (e.g. snipers). Select location: Pick the candidate with the most positive influence. Paris Game AI Conference, 2009.
Assassination: Defenders Paris Game AI Conference, 2009.
Assassination: Attack Wave 1 Paris Game AI Conference, 2009.
Assassination: Attack Wave 2 Paris Game AI Conference, 2009.
Strategic Pathfinding WHY? Help make medium-term strategic decisions in space. Take into account the strategic graph and influence map. WHAT? A single-source pathfinder that calculates distances to a point. A cache of the distance and spanning tree, used for path lookup. HOW? Each squad has its own pathfinder, based around its assignment. Individual pathfinder finds waypoint path within selected areas. Paris Game AI Conference, 2009.
Strategic Pathfinding Costs Paris Game AI Conference, 2009.
Strategic Pathfinder Paris Game AI Conference, 2009.
Strategic Pathfinder Paris Game AI Conference, 2009.
Incremental Single-Source Algorithm Improve the distance estimates over multiple  updates. Can scale up and down in accuracy (to a point). Algorithm combines Dijkstra & Bellman-Ford-Moore. Uses tricks to deal with changes more effectively. Paris Game AI Conference, 2009.  Realistic Autonomous Navigation in Dynamic Environments Alex J. Champandard Masters Research Thesis, University of Edinburgh, 2002.
Example: Squad Corridors Each squad has cost based on previous squads shortest path. Other squad corridors are not as cheap (neutral cost). Squads actively pick paths to avoid other squads. Paris Game AI Conference, 2009.
Squad Corridors: Squad 1 Paris Game AI Conference, 2009.
Squad Corridors: Squad 2 Paris Game AI Conference, 2009.
Squad Corridors: Squad 2 Paris Game AI Conference, 2009.
Squad Corridors: Squad 1 Paris Game AI Conference, 2009.
Squad Corridors: Sniper Squad Paris Game AI Conference, 2009.
Squad Corridors: Sniper Squad Paris Game AI Conference, 2009.
Take Away Paris Game AI Conference, 2009.  Strategy is more than the sum of its parts.
Future work Data mining Use in early test phases of MP Teaching role of bots React to friendly squads, human players Game AI Conference, Paris, June 2009
Guerrilla is hiring! Game AI Conference, Paris, June 2009  We’re looking for: Senior AI Programmer Game Programmer Tools programmer more… Talk to Remco or Tim, or  [email_address]

Killzone 2 Multiplayer Bots

  • 1.
    Killzone 2 MultiplayerBots Alex Champandard – AiGameDev.com Tim Verweij – Guerrilla Remco Straatman - Guerrilla Game AI Conference, Paris, June 2009
  • 2.
    Introduction GameAI Conference, Paris, June 2009 Killzone 1 bots well received feature More focus on MP in Killzone 2 Role of bots in Killzone 2
  • 3.
    Scope GameAI Conference, Paris, June 2009 Killzone 2 / PS3 Max 32 players Team-based game modes Multiple game modes on one map Players unlock / mix “badge abilities” Offline (1 human player & bots) Online (human players & bots)
  • 4.
    Scope GameAI Conference, Paris, June 2009 Game modes Capture and Hold Body Count Search and Retrieve Search and Destroy Assassination
  • 5.
    Scope GameAI Conference, Paris, June 2009 Badges Scout: Cloak, Spot-and-Mark Tactician: Spawn Area, Air Support Assault: Boost Engineer: Sentry Turret, Repair Medic: Heal, Med packs Saboteur: Disguise, C4
  • 6.
    Scope : movieGame AI Conference, Paris, June 2009
  • 7.
    Architecture GameAI Conference, Paris, June 2009
  • 8.
    Architecture GameAI Conference, Paris, June 2009 Strategy AI – ISA Strategy AI – HGH Squad AI Squad AI Squad AI Squad AI Individual AI Individual AI Individual AI Individual AI Individual AI Individual AI Individual AI Individual AI Individual AI
  • 9.
    Architecture GameAI Conference, Paris, June 2009 Strategy AI Squad AI Individual AI Strategy to Squad: Orders: Defend, Advance, ... Squad to Strategy: Feedback: Order failed Squad to Individual: Orders: MoveTo Individual to Squad: Combat information Strategy to Individual: Orders: Assasination target Individual to Strategy: Request reassignment
  • 10.
    Individual AI GameAI Conference, Paris, June 2009
  • 11.
    Individual AI GameAI Conference, Paris, June 2009 stimuli perception Threats daemons World state planner Plan task execution Controller input Orders Messages
  • 12.
    Individual AI GameAI Conference, Paris, June 2009 stimuli perception Threats daemons World state planner Plan task execution Controller input Orders Messages
  • 13.
    Individual AI :HTN Planner Game AI Conference, Paris, June 2009 Domain Has Methods 1 … x Each with Branches 1 … y Preconditions Task list Task Primitive, or Compound (solve recursively) HTN Planning: Complexity and Expressivity. K. Erol, J. Hendler and D. Nau. In Proc. AAAI-94.
  • 14.
    Individual AI :HTN Planner Game AI Conference, Paris, June 2009 (: method (select_weapon_and_attack_as_turret ?inp_threat ) ( branch_use_bullets // Only use bullets against humanoids and turrets. (and (or (threat ?inp_threat humanoid) (threat ?inp_threat turret ) ) (distance_to_threat ?inp_threat ?threat_distance ) ( call lt ?threat_distance @weapon_bullet_max_range) ) ( (attack_as_turret_using_weapon_pref ?inp_threat wp_bullets)) ) ( branch_use_rockets // Don't use rockets against humanoids and turrets. ( and ( not (threat ?inp_threat humanoid )) ( not (threat ?inp_threat turret )) (distance_to_threat ?inp_threat ?threat_distance ) ( call lt ?threat_distance @weapon_rocket_max_range) ) ((attack_as_turret_using_weapon_pref ?inp_threat wp_rockets)) ) )
  • 15.
    Individual AI :Plan monitoring Game AI Conference, Paris, June 2009 Plan fails when current task fails Abort current plan preemptively when Better plan available Current plan no longer feasible So, we keep planning @5hz, but: Prevent twitchy behavior Prevent unnecessary checks (optimizations) Combine planning and monitoring using continue branches Branch with “continue” as only task in plan When encountered during planning, keep current plan.
  • 16.
    Individual AI :Plan Monitoring Example Game AI Conference, Paris, June 2009 (: domain attack_portable_turret (: method (attack_as_turret) // Turret keeps attacking same target as long as possible. ( continue_attack_as_turret // Continue branch ( active_plan attack_as_turret) ( ! continue ) ) ( branch_attack_as_turret // Attack an enemy if possible () ( (! forget active_plan **) (! remember - active_plan attack_as_turret) (select_threat_and_attack_as_turret 0) (! forget active_plan **) ) ) ) … .
  • 17.
    Individual AI :Application Game AI Conference, Paris, June 2009 General combat behavior Opportunistic badge Medic heal behavior Engineer repair Ordered Badge specific interpretation Mission specific S&R Carrier S&D Target
  • 18.
    Individual AI :Application Game AI Conference, Paris, June 2009
  • 19.
    Individual AI :Application Game AI Conference, Paris, June 2009 + branch_mp_behave + (do_behave_on_foot_mp) + branch_medic_revive + (do_medic_revive) - branch_medic_revive_abort - branch_medic_revive_continue + branch_medic_revive ( !forget active_plan **) ( !remember - active_plan medic_revive [Soldier:TimmermanV]) ( !log_color magenta “Medic reviving nearby entity.”) ( !broadcast friendlies 30.0 10.0 medic_reviving [Soldier:TimmermanV]) ( !select_target [Soldier:TimmermanV]) + (walk_to_attack 5416 crouching auto) + (wield_weapon_pref wp_online_mp_bot_revive_gun) - branch_auto_and_have_active - branch_auto_wp_pref - branch_dont_switch_weapon + branch_switch_weapon (#0 = wp_online_mp_bot_revive_gun) + (wield_weapon_pref_internal wp_online_mp_bot_revive_gun) ( !use_item_on_entity [Soldier:TimmermanV] crouching) ( !forget active_plan **)
  • 20.
    Individual AI :Application Game AI Conference, Paris, June 2009 HTN PLAN (non-interruptible) – [BOT] Tremethick DECOMPOSITION TASK LIST ( !forget active_plan **) ( !remember – active_plan medic_revive [ Soldier:TimmermanV ]) ( !log_color magenta “Medic reviving nearby entity.” ) ( !broadcast friendlies 30.0 10.0 medic_reviving [ Soldier:TimmermanV ]) ( !select_target [ Soldier:TimmermanV ]) ( !walk_segment ( 2370 2369 2368 2367 2366 2365 … 5416 ) standing auto () () ()) A ( !select_weapon wp_online_mp_bot_revive_gun) ( !use_item_on_entity [ Soldier:TimmermanV ] crouching) ( !forget active_plan **) ACTIVE TASK INFO AIHTNPrimitiveTaskSelectWeapon –
  • 21.
    Individual AI :Random Numbers Game AI Conference, Paris, June 2009 Individual bot domain 360 methods 1048 branches 138 behaviors 147 continue branches During multiplayer game (14 bots / max. 10 turrets / max. 6 drones / squads) Approx. 500 plans generated per second Approx. 8000 decompositions per second Avg. 15 decompositions per planning. Approx 24000 branch evaluations per second.
  • 22.
    Squad AI Game AI Conference, Paris, June 2009
  • 23.
    Squad AI Game AI Conference, Paris, June 2009
  • 24.
    Squad AI GameAI Conference, Paris, June 2009 daemons World state planner Plan task execution Individual Orders Strategy Orders Member Messages
  • 25.
    Individual AI :Application Game AI Conference, Paris, June 2009 HTN STATE - HGHSquad2 (time 871273) (faction hgh) (current_level mp_level_05) (capture_and_hold) (capture_area_status [CaptureAndHoldArea:CnH_Area3] [AIArea:CnH_Area3] captured) (capture_area_status [CaptureAndHoldArea:CnH_Area2] [AIArea:CnH_Area2] enemy_controlled) (capture_area_status [CaptureAndHoldArea:CnH_Area1] [AIArea:CnH_Area1] enemy_controlled) (have_order 2 2473) (order 2473 2 defend [AIMarker:Assn_Hide3_Defend2] 0) (squad_status defend ready 424.166016) (nr_of_members 3) (player_count 3) (member_status [Soldier:[BOT] Brueckner] defending 2473) (member_status [Soldier:[BOT] Politeski] defending 2473) (member_status [Soldier:[BOT] VanDerLaan] defending 2473) (area_of_member [Soldier:[BOT] Politeski] [AIArea:CnH_Area3]) (area_of_member [Soldier:[BOT] Brueckner] [AIArea:CnH_Area3]) (area_of_member [Soldier:[BOT] VanDerLaan] [AIArea:CnH_Area3]) (squad_member 2 [Soldier:[BOT] Politeski]) (squad_member 1 [Soldier:[BOT] Brueckner]) (squad_member 0 [Soldier:[BOT] VanDerLaan])
  • 26.
    Squad AI GameAI Conference, Paris, June 2009 (:method (order_member_defend ?inp_member ?inp_id ?inp_level ?inp_marker ?inp_context_hint ) … (branch_advance () ( ( !forget member_status ?inp_member **) ( !remember - member_status ?inp_member ordered_to_defend ?inp_id ) ( !start_command_sequence ?inp_member ?inp_level 1) (do_announce_destination_waypoint_to_member ?inp_member ) ( !order ?inp_member clear_area_filter ) ( !order ?inp_member set_area_restrictions (call find_areas_to_wp ?inp_member (call get_entity_wp ?inp_marker ))) ( !order_custom ?inp_member move_to_defend ?inp_marker ?inp_context_hint ) ( !order_custom ?inp_member send_member_message_custom completed_defend ?inp_id ) (order_set_defend_area_restriction ?inp_member (call get_entity_area ?inp_marker )) ( !order_custom ?inp_member defend_marker ?inp_marker ?inp_context_hint ) ( !end_command_sequence ?inp_member ) ) ) )
  • 27.
    Squad & BotManagement
  • 28.
    Challenges Must support1-14 potential bots per-side. A fixed policy just won’t work... Paris Game AI Conference, 2009. Squads: Bots:
  • 29.
    Inspiration Paris GameAI Conference, 2009. Building a Better Battle: The Halo 3 AI Objectives System Damian Isla Game Developers Conference, 2008. disposable enemies persistent bots level specific use applied generally for designers for programmers mostly declarative mostly procedural story-driven strategic
  • 30.
    Principles The strategyis built with a goal-driven approach by separating ‘what’ to do and ‘how’ to do it. Paris Game AI Conference, 2009.
  • 31.
    Internal Architecture ParisGame AI Conference, 2009. Base Strategy Capture & Hold Search & Destroy Assassination Body Count Search & Retrieve Objectives: Squads: Bots:
  • 32.
    AI Objectives ParisGame AI Conference, 2009. Static Offensive AdvanceWaypoint Defensive DefendMarker Dynamic AttackEntity EscortEntity
  • 33.
    Search and RetrieveParis Game AI Conference, 2009. advance advance attack escort defend
  • 34.
    Sub-Objectives Objectives must also scale up and down with the number of bots. Need rich and detailed information for each objective. Provides more diverse behaviors when there are few bots! For example: Multiple specific defend locations, e.g. entry points. Different approach routes, e.g. for flanking. Paris Game AI Conference, 2009.
  • 35.
    Search & Destroy:Defending (1) Paris Game AI Conference, 2009.
  • 36.
    Search & Destroy:Defending (2) Paris Game AI Conference, 2009.
  • 37.
    Search & Destroy:Defending (3) Paris Game AI Conference, 2009.
  • 38.
    Assignments Achieving ObjectivesParis Game AI Conference, 2009.
  • 39.
    Squad & BotAssignment Algorithm 1) Calculate the ideal distribution of bots, then squads. 2) Create new squads if necessary. 3) Remove extra squads if too many assigned to any objective. 4) Pick an objective for each squad: If objective is active already, pick new sub-objective regularly. Otherwise, assign the best objective to each squad. 5) Unassign bots if too many for squad or objective. 6) Process all free bots and assign them to the best squad. Paris Game AI Conference, 2009.
  • 40.
    Squad & BotAssignment Heuristics a. Assign bots to squads Based on distance to squad center, or objective. Preference to other bots. b. Assign squads to objectives First come, first served! c. Bot badge selection Global policy, chosen by design.
  • 41.
    Capture and HoldParis Game AI Conference, 2009. advance advance defend
  • 42.
  • 43.
    Manual Level AnnotationsFixed number of levels, Not overly big by design, Low overhead for annotations. Paris Game AI Conference, 2009. “ Create the information by hand first, then automate it later if necessary.”
  • 44.
    Regroup Locations ParisGame AI Conference, 2009.
  • 45.
    Sniping Locations ParisGame AI Conference, 2009.
  • 46.
    Mission Specific DefenseParis Game AI Conference, 2009.
  • 47.
    Automatic Level ProcessingParis Game AI Conference, 2009. Because it’s awesome.™
  • 48.
    Strategic Graph ParisGame AI Conference, 2009.
  • 49.
    Strategic Graph WHY?Support runtime strategic decision making algorithms. Help interpret the manual annotations dynamically. WHAT? Set of areas created as groups of waypoints. High-level graph based on the low-level waypoint network. HOW? Automatic area generation algorithm done at export time. Paris Game AI Conference, 2009.
  • 50.
    Waypoint Network ParisGame AI Conference, 2009.
  • 51.
    Waypoint Areas ParisGame AI Conference, 2009.
  • 52.
    Strategic Graph ParisGame AI Conference, 2009.
  • 53.
    Area Clustering Algorithm:1) Start with one waypoint per area. 2) Find the best possible areas to merge. 3) Repeat until target area count reached. Heuristic: Area size and waypoint count (squared). Inter-area links between waypoints. High-level graph quality, minimize connections. Paris Game AI Conference, 2009.
  • 54.
    Strategic Graph ParisGame AI Conference, 2009.
  • 55.
    Strategic Graph ParisGame AI Conference, 2009. Runtime Information
  • 56.
    Influence Mapping WHY? Dynamic information overlaid onto the graph. U sed for many decisions: where to hide / regroup / defend. WHAT? Areas store positive / negative influence based on faction “controls”. Compromise of stable strategic information and up-to-date. HOW? Calculated based on all bots, turrets, and deaths. Values are smoothed in the graph , new values weighted in. Paris Game AI Conference, 2009.
  • 57.
    Influence Map ParisGame AI Conference, 2009.
  • 58.
    Example: Regroup LocationSelection Identify candidates: Don’t use the same location as other squads. Also avoid the previous selected regroup locations. Filter based on the squad type (e.g. snipers). Select location: Pick the candidate with the most positive influence. Paris Game AI Conference, 2009.
  • 59.
    Assassination: Defenders ParisGame AI Conference, 2009.
  • 60.
    Assassination: Attack Wave1 Paris Game AI Conference, 2009.
  • 61.
    Assassination: Attack Wave2 Paris Game AI Conference, 2009.
  • 62.
    Strategic Pathfinding WHY?Help make medium-term strategic decisions in space. Take into account the strategic graph and influence map. WHAT? A single-source pathfinder that calculates distances to a point. A cache of the distance and spanning tree, used for path lookup. HOW? Each squad has its own pathfinder, based around its assignment. Individual pathfinder finds waypoint path within selected areas. Paris Game AI Conference, 2009.
  • 63.
    Strategic Pathfinding CostsParis Game AI Conference, 2009.
  • 64.
    Strategic Pathfinder ParisGame AI Conference, 2009.
  • 65.
    Strategic Pathfinder ParisGame AI Conference, 2009.
  • 66.
    Incremental Single-Source AlgorithmImprove the distance estimates over multiple updates. Can scale up and down in accuracy (to a point). Algorithm combines Dijkstra & Bellman-Ford-Moore. Uses tricks to deal with changes more effectively. Paris Game AI Conference, 2009. Realistic Autonomous Navigation in Dynamic Environments Alex J. Champandard Masters Research Thesis, University of Edinburgh, 2002.
  • 67.
    Example: Squad CorridorsEach squad has cost based on previous squads shortest path. Other squad corridors are not as cheap (neutral cost). Squads actively pick paths to avoid other squads. Paris Game AI Conference, 2009.
  • 68.
    Squad Corridors: Squad1 Paris Game AI Conference, 2009.
  • 69.
    Squad Corridors: Squad2 Paris Game AI Conference, 2009.
  • 70.
    Squad Corridors: Squad2 Paris Game AI Conference, 2009.
  • 71.
    Squad Corridors: Squad1 Paris Game AI Conference, 2009.
  • 72.
    Squad Corridors: SniperSquad Paris Game AI Conference, 2009.
  • 73.
    Squad Corridors: SniperSquad Paris Game AI Conference, 2009.
  • 74.
    Take Away ParisGame AI Conference, 2009. Strategy is more than the sum of its parts.
  • 75.
    Future work Datamining Use in early test phases of MP Teaching role of bots React to friendly squads, human players Game AI Conference, Paris, June 2009
  • 76.
    Guerrilla is hiring!Game AI Conference, Paris, June 2009 We’re looking for: Senior AI Programmer Game Programmer Tools programmer more… Talk to Remco or Tim, or [email_address]

Editor's Notes

  • #34 Defend Marker near home base (weight 1.0) Advance Waypoint to enemy base (weight 1.0) Attack Entity or Escort Entity on carrier (weight 2.0)
  • #40 Squads created to fulfill objectives / sub-objectives. There are always objectives, even just regroup. Squads created based on bots available, with desired bot count: Try to respect Desired/Min/Max squad size. Keep the squads balanced. Squads are assigned based on proximity to the target objective. After objective, squads persist and bots revert to autonomous behavior.
  • #42 For every area we control; generate an DefendMarker objective For as many areas as we still want to capture (based on current score, heuristic): Choose the best targets based on current assignments, nearby friendlies, own spawnpoints. If troops left, assign attack objectives to less desired areas. (lone scout approach)
  • #43 Combine manual annotations with Add many annotations and filter them out at runtime.
  • #50 Not done dynamically however, assumes dynamic obstacles don't impact connectivity.
  • #51 Goal is to create areas useful for tactical reasoning during the game. Calculated based on what's feasible at runtime.
  • #55 Good quality areas without line of sight checks or pathfinding. Try this at home!
  • #59 Taboo search with weighted selection.
  • #64 Area cost calculated from influence map: Safe areas given almost free cost. Risky areas exponentially worse. Pathfinder updated as costs change: take the worst case scenario into account.
  • #67 Updates estimates iteratively and greedily. Deals with rebasing the origin and changing the source. Most accurate near the source, ideal in this case. Once converged, can update estimates incrementally. Can adjust the amount of work done each update, trading off quality for speed.
  • #76 Future work / discussion Squad now almost makes no decision. Specific context commands. Communication through hierarchy proper. Remove cheat (ammo). Adaptive badge selection and badge combos Use online game states to discover sniper positions and other data mining opportunities during development and after deployment. Integrate game squads / AI squads Chatter RTS AI and FPS AI getting closer from different sides. Future use of techniques.