You've been logged out of GDC Vault since the maximum users allowed for this account has been reached. To access Members Only content on GDC Vault, please log out of GDC Vault from the computer which last accessed this account.

Click here to find out about GDC Vault Membership options for more users.

close

The Number One Educational Resource for the Game Industry

Session Name: Multithreading the Entire Destiny Engine
Speaker(s): Barry Genova
Company Name(s): Bungie
Track / Format: Programming

Did you know free users get access to 30% of content from the last 2 years?


Get your team full access to the most up to date GDC content

Overview: Modern console architectures have heterogeneous, multi-core computation architectures differing vastly in performance and memory characteristics. As a result, game engines' multithreading architectures have moved away from system-level thread parallelism to fine-grained task and data parallelism to optimally take advantage of all available resources. Bungie's new game Destiny is a fast-paced shared-world shooter that demands a low-latency action gameplay experience. We have taken traditional job-based multithreading techniques to the next level, turning almost every part of our engine into a job graph, with only limited use of thread-based pre-emption. To do this, we have developed several novel techniques, such as splitting our main game loop into special strings of jobs which we call "job fibers." We will present our resource tracking system that allows rigorous validation multithreaded data lifecycles. This system verifies at runtime that all data accesses (reads, writes, creations and destructions) are valid and occur at safe times within the frame. We will show our entirely job-based frame structure, and delve into examples of both system-level pipelining and data parallelism.

GDC 2015

Barry Genova

Bungie

free content

Programming

Programming