Coop
Co-op and lockstep
Solo is the same match object with one occupied seat. Co-op fills more seats and runs one shared simulation.
What the player can do
A development co-op lobby produces a CoopMatchConfig. From level select, a party can ready and start a level together. The host's start carries the level id, the match seed, and each seat's kit. Gameplay then simulates from that seed and from seat inputs. The sim clock and sim RNG for that life are on this chapter's as-built page. Seats can be occupied or empty. A shop barrier holds the party together between offers. If the player is down, the run continues until the party is wiped or the match ends another way.
What ends it
GameplayExitReason.CoopEnded returns to the lobby and skips the leaderboard. GameplayExitReason.PartyWiped records a personal score, shows results, and returns to the lobby instead of restarting in place. Leaving the lobby returns to the title flow.
What is saved
The match seed, seat occupancy, and seat kits last for that run. The local profile, inventory, and any score submitted for a party wipe are saved on this machine. The other seats' inventories are not written into the local profile.
Numbers
Generated snapshot
Co-op and lockstep
Generated from the Unity project. Do not edit this file. Regenerate: Deep Forest Labs → Slumber → Wiki → Write snapshots, or call WikiSnapshot.WriteAll().
Owns
States
_None._
Service interfaces
ICoopSoak(DeepForestLabs.Slumber.Services.Lockstep) —Assets/Scripts/Services/Lockstep/ICoopSoak.csILobbyFacade(DeepForestLabs.Slumber.Services.Lockstep) —Assets/Scripts/Services/Lockstep/ILobbyFacade.csILockstepSession(DeepForestLabs.Slumber.Services.Lockstep) —Assets/Scripts/Services/Lockstep/ILockstepSession.csILockstepTransport(DeepForestLabs.Slumber.Services.Lockstep) —Assets/Scripts/Services/Lockstep/ILockstepTransport.csIPregameLobbyService(DeepForestLabs.Slumber.PregameLobby) —Assets/Scripts/PregameLobby/IPregameLobbyService.csISimClock(DeepForestLabs.Slumber.Services) —Assets/Scripts/Services/ISimClock.csISimDesyncPolicy(DeepForestLabs.Slumber.Services.SimHash) —Assets/Scripts/Services/SimHash/ISimDesyncPolicy.csISimHashService(DeepForestLabs.Slumber.Services.SimHash) —Assets/Scripts/Services/SimHash/ISimHashService.csISimRng(DeepForestLabs.Slumber.Services) —Assets/Scripts/Services/ISimRng.csISimRngService(DeepForestLabs.Slumber.Services) —Assets/Scripts/Services/ISimRngService.csISteamService(DeepForestLabs.Slumber.Services.Steam) —Assets/Scripts/Services/Steam/ISteamService.cs
Factories
_None._
Config types
LockstepConfig(DeepForestLabs.Slumber.Services.Lockstep) —Assets/Scripts/Services/Lockstep/LockstepConfig.csSimClockConfig(DeepForestLabs.Slumber.Services) —Assets/Scripts/Services/SimClockConfig.csSimHashConfig(DeepForestLabs.Slumber.Services.SimHash) —Assets/Scripts/Services/SimHash/SimHashConfig.csSimRngConfig(DeepForestLabs.Slumber.Services) —Assets/Scripts/Services/SimRngConfig.cs
Enums
LobbyMemberReady
Assets/Scripts/Services/Lockstep/ILobbyFacade.cs
- NotReady = 0
- Ready = 1
LockstepMessageKind
Assets/Scripts/Services/Lockstep/LockstepWire.cs
- None = 0
- Hello = 1
- Ready = 2
- Unready = 3
- Start = 4
- Command = 5
- SimHash = 6
- Ping = 7
- Pong = 8
- Leave = 9
- SoftFail = 10
- Rules = 11
LockstepStepResult
Assets/Scripts/Services/Lockstep/ILockstepSession.cs
- Idle = 0
- Advanced = 1
- Stalled = 2
- Fatal = 3
SimHashContributorId
Assets/Scripts/Services/SimHash/SimHashContributorId.cs
- Clock = 0
- Seats = 1
- PlayerHealth = 2
- Rng = 3
- Round = 4
- Portal = 5
- MegaPortal = 6
- Enemies = 7
- Quadrupeds = 8
- SkullWorms = 9
- Scorpions = 10
- Orobas = 11
- Boss = 12
- BossProjectiles = 13
- Gauntlet = 14
- Mana = 15
SimRngId
Assets/Scripts/Services/SimRngId.cs
- Spawn = 0
- Combat = 1
- Rewards = 2
- Seat0 = 10
- Seat1 = 11
- Seat2 = 12
- Seat3 = 13
Assets
LockstepConfig
Assets/Data/_AssetData/Addressables/DeepForestLabs/Slumber/LockstepConfig.asset
- _stallTimeoutMs: 5000
- _delayCapTicks: 12
- _delayCapMsFor30Hz: 200
- _minPeersToStart: 2
- _maxPeers: 4
- _rttSampleWindow: 16
- _defaultInputDelayTicks: 2
- _skipEnemyCollision: false
SimClockConfig
Assets/Data/_AssetData/Addressables/DeepForestLabs/Slumber/SimClockConfig.asset
- _hz: 60
- _maxStepsAt60: 4
- _maxStepsAt30: 2
SimHashConfig
Assets/Data/_AssetData/Addressables/DeepForestLabs/Slumber/SimHashConfig.asset
- _enabled: true
- _cadenceTicks: 60
- _positionUnitsPerWorld: 1000
- _velocityUnitsPerWorld: 1000
- _healthUnitsPerWorld: 100
- _energyUnitsPerWorld: 100
- _manaUnitsPerWorld: 100
SimRngConfig
Assets/Data/_AssetData/Addressables/DeepForestLabs/Slumber/SimRngConfig.asset
- _useOverride: false
- _overrideSeed: 0
Wired in
Assets/Scripts/Factories/GameplayContainerFactory.csmentionsICoopSoakAssets/Scripts/Factories/GameplayContainerFactory.csmentionsILockstepSessionAssets/Scripts/Factories/GameplayContainerFactory.csmentionsILockstepTransportAssets/Scripts/Factories/GameplayContainerFactory.csmentionsISimClockAssets/Scripts/Factories/GameplayContainerFactory.csmentionsISimDesyncPolicyAssets/Scripts/Factories/GameplayContainerFactory.csmentionsISimHashServiceAssets/Scripts/Factories/GameplayContainerFactory.csmentionsISimRngServiceAssets/Scripts/Factories/GameplayContainerFactory.csmentionsSimClockConfigAssets/Scripts/Factories/GameplayContainerFactory.csmentionsSimHashConfigAssets/Scripts/Factories/GameplayContainerFactory.csmentionsSimRngConfigAssets/Scripts/Factories/PlayerContainerFactory.csmentionsIPregameLobbyServiceAssets/Scripts/Factories/SessionContainerFactory.csmentionsILobbyFacadeAssets/Scripts/Factories/SessionContainerFactory.csmentionsILockstepTransportAssets/Scripts/Factories/SessionContainerFactory.csmentionsISteamServiceAssets/Scripts/Factories/SessionContainerFactory.csmentionsLockstepConfigAssets/Scripts/Factories/SessionContainerFactory.csmentionsSimClockConfigAssets/Scripts/Factories/SessionContainerFactory.csmentionsSimHashConfigAssets/Scripts/Factories/SessionContainerFactory.csmentionsSimRngConfigAssets/Scripts/MainArgs.csmentionsISteamServiceAssets/Scripts/Spells/SpellLoadoutFactory.csmentionsISimClock