New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios...

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

Transcript of New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios...

Page 1: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Overview

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

Page 7: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

PART 1: HIGH LEVEL I/O DESIGN

Page 9: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Goals

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

Page 10: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Policies

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

Page 11: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

DVD vs. HDD

DVD 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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

DVD vs. HDD

DVD 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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

DVD vs. HDD

DVD 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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Goals: Maximizing I/O performance

MINIMIZE SEEKS!

Page 16: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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

566 MB!

Page 22: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

AI dialogue tree branch:Praise

prsprs_plr_gdgrnd

prs_plr_killprs_plr_kll_blt

prs_plr_kll_mjr

prs_plr_kll_vcl_bmp

prs_plr_kll_wmelee

prs_plr_arb

prs_plr_mc

prs_plr_kll_lots

prs_plr_sniping

Page 27: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

This is for DVD-only!

• HDD will always sound great!

Page 31: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

So... what?

Page 32: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

PART 2: WHAT TO LOAD

Page 34: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Mapping resource usage to position

NOT DRAWN TO SCALE!

Page 35: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Mapping resource usage to position

Page 37: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Multiple bsps = Zone set

• Example: “Intro”

Page 38: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Multiple bsps = Zone set

• Example: “First Encounter”

Page 39: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Scarab

Page 42: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Ghost

Page 43: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Brute

Page 44: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Sandbox resources

• NOT DRAWN TO SCALE!

Page 45: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Restrict sandbox resources per zone set

• Zone set: “Intro”

• Disallow:

Page 46: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Restrict sandbox resources per zone set

• Zone set: “Intro”

Page 47: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

PART 3: LOADING...Finally!

Page 50: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Resource access stateresource address

<resource> <address>

<resource> <address>

<resource> <address>

… …

Page 55: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Generic loading process

• Determine working set• Load• Publish

Page 56: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Required loading process

• Determine working set• Load• Publish

Page 58: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Transitioning between zone sets

Page 60: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Zone set transitions

ZOMG!

Page 61: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Intro <-> First Encounter

Page 62: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Intro <-> First Encounter

Page 63: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Intro <-> First Encounter

Page 64: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Intro <-> First Encounter

Page 65: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Intro -> First Encounter

Loading… done

Page 66: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Generic I/O scheduler

Scheduler

I/O Reque

st

I/O Reque

st

I/O Reque

sts

I/O Reque

st

Page 68: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Pop Quiz!

• Optimal # of I/O in flight: Zero

Page 70: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Pop Quiz!

• Optimal # of I/O in flight: 1

Page 71: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Optional I/O scheduler [fix]

SchedulerI/O

Request

Desired{…}

Loaded{…}

Page 75: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

PART 4: RTM!

Page 78: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

FULL GAME OPTIMIZATION:FRANKENBUILD

Super Ninja Art!

Page 82: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Relink map files

• Obvious diagram (and SmartArt spew)Origi

nal map

Optimized

layout

Optimized map

Page 87: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

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 Mat Noguchi BUNGIE Studios matthewn@bungie.com.

Target Streaming for Massive Damage

Page 91: New Dog, Old Tricks: Running Halo 3 Without a Hard Drive Mat Noguchi BUNGIE Studios matthewn@bungie.com.