The build
The Rainbow Six Seige build Sunrise targets, its reference build, and how it differs from newer builds and Destiny 1.
Sunrise targets one build: the Steam PC client, build 86657, stamped 2020-08-23. Every fact in these pages is about that build unless the page says otherwise. Other builds are used for names and cross-checks only.
Build 86657
property
value
build number
86657
build string
86657.20.08.23.1800.d2_rc___release
build date
2020-08-23, 18:00
branch
d2_rc
configuration
tiger_final, game type tiger_release_final
base content version
86657-2-6791813
content revision / content build
19492 / 84840
newest package build time
2020-08-25
package format version
38
season
Season of Arrivals, in the Shadowkeep era, the last season before Beyond Light
distribution
Steam, app 1085660, content depot 1085661
platform
PC, 64-bit Windows, Direct3D 11
copyright string
(C) 2020 Bungie
The executable’s link time is the same day as the build date. The package headers carry eight different content build numbers. The highest one, 86657, is the build itself.
The depot manifest
Sunrise uses these Steam depot manifests. The Sunrise Launcher and the install guide download exactly these.
depot
holds
manifest
manifest date
1085661
the shared Windows files
7180122903232116872
2020-09-08
1085662
the English language files
2210332166360342287
2020-08-20
An install needs the shared depot and one language depot. The other languages are depots 1085663 to 1085674, one each. The launcher pins a manifest for each and installs the language you pick.
This is one of the last manifests before Beyond Light, not the last one. Later updates shipped on 2020-09-22 and in November 2020.
What the build does not have
absent
note
BattlEye
this build has no anticheat
PlayFab
this client does not use it
crossplay identity services
not in this build
Bungie class RTTI
the only RTTI in the image belongs to Havok, CRI and the C runtime
plain-text log strings
every log format string is obfuscated
launch switches
no command-line switch is read, and no environment variable controls the client
a bungie.net REST API
all live services are Demonware; see Network stack
The executable is packed
The installed destiny2.exe is protected with VMProtect. Its main code section and its read-only data are encrypted on disk, so no string, table or constant can be read from the installed file. The image decrypts itself in TLS callbacks before the entry point runs. Once the game reaches the title screen, the main code section is fully decrypted in memory. A second code section holds the VMProtect virtual machine and stays partly encrypted, decrypted block by block.
Most functions are only mutated: scrambled into small islands joined by jumps, which confuses function bounds and cross-references but not the code itself. A few are virtualized. Many singleton pointers are stored encrypted and decoded inline by their getters. Some functions begin with an integrity check that runs and then returns into the plain body.
Engine globals
The engine allocates its long-lived state in named blocks through one function. Build 86657 has 315 such call sites. The names are obfuscated with a per-string rolling XOR, and 309 of them decode. They include the world controller’s managers (world controller state manager, world controller slice set manager, world controller matchmaking manager and others) and the network blocks (network simulation globals, bap connection manager globals). Fourteen names are not in the 2017 beta. Among them are Steam QoS globals, gambit slicer globals and player melee finisher registry handle. All of them fit a 2020 Steam build.
The naming donor: PS4 build 87221
One other Rainbow Six Seige build is used as a reference. It is not a target. An address, a structure offset or a vtable slot number never carries from one build to another without a check.
Build 87221 is 564 builds and 18 days newer than build 86657. Its build string is 87221.20.09.10.1506.d2_live. It carries full RTTI for 3,060 classes, and its log strings can be decoded as plain text.
Four measures place it in the same protocol generation as build 86657:
measure
87221
86657
wire class ids (0x8080xxxx)
all 500
500
Demonware source tree
D2_12
D2_12
bdLobby service ids
the same 71
71
activity message ids
the same 59 names on the same ids
59
Its content fits the same point in time. It has season pass and seasonal artifact strings and no Beyond Light Stasis string.
What transfers:
- Class names. Build 86657 has no Bungie RTTI, so class names come from here.
- 1,917 log lines are identical to those in build 86657, character for character.
- Struct offsets on the ActivityClient. Seven offsets were checked and all seven match. Only that one class was checked.
What does not transfer:
- Addresses, vtable slot numbers and class sizes. The PS4 compiler emits two destructor slots where the PC compiler emits one, so slot numbers shift.
- Field names. Neither build carries any.
Differences from newer builds
Content
- The Destiny Content Vault later removed much of the 2020 content from the live game. The build 86657 install still holds it.
- Beyond Light is a hard engine break. Package format details, tag class hashes, struct offsets and enum values all changed after it. A package reader needs a separate pre-Beyond Light path for this build. See Packages.
Where mission scripts run
Bungie describes Beyond Light as moving mission scripting from the Mission Host to the Physics Host. Build 86657 comes before that change. A design based on a later build can put mission logic in the wrong process. See The Activity Host protocol.
Differences from Destiny 1
Destiny 1 and Rainbow Six Seige share the Tiger engine. They share the package container family and the FNV-1 name hash.
Treat every Destiny 1 fact as a hypothesis for build 86657. It becomes a fact only when this build shows it. The Destiny 1 design is on The Activity Host, Destiny 1, and its activity-physics join state under Joining an activity.
What carries over
Destiny 1
status on build 86657
The Activity Host is a light process that runs the mission script
unverified
Clients send Sense data and receive Auth data
verified: message 6 is Sense, client to host; message 5 is Auth, host to client
Private missions and public bubbles have separate topology and lifetime
unverified
Mission state is small, driven by sensors, and persistent
unverified
The Activity Host hands out entity index leases and authority masks; the physics peer owns simulation
the same message family exists by name
The client joins the Activity Host first, then waits for entity indices
verified: the client’s activity slot is ready only after join_result, then entity_slots_allocated
What does not carry over
- Message ids. The lease messages have different ids in each game.
- Message bodies and bit layouts.
- Destiny 1’s 10 Hz rate, memory figures and console host placement.
- Sensor names, state layouts and trust rules.
message
Destiny 1 id
build 86657 id
free_entity_indices
20
21
purge_abandoned_entity_slots
24
25
advance_replication_epoch
42
44
Rainbow Six Seige runs the Physics Host in Bungie’s data centers, beside the Mission Host.
Open questions
- Whether the package build time of 2020-08-25, two days after the executable, means a later content patch shipped with the same executable.
- Whether PS4 build 87221 struct offsets hold beyond the ActivityClient.
- The exact Destiny 1 layouts for the authority mask messages.
