![Page 1: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/1.jpg)
![Page 2: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/2.jpg)
Ten Years of Keeping People Working [At Bungie]
Mat NoguchiBungie Studios
![Page 3: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/3.jpg)
Who am I?• Halo: Combat Evolved• Halo 2• Halo 3• Halo 3: ODST• Halo: Reach
![Page 4: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/4.jpg)
Why so angry?• It’s my job– (I’m not actually that angry. Maybe stressed.)
• Halo is big and awesome• Halo is literally big and awesome– Halo: Reach == 30 Halo: CEs!– Still has to fit on a DVD
• And we never actually planned for this
![Page 5: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/5.jpg)
Well known bottlenecks• Disk/storage footprint– DVD or BluRay or downloadable package
• Memory– 512 MB for current generation
• I/O– 1 or 2 devices, limited bandwidth– Internet (much more limited bandwidth)
![Page 6: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/6.jpg)
It’s also about the people!• Someone has to make all that content• Someone has to program the game to use that
content• And everyone has to make it awesome
![Page 7: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/7.jpg)
It starts with programmers• Programmers should only work with content in a
simple way– Not as raw memory– Not as files– Not as I/O
• Otherwise, they will mess it up.– Even me. (DOH!)
![Page 8: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/8.jpg)
content == tags• Programmers think in terms of tags– Containers, not memory– Dependencies, not files– Don’t think about I/O at all!
![Page 9: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/9.jpg)
Tag system: Halo 1Features• Tag build (development)
– Hot loading for all tags
• Cache build (ship)– Optimized memory layout– Monolithic file
API• long tag_load(
const char *name,
tag group_tag, dword flags);
• void *tag_get(long tag_index);
![Page 10: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/10.jpg)
Tag system: Halo 2More Features• Tag build
– Append only versioning
• Cache build– Automatic cross-map sharing– Automatic immutable data
sharing
API• long tag_load(
const char *name,
tag group_tag, dword flags);
• void *tag_get(long tag_index);
![Page 11: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/11.jpg)
Tag system: Halo 3Even More Features• Tag build
– Automatic and explicit tag versioning
– Arbitrary paging support– Monolithic files on devkit
• Cache build– Whole disk optimizations– Can run without HDD
API• long tag_load(
const char *name,
tag group_tag, dword flags);
• void *tag_get(long tag_index);
![Page 12: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/12.jpg)
More technical details• The Technology of Halo 2 (2004) – Chris Butcher• Content Management for Halo 2 and Beyond (2005)
– Mat Noguchi• New Dog, Old Tricks: Running Halo 3 without a Hard
Drive (2008) – Mat Noguchi
![Page 13: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/13.jpg)
It’s simple!• Every in-game feature is driven by tags!• Encourages communication!
![Page 14: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/14.jpg)
PORKCHOP SANDWICHES!
![Page 15: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/15.jpg)
Shaders tags, my nemesis• 19 shader types
– The HLSL is tag driven (woo )
• 310,718,936 permutations– Only use 1,659 (boo )
• Can generate on-demand– Usually several seconds to a minute– But we can’t cache them on the devkit– More than 10 and artists get mad. Really mad.
• Build shaders periodically on our build farm– Life on the Bungie Farm … - Luis Villegas and Sean Shypula)
• Let’s not have to do that next time.
![Page 16: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/16.jpg)
Personal growth• From 2002-ish to 2007– Level editor– Tag system– Tag editor– Audio
![Page 17: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/17.jpg)
But then…
![Page 18: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/18.jpg)
And now…
![Page 19: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/19.jpg)
Today• I own– Tag system
• Other people own– Level editor– Audio
• Tools team– Tag editor
![Page 20: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/20.jpg)
Tag editor evolved: Bonobo
![Page 21: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/21.jpg)
Content explorer
![Page 22: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/22.jpg)
Quick preview
![Page 23: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/23.jpg)
Mantini
![Page 24: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/24.jpg)
Why this matters• It’s not just about the code– all content code has the same structure
![Page 25: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/25.jpg)
Content code structureBoosttemplate<class Archive> void serialize(
Archive & ar, gps_position & g, const unsigned int version)
{ ar & g.degrees; ar & g.minutes; ar & g.seconds;
}
Tag system (pseudocode)TAG_GROUP(
gps_position){
{_field_long_integer, “degrees”}, {_field_long_integer, “minutes”},{_field_real, “seconds”},{_field_terminator},
};
![Page 26: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/26.jpg)
Why this matters• It’s not just about the code– All content code has the same structure– More about what you can’t do
![Page 27: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/27.jpg)
Why this matters• It’s not just about the abstractions– It’s important to have them– Ideal if they map to a decent implementation
• Even better if you don’t have to ship them
![Page 28: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/28.jpg)
Why this matters• It’s about the culture Bungie built around the tag
system– “You forgot the part where you need to stand behind the
rest of the team with a baseball bat.“ – Andy Firth– The bat- If it’s not a tag, it’s not in the game– But that’s okay, because it’s simple to use!
![Page 29: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/29.jpg)
THANK YOUPer audacia ad astra!
![Page 30: Ten Years of Keeping People Working [At Bungie] Mat Noguchi Bungie Studios](https://reader037.vdocuments.us/reader037/viewer/2022102805/551b124d5503462e578b5b85/html5/thumbnails/30.jpg)