New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

91
New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios [email protected]

description

New Dog, Old Tricks: Running Halo 3 Without a Hard Drive. Mat Noguchi BUNGIE Studios [email protected]. Loading... Done: How to Think About Content. Mat Noguchi BUNGIE Studios [email protected]. Next gen is more. More CPU: 6x or more More RAM: 8x More GPU: bajillion. - PowerPoint PPT Presentation

Transcript of New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Page 1: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

New Dog, Old Tricks:Running Halo 3 Without a

Hard DriveMat Noguchi

BUNGIE [email protected]

Page 2: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Loading... Done:How to Think About Content

Mat NoguchiBUNGIE Studios

[email protected]

Page 3: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Next gen is more• More CPU: 6x or more• More RAM: 8x• More GPU: bajillion

Page 4: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Next-gen is more I/O bound• I/O transfer speed: 2x• I/O latency: ~1x• DVD size: ~1x

Page 5: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

What is Next-gen streaming?

• For players–Minimal load times–Wide and deep content

• For the platform– Run (well) on all configurations

• For developers– Designers– Programmers– Producers

Page 6: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Overview• High level I/O design• What to load• Loading• RTM!

Page 7: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Case study: The Storm• Total content size: 1,226 MB• Available content memory: 334.8 MB

Page 8: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

PART 1: HIGH LEVEL I/O DESIGN

Page 9: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Goals• Minimum quality guarantees• Maximize I/O performance• Globally optimizable

Page 10: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Policies• One system to rule content I/O• Usage based optimizations

Page 11: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

DVD vs. HDD• DVD– 6-18 MB/s– 100-240 ms seek times

• HDD– 17-30 MB/s– 10-30 ms seek times

Page 12: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

DVD vs. HDDDVD HDD

Sequential I/O

12 MB/s 17 MB/s

Random I/O

~850 kB/s250 ms seeks

~6290 kB/s37 ms seeks

Reliability Variable Constant

Page 13: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

DVD vs. HDDDVD HDD

Sequential I/O

Good Good

Random I/O

BAD! Okay

Reliability Variable Constant

Page 14: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

DVD vs. HDDDVD HDD

Sequential I/O

Good Good

Random I/O

BAD! Okay

Reliability Variable Constant

Page 15: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Goals: Maximizing I/O performance

MINIMIZE SEEKS!

Page 16: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Classifying content by access• Global data: 49.2 MB– Always loaded–Metadata– References to resources

• Resources: 1,177 MB– Everything else – Can be unloaded

Page 17: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Classifying resources by access

• Required– Required for correct behavior• Textures (N-1 mipmaps)• Geometry• Animation

• Optional–More detailed/richer experience• Highest texture mipmap

Page 18: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Goals: Minimum quality guarantees

• Required resources– HARD CONSTRAINT!– Assume this data is available

• Optional resources– Flavor!– Check this data is available

Page 19: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

I/O behavior by resource• Required resources– Synchronous/Blocking

• Optional resources– Asynchronous/Background

Page 20: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Sound...• Streaming sound implies Random I/O• Is sound Optional?– HDD: Yes– DVD: Not exactly

Page 21: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Sound... the big giant screw (again!)

566 MB!

Page 22: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Sound... the big giant screw (again!)

• Why so big?– Everything makes a sound– Repetition is annoying

Page 23: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

What sound can we stream?• Not a lot for DVD– Streams == Seeks– Seeks == BAD!

• Stream sounds resilient to latency–Music–Mission dialogue–Multiplayer announcer

• Everything for HDD

Page 24: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

How can we cull sound?• Accept repetition• … except for footsteps• … and dialogue (crap!)

Page 25: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Why is dialogue so bad?• Repetition is annoying• Repetition is annoying• Repetition is annoying• … unless you are making a point• Such as: repetition is annoying

Page 26: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

AI dialogue tree branch:Praise

prsprs_plr_gdgrnd

prs_plr_killprs_plr_kll_bltprs_plr_kll_mjr

prs_plr_kll_vcl_bmpprs_plr_kll_wmelee

prs_plr_arbprs_plr_mc

prs_plr_kll_lotsprs_plr_sniping

Page 27: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Full AI dialogue tree• (The full dialogue tree makes

PowerPoint choke)– 97 top vocalizations– 143 first level vocalizations– 23 second level vocalizations

Page 28: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Full AI dialogue tree size• 295 MB(!), 19788 lines• Count, Size by specializations– 130 MB, 9331 lines for top vocalizations– 143 MB, 1214 lines for first level

vocalizations– 22 MB, 1214 lines for second level

vocalizations

Page 29: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Shrinking AI dialogue• Remove virtually all dialogue• Add back– Involuntary dialog– Sound designer specified dialog• “Take it!”• “Found enemy!”• “Where did they go?”

Page 30: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

This is for DVD-only!• HDD will always sound great!

Page 31: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

So... what?

Page 32: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Checkpoint...The Storm: DVD Working Set

• Available memory: 334.8 MB• DVD working set : 514.2 MB– Global data: 49.2 MB– Required resources: 465 MB• Textures: 216.6 MB• Geometry: 138 MB• Sound: 70.5 MB• Animation: 39.9 MB

Page 33: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

PART 2: WHAT TO LOAD

Page 34: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Mapping resource usage to position

NOT DRAWN TO SCALE!

Page 35: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Mapping resource usage to position

• Break up into sections, a.k.a BSPs

Page 36: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Mapping resource usage to position

Page 37: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Multiple bsps = Zone set• Example: “Intro”

Page 38: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Multiple bsps = Zone set• Example: “First Encounter”

Page 39: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Zone set activation volumes

Loading…Loading… done

Active zone set: “Intro”Active zone set: “First Encounter”

