Destiny 2
How Destiny 2 works: data formats, network protocols and engine systems.
These pages describe how the game works: its data formats, its network protocols and its engine systems. The facts come from reverse engineering the client that Sunrise runs on.
Every page is about PC build 86657, the build Sunrise uses. It is dated 2020-08-23, in Season of Arrivals, the last season before Beyond Light. Other builds differ, and layouts and ids may not carry over. The build has the details.
Conventions:
- Most function and field names are descriptive names, not Bungie’s. The game ships without most of its names.
- Offsets are in hex. Sizes are in bytes unless a page says bits.
- Data layouts are C-like structs. Logic is C-like pseudocode.
- A fact that is not proven is marked “unverified” or “unknown”.
For how Sunrise answers the game, see Sunrise.
The build
The Destiny 2 build Sunrise targets, its reference build, and how it differs from newer builds and Destiny 1.
Read more →Packages
The Tiger package format: file names, header, entry table, blocks, named tags, and how entries get loaded.
Read more →Tags, classes and definitions
Tag hashes, tag classes, the definition registry, field descriptors and the bit-packed codec.
Read more →Items, characters and inventory
The account, character and item objects the client holds, and the package tables they point into.
Read more →Collections, vendors and other catalogs
The investment catalogs beyond items: collectibles, objectives, records, progressions, vendors, plug sets, map nodes, strings and icons.
Read more →Weapons and perks
How a weapon is put together from package data: sandbox perks, weapon type, fire rate tables, first-person presentation, firing effects and sounds.
Read more →Behaviors
The compiled logic in the packages: object behaviors on entities, perk programs, unlock expressions and UI bindings. How each runs, and how to decompile and recompile it.
Read more →Activities and destinations
The activity and destination tables, how the client loads a level and picks a spawn point, how a mission is authored, public regions and waypoints.
Read more →The Activity Host protocol
How the client talks to the Activity Host: the envelope, the message ids, slots, and the Auth and Sense tables.
Read more →Network stack
The client's network protocols: SignOn, the bdLobby services, the web-service RPC, replicated objects, matchmaking and the peer transport.
Read more →Bootflow
The client's boot state machine: its 79 steps, how a step runs, and how it fails.
Read more →Rendering
How package data drives the D3D11 renderer: TFX, scopes, stages, materials, lighting, shadows, fog, atmosphere, water and decorators.
Read more →Effects and particles
How maps and entities place effects: particle nodes, the sequence player, particle locations, systems, emitters and their programs, and lens flares.
Read more →The UI format
How the game UI ships as package data and runs: screens, hierarchies, widget tables, bindings, layout, text, fonts and bitmaps.
Read more →World geometry and collision
Static map instances, culling, occlusion tomes, level of detail, baked Havok collision, entity physics, hitboxes and the collision filter.
Read more →Audio and music
The game's Wwise banks, music transitions, random playlists, switches, clip automation and 2D panning.
Read more →Actors and AI
How client actors get commands and walk, action kinds, the authored squad spawner, and the class definitions objects are built from.
Read more →