Presentation is loading. Please wait.

Presentation is loading. Please wait.

Halo 3 Objective Trees: A Declarative Approach to Multiagent Coordination Damián Isla Bungie Studios.

Similar presentations

Presentation on theme: "Halo 3 Objective Trees: A Declarative Approach to Multiagent Coordination Damián Isla Bungie Studios."— Presentation transcript:

1 Halo 3 Objective Trees: A Declarative Approach to Multiagent Coordination Damián Isla Bungie Studios

2 Expectation Management Objective Trees are a scripting method The Declarative Approach is an authoring paradigm

3 Agenda Encounter Design Halo 2: Imperative Method Halo 3: Declarative Method Results and Conclusions

4 Encounter Design


6 Encounters are Multiagent Systems –lots of guys –lots of things to do Encounters are Puzzles Encounters are Dynamic –they collapse in interesting and fun ways Encounters reflect –the strategic intelligence of the characters –the story of the encounter

7 Encounter Design AI acts smart within the confines of the plan provided by the designer Designer provides the strategic intelligence

8 Player Approach


10 Task

11 The Mission Designers language for telling the AI what to do Territory Behavior –aggressiveness –rules of engagement –inhibitions Encounter logic = The transitioning of AI squads from one task to another



14 FightCoverFlee


16 The Control Stack Squad Task Encounter Logic AI engineers, AI designers Mission designers Individual

17 Halo 2: The Imperative Method

18 The Imperative Method < 75% alive? < 25% alive? Give the designers an FSM construction tool

19 Problems with the Imperative Method

20 Explicit transitions n 2 complexity Generator 2Generator 3 Generator 1

21 Halo 3: The Declarative Method

22 But first, heres a refresher

23 Imperative const char *lol_search(const char *buff, long len) { for (short i= 0; i < len-2; i++) { if (buff[i]==L && buff[i+1]=O) { short i2=i+2; while (i2

24 Declarative LO+L

25 The Declarative Method For us: Enumerate tasks that need doing in the environment Let the system figure out who should perform them

26 The Declarative Method Similar to affordances

27 The Declarative Method Tasks have structure Relative priorities –The most important thing is to guard the door, but if you can, also guard the hallway Are made up of sub-tasks –Guarding the hallway means guarding the front, the middle and the rear of the hallway. Finite capacity –Guarding the rear of the hallway is a three-man job

28 Behavior Trees (Handling Complexity in the Halo 2 AI, GDC 2005) Takeaways: 1.Prioritized-list decision scheme 2.Behaviors are self- describing We are not making a single choice. We are finding a distribution across all choices. melee shoot grenade uncover pursue cover sleep fight search hide idle root

29 Task Trees? Generator 2Generator 3 Generator 1

30 Task Trees? 24 guys root fallback forward laststand fallback forward laststand fallback forward laststand generator 2 generator 3 generator

31 Halo 3 AI Objective Trees The structure: A Tree of Prioritized Tasks Tasks are self-describing –priority –activation script-fragments –capacities The Algorithm: Pour squads in at the top Allow them to filter down to the most important tasks to be filling RIGHT NOW Basically, its a plinko machine.

32 The Dynamic Plinko Machine Tasks turn themselves on and off Squads pulled UP, on activation of a higher- priority task Squads pushed DOWN, on deactivation of the task theyre in

33 g3 laststand 3 Generators Revisited g1_group g1 alivemax 10 root g1 forward >75% g1 fallback >50% g2_group g2 alivemax 10 g2 fallback >50% g2 forward >75% g3_group g3 alivemax10 g3 fallback >50% g3 forward >75% g1 laststand g2 laststand g1_group g1 alivemax 10 root g2_group g2 alivemax 10 g2 fallback >50% g2 forward >75% g3_group g3 alivemax10 g1 forward >75% g1 fallback >50% g1 laststand g2 laststand g3 fallback >50% g3 forward >75% g3 laststand

34 priority task name condition other stuff runtime feedback

35 The Algorithm

36 Consider a subtree fragment Determine which children are active –Squads in inactive tasks assigned back up to parent Consider top priority group Collect squads to attempt to distribute –Squads currently in parent –Squads in lower-priority tasks Distribute Squads Recurse for children in top priority- group Iterate to next priority group

37 Squad Distribution Formally, we have set S of n squads set T of m tasks Now, find a mapping Such that: 1.Task-Capacity Constraints are respected 2.Cost function H(F) is minimized

38 Squad Distribution 1.Respect Task-Capacity Constraints # guys assigned to task t capacity(t) (BTW, this is called bin-packing. And its NP-Hard.)

39 Squad Distribution 2.Minimize cost function H(F)

40 Squad Distribution 2.Minimize cost function H(F) H(F) gives us a basis for choosing one distribution over another H(F) allows us to weigh competing concerns

41 Squad Distribution 2.Minimize cost function H(F) A class of cost functions: We use

42 A Greedy Approach while (S is not empty) find pair (s,t) that give the minimum H(s,t) for all S x T (where adding s to t would not exceed ts capacity) if (s,t) assign(s, t) capacity(t) = capacity(t) - size(s) S = S – s else end

43 Refinements

44 Filters Particular tasks only available to particular kinds of guys E.g. –Must be of character type X –Must be in vehicles –Must NOT be in vehicles –Snipers Filters Specify occupation conditions (as opposed to activation conditions) Trivially implemented as an inf return value from H(s, t) Helpful for the spice

45 Further Task Refinements Activation Latch on Latch off / exhaustion Exhaustion Death count Living count Assignment One-time assignment

46 Case Studies

47 Case Study #1: Leadership Want to have leaders and followers Brute and three grunts Brute Chieftan and brute pack Gameplay Leaders provide structure to encounter Leader death breaks followers

48 Case Study #1: Leadership Two Parts: 1.Leadership-based filters –Core task: leader filter –Peripheral tasks: NO leader filter 2.Task broken state –Task does not allow redistribution in or out while broken –NPCs have broken behaviors

49 Case Study #2: Player pickup Vehicle encounters are not fun without a vehicle Gameplay When the player needs a vehicle, allies go pick him up

50 Case Study #2: Player pickup Implementation: one dedicated player-pickup task per encounter Three parts: 1.vehicle filter 2.player_needs_vehicle() script function 3.driver player_pickup behavior And thats it!

51 Summaries

52 Badness Summary Requires designer training Sometimes awkward relationship between scripting system and Objectives Tying together allied and enemy fronts was complicated. The squad wasnt always the best level at which to do the bucketing –e.g. give a guy a sniper rifle... shouldnt he then be allowed to occupy a sniper task?

53 Production Summary The Goal: provide a powerful tool for designers to control strategy-level decision-making for a large group of characters Flexible enough to incorporate plenty of designer- requested features / modifications Great for Prototyping –became much more complicated as we neared shippable encounter state One-stop-shop for encounter construction Design of the system driven from the UI outwards

54 Technique Summary Declarative authoring –less direct control –less flexibility –more concise representation –greater manageability –better game

55 is hiring! Artists, engineers, designers … … and an AI Lead :( (Visit for all available positions.)

Download ppt "Halo 3 Objective Trees: A Declarative Approach to Multiagent Coordination Damián Isla Bungie Studios."

Similar presentations

Ads by Google