The Gym Where The Incredible Hulk Goes To
The Gym: Where The Incredible Hulk Goes To Train Bryan Brandt Lead Gameplay Programmer bbrandt@radical. ca Kevin Coughlan Technical Director kcoughlan@radical. ca
What’s This All About? > One tool, one system for: > Character mechanics > Enemy behaviour > Mission scripting > Intended Audience: > Gameplay & Tools Programmers > Technical Artists & Animators > Designers & Scripters
Session Overview The Incredible Hulk: Ultimate Destruction > The Gym > Demos and Details > Successes and Pitfalls > Conclusion >
Introductions: Radical Entertainment www. radical. ca > > > Founded in 1991, 25+ titles published, 230+ employees, based in Vancouver, BC, Canada Acquired in March 2005 by Vivendi Universal Games Recent hits: > > > Simpsons Road Rage The Hulk Simpsons Hit and Run Crash: Tag Team Racing The Incredible Hulk: Ultimate Destruction (IHUD) Scarface (coming in 2006)
The Incredible Hulk: Ultimate Destruction Game. Rankings: 85. 2% > Very little overtime! > ~24 months of development < IHUD video > > > ~35 people Critical success with no death march
The Challenge > Character mechanics > 150 > Enemy behaviour > 18 > different moves for Hulk alone enemy types Mission scripting > 25+ story missions > 40 challenge missions
Our Solution: The Gym > Game logic editor
Fight Trees Fight trees are decision trees and state machines > Types of fight trees in IHUD > Motion tree : > AI tree : > Scenario tree : > character mechanics enemy behavior mission scripting
Motion Tree > Character mechanics > > > > Locomotion Simple Attacks Picking up objects of various types Attacking with objects Weaponizing Grapples Reactions to getting hit One motion tree for each character type > 20 different motion trees in IHUD
Demo #1: Adding an attack > attacks Conditions button. Press( Punch ) 1 Tracks animation( right_hook ) collision
Components of a Fight Tree Branches > Conditions > Tracks >
Branches > Branches are typically > > > Banks Nodes Hulk’s motion tree: > 750+ banks, 1600+ nodes
Conditions “Fight Trees are decision trees” > > > Each branch contains a list of conditions Conditions evaluate to true or false 200+ types of conditions > > > Button pressed / held / released Prop is being held Randomizer Evaluate a Lua expression Operators: and, or, not
Tracks “Fight Trees are state machines” > > Nodes represent a state Nodes contain a list of tracks Each track describes an action to be performed 230+ types of tracks > > > Play an animation Play a sound Display a special effect Test for collision Conditionally transition to another node Run a Lua script
How Does It Work? > Querying 1. > Evaluate tree conditions depth-first for a node that will become the next state. Execution > If a node is found, run it! Node execution stops when either: > > All its tracks are finished running. A new node has been queued for execution.
Demo #2 – Combo > attacks Conditions button. Press( Punch ) 1 2 Tracks animation( right_hook uppercut ) ) collision opportunity( 2 )
AI Tree > Goal: Scripted, state-based enemy behaviour > Sample decisions: > > Pursue target if too far away Engage target when in range Attack target when it’s my turn Solution: Use existing fight tree system
Scenario Tree > Goal: Event-driven mission scripting > What’s a mission? > > What’s an event? > > Free roaming 25+ Game missions 40 Challenge missions actor death, object pick-up / drop / destruction, trigger volume enter / exit, path waypoint traversal, etc. Solution: Use existing fight tree system > But with minor tweaks!
How Did We Make It Work? > Querying > When an event is generated, query the tree for all nodes that match the event conditions. > > Often more than one event per frame Execution Run each node concurrently
Demo #3: Scenario Tree Conditions event( Prop - Destroyed ) event_Prop. Type( bus ) Tracks lua( “x = x + 1 hud_Message( x )” )
Successes Cross-disciplinary tool > Ease of iteration > Fast prototyping > Build on what you’ve got! >
Pitfalls Multi-user issues > Instability > Communication between trees > UI bloat >
Conclusion > One tool, one system for: > Character mechanics > Enemy behaviour > Mission scripting We couldn’t have made IHUD without it!
Questions? Bryan Brandt bbrandt@radical. ca Kevin Coughlan kcoughlan@radical. ca Also check out: Harnessing Hulk: Controls, Motion, Gameplay! Eric Holmes, Bryan Brandt Thursday, 5: 30 pm — 6: 30 pm
- Slides: 24