GameSpeedController
Fine-tune global timescale while keeping NPCs and the player in sync through smart NavMesh and animation compensation.
By Duckieray
| Last updated | a month ago |
| Total downloads | 389 |
| Total rating | 1 |
| Categories | Mods Tools NPCs QOL |
| Dependency string | Duckieray-GameSpeedController-1.1.0 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
Game Speed Controller
Game Speed Controller gives you full control over TCG Card Shop Simulator's pacing. Multiply or reduce the global timescale, speed up NPC pathing and interactions, and keep the player avatar moving at a natural pace - all without breaking Unity physics. Perfect for fast-forwarding early days or slowing the shop down for recording.
Features
- Applies a configurable global timescale multiplier while keeping
Time.fixedDeltaTimeandTime.maximumDeltaTimealigned for stable physics. - Automatically rescans
NavMeshAgentNPCs and scales their speed, acceleration, angular speed, and interaction animations. - Optional inverse scaling keeps the player character's movement and animation speeds close to vanilla even when the world is accelerated.
- Smart pause detection honours in-game pauses and restores your configured timescale when gameplay resumes.
- Keyword-based exclusion lists let you skip specific NPC hierarchies or components from being accelerated.
Requirements
- TCG Card Shop Simulator (current Steam build).
- BepInEx 5.4 or newer (Mono) installed for the game.
Installation
Thunderstore Mod Manager / r2modman
- Select TCG Card Shop Simulator in your mod manager and open the Thunderstore browser.
- Find Game Speed Controller and click Download (Latest).
- Launch the profile; the plugin loads automatically on game start.
Manual installation
- Download the release zip and extract it into the game directory so
GameSpeedController.dllends up atBepInEx/plugins/GameSpeedController/GameSpeedController.dll. - Run the game once to generate the configuration file.
TCG Card Shop Simulator/
BepInEx/
plugins/
GameSpeedController/
GameSpeedController.dll
Usage
- Start the game to apply the default 1.25x speed boost.
- Edit
BepInEx/config/com.duckieray.cardshop.gamespeed.cfgto fine-tune behaviour. Changes apply live; no restart is required. - Status updates (current timescale, tracked agent count, etc.) are logged every few seconds to
BepInEx/LogOutput.log.
Player compensation
- With
CompensatePlayerMovementenabled (default) the plugin finds playerNavMeshAgentandAnimatorcomponents and applies the inverse of your timescale so controls feel normal. - If compensation fails after respawns or cutscenes, the plugin retries detection automatically until the player is found.
NPC scaling
- NPC
NavMeshAgentspeed, acceleration, and angular speed followWalkSpeedMultiplier. - Interaction animations can follow the global timescale, the inverse, or a manual multiplier - useful for keeping card-hand animations readable while NPCs move faster.
- Agents whose hierarchy names or component type names contain any entry from
ExcludedAgentNameTokensorExcludedComponentTokensare ignored.
Configuration
Edit BepInEx/config/com.duckieray.cardshop.gamespeed.cfg (created after the first run):
| Setting | Default | Description |
|---|---|---|
TimeScaleMultiplier |
1.25 |
Global timescale multiplier (0.05-10). |
SyncFixedDeltaTime |
true |
Keeps Time.fixedDeltaTime aligned with the timescale for consistent physics. |
SyncMaximumDeltaTime |
true |
Scales Time.maximumDeltaTime to match the new cadence. |
WalkSpeedMultiplier |
1.25 |
Multiplier for NPC NavMeshAgent speed and acceleration (0.1-10). |
InteractionScalingMode |
InverseTimeScale |
How NPC interaction animations scale (Manual, MatchTimeScale, InverseTimeScale). |
ManualInteractionMultiplier |
0.75 |
Animation multiplier used when InteractionScalingMode = Manual. |
CompensatePlayerMovement |
true |
Keeps player movement and animations close to vanilla speed. |
CompensationMultiplier |
1.0 |
Extra multiplier applied on top of the inverse timescale to fine-tune player speed. |
AgentScanInterval |
1 |
Seconds between NPC scans (0.2-5). |
ExcludedAgentNameTokens |
Player |
Comma or semicolon separated hierarchy name fragments to exclude. |
ExcludedComponentTokens |
Player |
Comma or semicolon separated component type fragments to exclude. |
LogAgentDiscovery |
false |
Enables verbose logging when NPCs are tracked or removed. |
Troubleshooting
- Game stays paused - The plugin yields when another system sets
Time.timeScaleto0. Once the pause clears it restores your configured timescale automatically. If it never resumes, ensure the pause source actually unpaused or toggle the mod. - Player movement feels wrong - Confirm
CompensatePlayerMovementistrueand that your player object exposesNavMeshAgentorAnimatorcomponents. Add player-specific tokens to the exclusion lists if you prefer the player to follow the global speed instead. - NPCs are unaffected - Check the exclusion token lists and the console for discovery logs. NPCs whose names or components contain those tokens are intentionally skipped.
- Physics jitters at high speeds - Keep
SyncFixedDeltaTimeandSyncMaximumDeltaTimeenabled, especially when running above 2x speed.
Changelog
1.1.0
- Initial release with global timescale control, NPC agent scaling, animation tuning, pause awareness, and player compensation.
Credits
- Plugin author: Duckieray
- Built with BepInEx and Unity's NavMesh systems
- GitHub: https://github.com/Duckieray/TCG_GameSpeedController