naccel_inc-RoundsPatchFpsFix icon

RoundsPatchFpsFix

Combat optimizer & modpack safety engine for ROUNDS! Fixes mouse aim & bot bugs, eliminates audio/GC lag, and auto-patches critical crashes in popular mods (RWF, WWC, UnboundLib, Cards+, ModdingUtils).

CHANGELOG

Changelog

All notable changes to RoundsPatchFpsFix will be documented in this file.

[1.0.7] - 2026-10-19

Fixed & Improved

  • 100% Native Mouse Cursor Aiming (BotSafetyFixPatch & GeneralInput):
    • Fixed root cause where presence of default PlayerAPI component on human player prefabs caused players to be falsely classified as AI bots and assigned dummy controller devices (InputDevice.Null).
    • Corrected IsAI() bot detection to strictly check enabled AI state and PlayerAIBase.
    • Enforced Device = null for keyboard/mouse players, enabling vanilla GeneralInput.Update and Aim.Update to natively compute 1:1 mouse tracking with native projectile arc compensation across Sandbox, Lobby, Online, and Bot matches.
  • Bullet Collision & Damage Fix (RayCastTrailNonAllocPatch & ModSafetyFixesPatch):
    • Restored 100% vanilla RayCastTrail.Update() physics pipeline, eliminating the bug where bullets passed through players and bots without dealing damage.
    • Preserved full mod compatibility with projectile hooks (MMHOOK, Cards+, GunProjectileSizePatch, DemonicPact).
    • Removed problematic ClientSideBlock.ProjectileHitPatch guard that caused projectile hit cancellation during map transitions.
  • Community Mod Safety & Crash Prevention Overhaul:
    • Eliminated HarmonyX recursive reflection traps during assembly loading.
    • Added re-entrancy guards and isolated exception handling for all auxiliary mod patches (RWF, Will's Wacky Cards, UnboundLib, Cards Plus, ModdingUtils, Demonic Pact, Deck Customization).
    • Fixed PlayerPatchFullReset null player/data NRE in ModdingUtils and Demonic Pact during match resets.
    • Ensured reliable late-binding patch application in plugin Start() lifecycle without startup hangs.

[1.0.6] - 2026-10-19

Fixed

  • Clean Thunderstore Package: Removed auxiliary assemblies from archive to comply with Thunderstore automated validator rules. Auxiliary dependencies are resolved dynamically in-memory.
  • Auxiliary Mod Safety Guards: Added safety patches for RoundsToggleEffectsMod and BetterChat.EvaluateCanSeeGroup to prevent non-matching sequence and null reference exceptions.

[1.0.5] - 2026-10-18

Added & Optimized (Engine Bottleneck Elimination Overhaul)

  • Sonigon Audio Voice Limiter (AudioConcurrencyLimiterPatch):
    • Limits identical Sonigon SoundEvent triggers during intense bullet storms and explosions to max 2 plays per 40ms window.
    • Prevents audio DSP buffer overruns, sound distortion/crackling, and cuts audio CPU load by ~80% during heavy firefights.
  • RayCastTrail Zero-Allocation Physics (RayCastTrailNonAllocPatch):
    • Replaced vanilla Physics2D.RaycastAll, CircleCastAll, Concat, and ToArray in RayCastTrail.Update() with static non-alloc buffers (RaycastNonAlloc and CircleCastNonAlloc).
    • Eliminates over 4,800 heap allocations per second during bullet hell exchanges, dramatically reducing Mono GC heap pressure.
  • Bullet Trail Vertex & Lifetime Clamp (TrailRendererOptimizationPatch):
    • Clamps TrailRenderer.time on fast projectiles to a reasonable maximum of 0.20s and enforces a minimum vertex distance of 0.1m.
    • Reduces dynamic mesh vertex generation and draw call CPU costs by up to 70% with zero loss in visual trail clarity.
  • Arena Debris & Decal Purge (DecalCleanupPatch):
    • Automatically purges lingering wall hit debris, broken box pieces, and expired impact objects between rounds and points.
    • Ensures FPS stays rock-solid in round 5 just as in round 1 without progressive match slowdown.
  • Sandbox & Lobby Input Control (BotSafetyFixPatch):
    • Fixed Sandbox Space jumping: initial Space press spawns the player once, while subsequent presses jump normally without spawning duplicate players.
    • Fixed Lobby Space ReadyUp: pressing Space cleanly toggles ReadyUp on the keyboard player without spawning extra players or double-toggling.
    • Fixed Bot R ReadyUp: pressing R cleanly readies up all bot players without double-toggle cancellation.
    • Debounced B bot spawning (0.4s cooldown) to prevent accidental multiple bot spawns on single keypress.
    • Fixed UnboundLib AssignColorID negative index crash (IndexOutOfRangeException).
  • Expanded In-Game MODS Configuration:
    • Added discrete toggles for Audio Voice Limiter, RayCast Non-Alloc, Bullet Trail Clamping, and Debris Purge inside the single clean FpsFix menu.
    • Set QualitySettings.vSyncCount = 0 to permanently eliminate sudden 30 FPS half-refresh rate drops.
  • Mod Safety & Auto-Stub Engine (ModSafetyFixesPatch & AssemblyResolve):
    • Automatically resolves missing external assemblies like LocalZoom.dll from embedded memory resources to prevent Mono JIT crashes in dependent mods (e.g. Will's Wacky Cards).
    • Protected WWC.MonoBehaviours.PlasmaWeapon_Mono.UpdateChargeBar() from throwing infinite NullReferenceException loops when picking Plasma Shotgun.
    • Protected ClientSideBlock.ProjectileHitPatch.HitPrefix against null map transitions.

[1.0.4] - 2026-10-18

Fixed & Improved (Combat FPS & Bot Stability Overhaul)

  • Eliminated 30 FPS Degradation Bug:
    • Restored Box2D solver iterations to stable 8 velocity / 3 position and kept autoSyncTransforms active.
    • Enabled smooth 60 FPS pacing to prevent shared 15W TDP Intel iGPU packages from thermal power-throttling the CPU down to 1.4 GHz.
  • Combat Garbage Collection Pausing:
    • Automatically freezes Mono Garbage Collection (GarbageCollector.GCMode = Disabled) during active combat rounds to eliminate mid-battle micro-stutters.
  • Combat Log Spam Suppression:
    • Silenced bullet debug logging during active firefights to eliminate synchronous disk I/O stalls in BepInEx and Proton/Wine.
  • Bot Spawn Safeguard & Debounce:
    • Fixed rapid bot spawning bursts when pressing B by adding debouncing.
    • Sanitized missing PlayerActions and InputDevice.Null to permanently resolve NullReferenceException crashes in RoundsWithFriends and PlayerAssigner.

[1.0.3] - 2026-10-18

Fixed

  • In-Game MODS tab registration.

[1.0.2] - 2026-10-18

Fixed

  • Physics autoSyncTransforms stability fix and zero OnGUI overhead.

[1.0.1] - 2026-10-18

Added

  • Initial in-game configuration menu support.

[1.0.0] - 2026-10-18

Added

  • Initial release of high-FPS combat pipeline for ROUNDS.