You are viewing a potentially older version of this package. View all versions.
WUYACHIYU-WhySoLaggy-1.0.1 icon

WhySoLaggy

Find which mod causes lag and who is bombing your room. FPS tracking, plugin timing, patch profiling, and real-time on-screen alerts.

Date uploaded 3 months ago
Version 1.0.1
Download link WUYACHIYU-WhySoLaggy-1.0.1.zip
Downloads 243
Dependency string WUYACHIYU-WhySoLaggy-1.0.1

This mod requires the following mods to function

BepInEx-BepInExPack_PEAK-5.4.2403 icon
BepInEx-BepInExPack_PEAK

BepInEx pack for PEAK. Preconfigured and ready to use.

Preferred version: 5.4.2403

README

WhySoLaggy

Find out which mod is making your game lag, and who is bombing your room.

Features

Performance Profiling — Find the Lag Source

  • FPS Monitor: Tracks your frame rate in real time, flags any frame that takes too long
  • Plugin Timer: Measures how much time each installed mod takes per frame — see who's the slowest
  • Patch Analyzer: Identifies which specific modified game methods are eating up performance

Room-Bombing Detection — Find Who's Causing Trouble

  • Automatically monitors network activity in your room and detects suspicious behavior:
    • Spawning tons of objects in a short time
    • Flooding the network with RPC commands
    • Sudden explosion in the number of scene objects
  • When something suspicious is detected:
    • A red alert pops up on the top-left corner of your screen (auto-fades after 12s)
    • The log records the suspect player's name and ID number
  • Observation only — does NOT kick, block, or interfere with anyone. Just records evidence.

Log Files

After your session, open the BepInEx folder in your game directory. You'll find two files:

File What it records
BepInEx/WhySoLaggy.log Performance data: FPS, mod timing, lag causes
BepInEx/WhySoLaggy_Abuse.log Bombing evidence: suspicious events, suspect players, timeline

These are recreated every time you launch the game, so they won't grow forever.


How to Analyze the Logs

Option A: Give it to any AI (Recommended)

Copy-paste the log content into any AI assistant (ChatGPT, Claude, etc.) and ask:

"This is a performance/abuse log from my game. Please tell me:

  • Which mod is causing the most lag?
  • Were there any suspicious players?
  • What happened and when?"

The AI will give you a clear summary.

Option B: Check it yourself

  • Performance log: Look for lines with ! or !!! — the number in ms shows how slow it is
  • Abuse log: Look for lines with ⚠ ABUSE ALERT — the player name and ID are shown right after

Configuration

Adjust via in-game ModConfig or BepInEx config file:

Performance Profiling

Setting Default Description
SpikeThresholdMs 50 How many ms before a frame counts as a lag spike (16–200)
ReportIntervalSeconds 10 Seconds between performance reports (5–60)
EnablePluginProfiling true Whether to measure each mod's timing
EnablePatchProfiling true Whether to measure patched method timing
TopMethodCount 10 How many slow methods to show in reports (3–30)

Room-Bombing Detection

Setting Default Description
EnableAbuseDetection true Turn bombing detection on/off
CheckIntervalSeconds 1.0 Seconds between checks (0.5–5)
ReportIntervalSeconds 30.0 Seconds between full reports (10–120)
InstantiateRateThreshold 15 Objects spawned per second to trigger alert (5–100)
DestroyRateThreshold 20 Objects destroyed per second to trigger alert (5–100)
RpcRateThreshold 50 RPC calls per second to trigger alert (10–200)
ObjectSpikeThreshold 30 Object count increase per check to trigger alert (5–100)

Installation

  1. Install BepInExPack PEAK
  2. Place WhySoLaggy.dll into PEAK/BepInEx/plugins/

No other mods required.

Contact

  • Author: wuyachiyu
  • QQ Group: 1093172647

Notes

  • The mod waits 5 seconds after launch before starting, so other mods can finish loading first
  • Extremely low overhead — won't affect your game performance
  • Bombing detection is observation-only, perfect for collecting evidence after an incident

CHANGELOG

Changelog

[1.0.3] - 2026-04-26

⚠ Testing status — client-side only. Every 1.0.3 feature in this changelog was exercised from a non-host (client) install. A subset of the new diagnostics can only do real work when the install is on the Master Client — specifically:

  • OnRemoteRpcEvent Hashtable unpack (capturing real client-side RPC senders after Master relay)
  • Master-side Instantiate requester correlation (SuspectedRequesterActor/Name/Rpc)
  • PhotonView Ownership audit (EventCode 210/211/215)
  • Actor×Method hotspot detector

