the gym: where the incredible hulk goes to train bryan brandt lead gameplay programmer...
Embed Size (px)
TRANSCRIPT

The Gym:Where The Incredible Hulk Goes To Train
Bryan BrandtLead Gameplay
Kevin CoughlanTechnical [email protected]

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
Entertainmentwww.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 GameRankings: 85.2% Very little overtime!
~24 months of development ~35 people
Critical success with no death march
< IHUD video >

The Challenge
Character mechanics 150 different moves for Hulk alone
Enemy behaviour 18 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 : character
mechanics AI tree : enemy behavior Scenario tree : 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
Conditions
Tracks
collision
attacks
buttonPress( Punch )
animation( right_hook )
1

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?
Querying1. 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
Tracks
collision
buttonPress( Punch )
animation( uppercut )
1
2
opportunity( )
2
animation( right_hook )

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? Free roaming 25+ Game missions 40 Challenge missions
What’s an event? 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
ExecutionRun each node concurrently

Demo #3: Scenario Tree
Conditions
Tracks
event( Prop - Destroyed )
lua( “x = x + 1
hud_Message( x )” )
event_PropType( bus )

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 [email protected]
Kevin [email protected]
a
Also check out:
Harnessing Hulk: Controls, Motion, Gameplay!Eric Holmes, Bryan Brandt
Thursday, 5:30pm — 6:30pm