Page 40: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Checkpoint... The Storm: DVD Working Set

• Available memory: 334.8 MB• DVD working set: 375.8 MB– Global data: 49.2 MB–Max zone-set resources: 148.7 MB– Sandbox resources: 177.9 MB

Page 41: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Scarab

Page 42: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Ghost

Page 43: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Brute

Page 44: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Sandbox resources• NOT DRAWN TO SCALE!

Page 45: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Restrict sandbox resources per zone set

• Zone set: “Intro”

• Disallow:

Page 46: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Restrict sandbox resources per zone set

• Zone set: “Intro”

Page 47: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Checkpoint... The Storm: Working Set

• Available memory: 334.8 MB• DVD working set: 308.9 MB– Global data: 49.2 MB–Max zone-set resources: 259.7 MB

• Available memory > DVD working set• Hooray!

Page 48: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Checkpoint... The Storm: Working Set

• HDD working set: 258.1 MB– Global data: 49.2 MB–Max zone-set resources: 208.9 MB

Page 49: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

PART 3: LOADING...Finally!

Page 50: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Canonical streaming model

Streaming (I/O)

Game Thread

Render Thread

Resource

Access State

Page 51: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Canonical streaming conflicts

Streaming (I/O)

Game Thread

Render Thread

Resource

Access State

Page 52: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Halo 3 streaming model

Game Thread

Render Thread

Cached Resour

ce Access State

Streaming (I/O)

Resource

Access State

Page 53: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Halo 3 streaming model

Game Thread

Render Thread

Streaming (I/O)

Resource

Access State

Cached Resour

ce Access State

Page 54: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Resource access stateresource address<resource> <address><resource> <address><resource> <address>… …

Page 55: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Generic loading process• Determine working set• Load• Publish

Page 56: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Generic using process• Grab published access object• Run frame/tick/loop• Release published access object

Page 57: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Required loading process• Determine working set• Load• Publish

Page 58: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Required loading process• Determine working set from active

zone set• Blocking Load required resources• Publish

Page 59: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Transitioning between zone sets

Page 60: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Zone set transitionsZOMG!

Page 61: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Intro <-> First Encounter

Page 62: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Intro <-> First Encounter

Page 63: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Intro <-> First Encounter

Page 64: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Intro <-> First Encounter

Page 65: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Intro -> First Encounter

Loading… done

Page 66: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Checkpoint...The Storm: Available memory

• Final build, HDD– Available memory: 390.1 MB– HDD Max required memory: 258.1 MB

• HDD Available memory: 132 MB!

Page 67: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Generic I/O scheduler

SchedulerI/O

RequestI/O

RequestI/O

Requests

I/O Reque

st

Page 68: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Pop Quiz!• Optimal # of I/O in flight – 1– 2– 6– Infinity– None of the above– I don’t know

Page 69: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Pop Quiz!• Optimal # of I/O in flight: Zero

Page 70: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Pop Quiz!• Optimal # of I/O in flight: 1

Page 71: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Generic I/O scheduler• Un-bad generic solution• Not-good specific solution

Page 72: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Optional I/O scheduler• One I/O at a time• Fast changeover• Priority

Page 73: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Optional I/O Scheduler• Desired resources– {A, B, C}

• Loaded resources– {C, D, E}

• To-load resources– {A, B}– Desired - Loaded

Page 74: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Optional I/O scheduler [fix]

SchedulerI/O

Request

Desired{…}

Loaded{…}

Page 75: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Optional I/O priority [fix]

SchedulerI/O

Request

Desired Soon{…} Loaded

{…}Desired Later{…}

Desired Now{…}

Page 76: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Optional I/O optimizations• Bounded set == bit vector• Bit vector ordered by optimal load

order• Minimum seeks!

Page 77: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

PART 4: RTM!

Page 78: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Total game size• Total: 15.06 GB–Main menu: 91.25 MB–Multiplayer: 4.27 GB– Campaign: 10.70 GB

Page 79: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Shared resource files• Commonly used resources in global

files–Multiplayer & Campaign– Campaign only

Page 80: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Total game size, shared maps• Total: 7.07 GB–Main menu: 82.0 MB– Shared: 927 MB–Multiplayer: 1.67 GB– Campaign: 5.37 GB

Page 81: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

FULL GAME OPTIMIZATION:FRANKENBUILD

Super Ninja Art!

Page 82: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Optimizing map layout• Determine resource “usage”– “Usage” == all zone sets is it used in

• Package resources with identical “usage”

Page 83: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Optimizing single map layout

Optimized Map Layout

Zone usage key

Zone usage key

Zone usage key

Page 84: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Optimizing shared map layout

• Determine shared resource “global usage”– “Global usage” == all maps and zone

sets is it used• Package shared resources with

identical “global usage”

Page 85: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Optimizing shared map

Optimized Shared Map Layout

Map/Zone usage key

Map/Zone usage key

Map/Zone usage key

Page 86: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Relink map files• Obvious diagram (and SmartArt

spew)Original

map

Optimized

layout

Optimized map

Page 87: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Total game size, Frankenbuild• Total: 5.36 GB–Main menu: 52.6 MB– Shared: 704 MB–Multiplayer: 1.06 GB– Campaign: 3.55 GB

Page 88: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Don’t throw stuff away!that you need... later

• Don’t unload shared resources– Store disk location with each resource

before loading next map–Match resources based on disk location

before loading more data• Preload map resources from main-

menu– Load resources for next map, then

associate disk location for each resource

Page 89: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Halo 3: Optimized for Hard drive

• Framework for content usage• Minimize or eliminate load times• Guaranteed gameplay experience

Page 90: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive

Target Streaming for Massive Damage

Page 91: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive