Sly 2:Game state
|Game||Sly 2: Band of Thieves|
Game state refers to the current state of objects in the the game world. It was the subject of a 2005 GDC presentation by Bruce Oberg, the Principal Engineer at Sucker Punch.
Tasks[edit | edit source]
The current game state is represented by a Directed Acyclic Graph, or DAG, which is a data structure comprised of a directed graph with no cycles. Each node on the DAG is called a task. For example, t1_follow_dmitri_on_streets is the task of tailing Dimitri in the "Follow Dimitri" job (the prefix t1 indicates that it is a task in Episode 1, and follow is the codename for the "Follow Dimitri" job).
Task States[edit | edit source]
Each task has a state value which can be one of the following:
- 0 – Unavailable
- 1 – Available
- 2 – Complete
- 3 – Final
All tasks begin as Unavailable. A task becomes Available once all of its predecessors are Complete. Tasks become Complete through conditions being met in the level scripts, and tasks become Final through completing missions.
State Forcing[edit | edit source]
At all times, every task before an Available task must be Complete or Final. Additionally, every task after an Available task must be unavailable. It is possible to force a task to a particular state, which propagates throughout the DAG to ensure those conditions are always met.
Missions[edit | edit source]
Tasks are grouped into missions, where each mission is typically one particular job in the story. For instance, m1_follow[check] is the job "Follow Dmitri". The prefix m1 indicates that it is a mission in Episode 1, and follow is the codename for the mission.
If a task belongs to a mission and the exit task in that mission is Completed, then all the tasks in that job become Final.
Checkpoints[edit | edit source]
A task is considered a checkpoint task if it has some checkpoint data associated with it, including a particular character and location in the game world. When a checkpoint task becomes Available that checkpoint is set as the latest checkpoint.
Rollbacks[edit | edit source]
A rollback is when the game state rewinds to an earlier state (such as when the player dies). This is accomplished by:
- Resetting the world
- Placing the player at the latest checkpoint
- Forcing the checkpoint task to Available (which may result in the states of other tasks being updated)
See also[edit | edit source]
- DAGviz - A tool for viewing and editing the DAG in real time
- Sly 1:GS - The game state tracking system in Sly Cooper and the Thievius Raccoonus.
References[edit | edit source]
- ↑ The Picture Worth a Thousand Bugs - YouTube, 3 April 2021 (archived from a 2005 GDC conference)