Skip to content
0:00 / 0:00

#destiny#jobsystem#multithreading

Multithreading the Entire Destiny Engine

GDC Festival of Gaming

555K subscribers • 54 videos on Hallway • Conference channel

YouTube
  • Recommended by 1 person: 1 on Hacker News.
  • Presented by Barry Genova, engine programmer at Bungie
  • May be out of date. Uploaded 9 years ago, in an area where tools change fast.

Advanced. Deep dive for people who know the field.

65K views9 years ago1 recommendation

Game developmentSystems programmingGame programmingConcurrency and parallelismPerformance and optimization

Barry Genova explains how Bungie restructured the Destiny game engine into a job graph to achieve massive parallelism with minimal thread pre-emption.

In this 2015 GDC Talk, Bungie's Barry Genova explains how Bungie turned almost every part of Destiny's engine into a a job graph, with only limited use of thread-based pre-emption. This talk should prove useful to programmers working on demanding game engines of their own. GDC talks cover a range of developmental topics including game design, programming, audio, visual arts, business management, production, online games, and much more. We post a fresh GDC video every weekday. Subscribe to the channel to stay on top of regular updates, and check out GDC Vault for thousands of more in-depth talks from our archives. Follow us on Twitter twitter.com/Official_GDC Check out our Facebook page for GDC exclusives facebook.com/GameDevelopersConference Visit our site: ubm.io/2ctNvqZ

Why it's here

1 person recommends this

What people say. Highly recommended for engineers looking to understand real-world, high-performance job-based multithreading architectures in AAA game engines.

maccardon Hacker News • Recommends

On “How Unreal Renders a Frame”

Here’s a good talk on a system used for the PS4 - link And another one on multithreading a cross platform game - link to this video There’s also this talk - link which talks about collision detection and collision resolution on the GPU that actually explains the architecture of the cpu engine quite well and shows what parts are serial and what parts are well parallelised.

u/nwar1994in r/GraphicsProgramming • Mentions

Resource tagging for multi-threading graphics? Does anyone know what this guy is talking about when talking about resource tagging to runtime check if there's data contention between threads? You just throw a data type into a container and then what? [video

cpetersoon Hacker News • Mentions

On “Ask HN: Will Rust ever become a mainstream systems programming language?”

Are there any AAA game studios using or evaluating Rust yet? I saw some GDC talks about the multithreaded game engine for Bungie's Destiny game. Given the debugging and QA challenges of their multithreaded architecture, something like Rust's ownership model seems like a good fit. Does the Rust toolchain support Xbox and PlayStation? * Destiny's Multithreaded Rendering Architecture: link * Multithreading the Entire Destiny Engine: link to this video

cpetersoon Hacker News • Mentions

On “Game Loop”

"Multithreading the Entire Destiny Engine" is a 2015 GDC talk by Bungie's Barry Genova explaining how Bungie turned almost every part of Destiny's engine into a job graph that can be processed in parallel. link to this video

jesse__on Hacker News • Mentions

On “In what programming language would you write new OS?”

…ages>. I'm certainly not qualified to speak with any authority on the matter of provably correct programs, but it seems to me there's a middle ground there that has yet to get a lot of attention. Something like C, but with markup describing data lifetimes, value ranges, permissible access, etc. The guys at Bungie did something similar for Destiny: link to this video There are also some PHd folks working on adding type annotations to C and restricting aliasing rules. Those annotations/rules get fed through a solver that proves it's free of latent memory bugs. As far as I remember they're trying to prove the Android thread scheduler. I couldn't find the talk/slides, but it turns out that's hard in C, but…