AllSleepNightSkip
Fast-forwards ASKA through the night when every required connected player is asleep.
By Exothermic
| Date uploaded | a week ago |
| Version | 0.1.5 |
| Download link | Exothermic-AllSleepNightSkip-0.1.5.zip |
| Downloads | 5 |
| Dependency string | Exothermic-AllSleepNightSkip-0.1.5 |
This mod requires the following mods to function
BepInEx-BepInExPack_IL2CPP
BepInEx pack for IL2CPP x64 Unity games. Preconfigured and ready to use.
Preferred version: 6.0.755README
Exothermic All-Sleep Night Skip v0.1.5
A BepInEx IL2CPP mod for ASKA that accelerates the world simulation when all required active players are asleep, then restores the exact previous time scale at morning, when somebody wakes, on a scene change, or at a safety timeout.
Behaviour
- Defaults to requiring 100% of active players to be asleep.
- Waits 3 real seconds to avoid triggering during a brief bed interaction.
- Runs only on the world authority when Fusion authority can be identified; dedicated/headless mode is treated as authority.
- Uses runtime discovery rather than fixed private ASKA field names.
- Stops at the discovered morning transition or after a 120-real-second safety timeout.
- Restores
Time.timeScaleandTime.fixedDeltaTimeon every exit path.
Build
The source is provided because ASKA's IL2CPP Unity reference assemblies are generated locally by BepInEx.
This release deliberately disables C# nullable-reference metadata because ASKA's generated Il2Cppmscorlib.dll does not provide the compiler attributes required for it on some Linux/Gale setups.
CachyOS / Arch / fish
-
Install the SDK and zip utility:
sudo pacman -S dotnet-sdk zip -
Start ASKA once through r2modman/BepInEx so
BepInEx/interopexists. -
Run:
./build.fish "/full/path/that/contains/BepInEx/interop"
For a normal manual installation, that path is usually the ASKA game directory. For r2modman it may be the selected profile directory instead.
Windows PowerShell
Set-ExecutionPolicy -Scope Process Bypass
.\build.ps1 -AskaDir "C:\Program Files (x86)\Steam\steamapps\common\ASKA"
The build produces:
Exothermic-AllSleepNightSkip-0.1.5-install.zip
Installation
Extract the generated install ZIP into the ASKA dedicated-server/game root so the DLL ends up at:
BepInEx/plugins/Exothermic.AllSleepNightSkip/Exothermic.AllSleepNightSkip.dll
Install it on the dedicated server/host. Clients may keep it installed too; AuthorityOnly = true prevents non-authoritative peers from changing time.
Configuration
After one launch, edit:
BepInEx/config/com.exothermic.aska.allsleepnightskip.cfg
Recommended initial values:
[General]
Enabled = true
[Sleep]
RequiredSleepFraction = 1
MinimumPlayers = 1
StartDelaySeconds = 3
[FastForward]
TimeScale = 20
MaximumRealSeconds = 120
OnlyAtNight = true
AllowUnknownNightState = true
MorningHour = 6
[Advanced]
AuthorityOnly = true
PlayerScanIntervalSeconds = 1
[Diagnostics]
VerboseLogging = false
DumpDiscoveryOnWorldLoad = false
If the server stutters, lower TimeScale to 8 or 10.
Diagnostic behaviour
ASKA uses additive scenes and the active scene name can remain a boot/menu/persistent scene even while a world is running. v0.1.5 no longer blocks scanning based only on that name. With VerboseLogging = true, every scan now reports its gate, active scene, loaded scenes, authority, player count, and per-player sleep signal.
v0.1.5 dedicated-server fixes
The v0.1.4 log confirmed that the dedicated server could find CharacterAska(Clone) and the night clock, but ASKA keeps the actual sleep state behind the player's _interactionAgent rather than an IsSleeping field on SSSGame.Character. v0.1.5 recursively follows only interaction/state/action/pose references and recognises active sleep, bed, in-bed, resting, and wake-up interaction objects. The traversal is depth- and node-limited so it cannot walk the whole world graph.
The exact-type SSSGame.Character scan, Character.Spawned tracker, CharacterAska(Clone) fallback, and sun/moon clock handling remain enabled.
First test
- Back up the save.
- Start the server with the mod installed.
- Join with every intended test player.
- Wait until night and have everybody use a bed.
- Check
BepInEx/LogOutput.logfor:
Night fast-forward started
Night fast-forward stopped: morning reached
If it does not detect sleep or the clock after an ASKA update, set:
[Diagnostics]
VerboseLogging = true
DumpDiscoveryOnWorldLoad = true
Restart, enter the world, and sleep. While every player remains unknown, v0.1.5 writes up to three ALL-SLEEP NIGHT SKIP DISCOVERY sections at 15-second intervals so the log captures both the awake and in-bed interaction graphs. The mod only reads candidate state and does not change the save format.
Limitations of v0.1.5
ASKA does not expose a stable public mod API for sleep and world-clock state. This version therefore uses ranked runtime discovery plus a sun fallback. A game update can rename or restructure those internals. The safety timeout and full time-scale restoration are designed to prevent a failed clock probe from leaving the server accelerated.
CHANGELOG
Changelog
0.1.6
- Removed developer build instructions from the public Thunderstore README.
- Simplified installation, configuration, and troubleshooting information for server owners.
- No gameplay or runtime behaviour changes from 0.1.5.
0.1.5
- Added recursive inspection of ASKA's
_interactionAgent, current interaction, action, state, pose, and moveset object graph. - Recognises active
SleepInteraction,BedInteraction,InBed,WakeUpInteraction, sleeping state enums, and equivalent renamed objects. - Added guarded animator-clip detection without invoking invalid animator layers on the headless server.
- Added
CharacterAska(Clone)as a dedicated-server player-root fallback whenIsPlayer()reports false. - Expanded the discovery dump with a bounded recursive interaction/state graph for future ASKA updates.
- Discovery repeats up to twice at 15-second intervals while sleep remains unknown, so entering a bed after world load is captured.
- Compact scan diagnostics now include the closest interaction graph values when no sleep signal is found.
0.1.4
- Added a dedicated-server
Character.Spawnedregistry so player objects are captured as ASKA creates them. - Added exact-type discovery for ASKA's
SSSGame.CharacterIL2CPP wrapper, including inactive live scene instances. - Added
playerProbe=diagnostics with tracked, exact-type, broad, tagged, and accepted counts. - Fixed ASKA's
Directional Light MOONbeing interpreted as morning instead of night. - Retained broad and tag-based discovery fallbacks for clients and future ASKA updates.
0.1.3
- Removed the unreliable active-scene-name gate that could silently stop all scans on ASKA dedicated servers.
- Diagnostics now log before authority/player gates, so
players=0,NotAuthority, and scene mismatches are visible. - Added an unconditional
NightSkipBehaviour is activestartup line. - Discovery waits until at least one player is visible instead of consuming the one-shot dump too early.
- Startup now prints the effective diagnostic and authority settings.
0.1.2
- Fixed Linux/Gale builds failing with
CS0656forNullableAttributeandNullableContextAttribute. - Removed nullable-reference metadata that conflicts with ASKA's generated
Il2Cppmscorlib.dll. - Replaced record/init-only types with ordinary structs/properties for broader IL2CPP compiler compatibility.
0.1.0
- Initial experimental ASKA/BepInEx IL2CPP release.
- Detects active player characters and ranked sleep signals at runtime.
- Requires a configurable fraction of connected players to be asleep.
- Authority-only time acceleration with dedicated-server detection.
- Reflective world-clock discovery and directional-sun fallback.