These Master-only paths compile cleanly and self-check, but have not yet been validated in an actual hosted session. Expect potential edge-case bugs there until a host-side capture is recorded. Client-side features (FPS / RPC monitor / Instantiate rate / FieldProbe etc.) are unaffected.

Quiet-by-default

  • EnablePluginProfiling / EnablePatchProfiling default changed to false — profilers are opt-in now
  • LogVerbosity default changed to Minimal — text logs only carry abuse alerts; CSV/JSONL still capture everything
  • Fix: abuse alerts now bypass the verbosity filter, so Minimal = "alerts only, but definitely alerts"
  • Fix: removed orphan continuation lines when a report header was filtered but its follow-up lines weren't

New features

  • Structured logging: whysolaggy_data.csv (58 cols) + whysolaggy_events.jsonl, auto-rotated at MaxLogFileSizeMB
  • Startup Harmony conflict scan: harmony_patches.csv + alerts when the same method is patched by multiple mods
  • Opt-in method stack tracer ([MethodTracer]): name methods, get filtered call stacks per hit
  • FieldProbe: JSON-driven reflective snapshots of any field / parameter / return value at any method
  • On-screen dashboard (opt-in): live FPS, frame time, GC KB/s, watched-RPC summary, last abuse alert
  • GC allocation rate + Photon ping are attached to FPS / periodic reports
  • InstantiateTrace: every PhotonNetwork.Instantiate captures a filtered caller stack (3 samples per prefab + 1 per 5s window, auto-forced on flood) — finally answers "which script / mod is spawning this?"
  • Watched-method library expanded from 27 to 65+ RPC names across feeding / healing / status / death / revive / grab-kick-carry / inventory / prefab spawn / end-game / ownership / tornado / campfire
  • Master-side Relay Diagnostics (beta, Master-only): RemoteRpcTrace unpacks EventCode=200 Hashtable to recover the real client sender; Instantiate rows gain SuspectedRequesterActor/Name/Rpc/AgeMs; OwnershipChange decodes EventCode 210/211/215; OwnershipGrab and ActorMethodHotspot alarms layer on top

Performance & robustness

  • PatchProfiler throttling via MinReportMs — ~70–90% lower self-overhead on busy scenes
  • IgnorePluginGuids / IgnorePatchMethods / ExtraWatchMethods config keys
  • RPC hot path moved fully to main-thread pump (ConcurrentQueue + PumpBatchSize)
  • Lower GC pressure across all periodic report paths; better exception reporting; null-safe patch hooks

Docs

  • README: new Real-world case section with redacted dual-client lantern lit-sync + warmth diagnostics, pulled straight from a live session ([LitSync] / [HuddleWarmth] / [FuelMath] / [WARMTH_LOG] / BugleRestore)
  • README: reworked How to analyse the logs into a tag-first workflow — grep/jq by tag now recommended, CSV pivot second, AI third (with "curate the slice first" recipe), plain-text reading fourth
  • README: added six copy-paste commands (3 PowerShell Select-String, 3 jq) covering abuse alerts, lit-sync, failed warmth ticks, top RPC senders, FieldProbe hits, frame spikes

Upgrade note: BepInEx only applies new defaults to missing keys. Delete com.wuyachiyu.WhySoLaggy.cfg or flip the three keys manually to pick up the quieter defaults.

[1.0.2] - 2026-04-23

  • Full RPC monitor hooks PhotonNetwork.ExecuteRpc; counts calls, senders and payload bytes
  • Feeding-chain tracing: SendFeedDataRPC → RemoveFeedDataRPC → GetFedItemRPC → Consume
  • 27 watched high-risk methods record sender / target / parsed args / payload size
  • Per-method 32-entry ring buffer so floods can't drown out rare events
  • Abuse alerts now include the current top RPC methods
  • Hot path <500ns per RPC, no allocs, no locks

[1.0.1] - 2026-04-20

  • Room-bombing detection now correctly identifies the remote suspect
  • Real-time on-screen alert banner (auto-fades after 12s), auto EN/中 based on system locale
  • Fixed wrong attribution to the local player; fixed a thread-safety crash

[1.0.0] - 2026-04-07

  • Initial release: FPS tracker, plugin / patch profilers, room-bombing detection, dual text logs