Duckieray-GameSpeedController icon

GameSpeedController

Fine-tune global timescale while keeping NPCs and the player in sync through smart NavMesh and animation compensation.

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-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100

README

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.fixedDeltaTime and Time.maximumDeltaTime aligned for stable physics.
  • Automatically rescans NavMeshAgent NPCs 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

  1. Select TCG Card Shop Simulator in your mod manager and open the Thunderstore browser.
  2. Find Game Speed Controller and click Download (Latest).
  3. Launch the profile; the plugin loads automatically on game start.

Manual installation

  1. Download the release zip and extract it into the game directory so GameSpeedController.dll ends up at BepInEx/plugins/GameSpeedController/GameSpeedController.dll.
  2. 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.cfg to 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 CompensatePlayerMovement enabled (default) the plugin finds player NavMeshAgent and Animator components 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 NavMeshAgent speed, acceleration, and angular speed follow WalkSpeedMultiplier.
  • 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 ExcludedAgentNameTokens or ExcludedComponentTokens are 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.timeScale to 0. 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 CompensatePlayerMovement is true and that your player object exposes NavMeshAgent or Animator components. 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 SyncFixedDeltaTime and SyncMaximumDeltaTime enabled, 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