This is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.
|Session Name:||Multithreading the Entire Destiny Engine|
|Track / Format:||Programming|
|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.|