You are viewing a potentially older version of this package. View all versions.
Scorn_Dogs-LateGamePerformance-1.5.1 icon

LateGamePerformance

Reduce repeated work in long runs. Includes exception guards, optional gameplay changes, damage and performance displays, and a settings menu.

Date uploaded 3 days ago
Version 1.5.1
Download link Scorn_Dogs-LateGamePerformance-1.5.1.zip
Downloads 414
Dependency string Scorn_Dogs-LateGamePerformance-1.5.1

This mod requires the following mods to function

bbepis-BepInExPack-5.4.2121 icon
bbepis-BepInExPack

Unified BepInEx all-in-one modding pack - plugin framework, detour library

Preferred version: 5.4.2121

README

LateGamePerformance

Version 1.5.1 for Risk of Rain 2.

The mod reduces repeated calculations and adds optional gameplay changes. Each of the 18 groups has a separate switch.

Controls

Control Action
F4 Open or close the settings window.
F3 Open or close the stat window during a run.
Hold F2 Show the cursor for the stat badge. Release F2 to resume character input.
F5 Show or hide the damage meter.
F6 Show or hide the performance display.
Pause menu Select Mod settings or Stat points with the mouse or controller.

Change these shortcuts in the settings window. General settings include the menu shortcut. Key capture accepts a main key and modifiers.

The stat badge requires available points and permission to spend them. F2 controls the first local user. A pause-menu action selects that menu's local user.

Hidden windows reject pointer, Submit, and navigation input. If the game skin is unavailable, a window does not take character control.

Settings save in BepInEx/config/com.tim.LateGamePerformance.cfg. Display positions, health bar intervals, stat gains, and allocation limits update during a run.

A startup setting affects the next startup sequence. It cannot repeat a startup sequence that already ended.

Defaults

New configurations leave Sharing, CritOverstack, and StatPoints off. These groups change game balance. The other 15 groups start on.

Existing configurations retain their saved switches. An upgrade does not replace those choices.

The performance display starts hidden. Its log records continue while the display is hidden. Disable PerfReadout to stop collection.

Performance groups

Group Behavior and limit
BuffStatsFilter Avoids selected damage-over-time stat updates. RespectOtherMods retains game updates if another plugin, stat hook, or callback exists.
NavPathBudget Limits path calculations and rotates the visit order. Completed tasks remain available after the budget expires.
TargetSearchGc Reuses candidate buffers and reduces closures. Each result still has an independent array.
DamageNumberBatch Combines particle writes for each damage manager. Numbers can appear one frame later.
RaycastThrottle Limits obstruction checks. Expiry, large movement, and direction changes require a new check.
HealthBarThrottle Sets the update interval for active and inactive bars. Larger values delay visual feedback. Disable restores values that the feature still owns.
TeamItemCountCache Retains FocusConvergence and TPHealingNova counts briefly. Relevant changes clear the cache. Other Harmony owners disable this cache.
ModelCameraPass Limits buff overlay scans. The game retains its camera, fade, and obstruction methods. Fade and flash changes still update material state.
PerfReadout Shows local frame measurements and entity counts. Averages use the last 512 collected frames. Peak buckets cover approximately nine to ten seconds.
FixedTimeCatchup Limits catch-up during a solo stage. It does not clamp multiplayer, dedicated servers, or stage transitions. Heavy load can slow simulation and game time.

Performance measurements include active collection and transitions. Run changes and feature restarts clear prior measurements.

The mod does not establish a performance improvement through frame rate alone. Simulation progress also matters for FixedTimeCatchup.

Other groups

Group Behavior
SkipIntro Waits for game initialization, then skips the intro. A slow startup logs a warning after 120 seconds and continues to wait.
BugFixes Adds independent exception guards. The log reports guard application failures and limited recovery counts.
CritOverstack Converts crit chance above 100 percent into extra crit damage.
Sharing Shares permitted pickups and gold. Equipment sharing remains optional.
EmptyChests Removes opened chests, used barrels, and spent multishops after a delay. Adaptive chests and drone vendors remain outside its scope.
AutoSprint Starts sprint during movement. Hold the sprint key to walk. Incompatible skill states suppress sprint until they return to their main state.
DpsMeter Shows damage, contribution, average DPS, and recent DPS for each player. Minion damage can count toward its owner.
StatPoints Grants points from team levels. The host can allocate health, regeneration, damage, attack speed, crit chance, armor, and move speed.

Sharing rules

The host controls Sharing. Clients need no mod for inventory and money grants.

Tier filters apply to shared copies. Custom tiers remain private. Shared items grant inventory only. The original player receives the pickup effects.

Original Void Fields, Simulacrum, and Scavenger reward counts remain intact. The legacy ScaleSharedLoot setting has no effect.

Permitted rewards can therefore produce extra shared copies. This policy preserves private rewards, excluded tiers, dead-player rules, and different reward choices.

Equipment sharing uses the active slot. Replaced equipment drops remain private and cannot trigger another shared replacement.

If replacement drops are enabled and a recipient has no living body, that recipient keeps its existing equipment.

No replacement drop means no replacement.

Gold uses the game's GiveMoney method and retains collection callbacks. Positive fractional grants round up.

MoneyShareScalar scales team payments and grants to other players. An individual pickup leaves the original player's payment unchanged.

A scalar of one divided by the player count does not reproduce every base-game payment rule.

Stat point rules

Only a local user on the host can spend or refund points. Clients can receive synchronized allocations and bonuses.

Every remote peer must confirm compatible stat support. If any peer lacks that support, bonuses pause and allocations remain.

Enable StatPoints on each peer to use it in multiplayer. Sharing remains compatible with a client without this mod.

A health spend does not heal. Health and shields retain their absolute current amounts, subject to the new maximum.

Lower budgets and caps remove excess allocations in the displayed stat order. Changed gains recalculate existing bodies.

Disable removes bonuses immediately. Re-enable can reuse valid allocations within the same run. Points do not persist after the run.

Damage measurements

The collection period starts at stage entry or meter enable. A filter change starts a new period.

Average DPS uses elapsed game time for that period. Recent DPS uses twelve half-second buckets.

A compatible host sends periodic totals to modded clients. Matching filters permit history recovery after a late join.

If the host lacks support, uses different filters, or stops snapshots, the client uses locally observed damage. Earlier damage then remains unavailable.

The display does not promise exact simultaneous values between machines. Snapshot transport and local event timing can produce brief differences.

Requirements and installation

Install BepInExPack for Risk of Rain 2, version 5.4.2121. The manifest declares this dependency.

For a mod manager, import the release ZIP as a local mod.

For manual installation, copy LateGamePerformance.dll to BepInEx/plugins/LateGamePerformance/.

If the loader reports a missing assembly, verify or reinstall the declared BepInExPack. Do not replace core libraries with arbitrary versions.

Compatibility

These replacements can bypass another mod's changes inside the original method:

Method Group
BullseyeSearch.RefreshCandidates TargetSearchGc
BullseyeSearch.GetResults TargetSearchGc
DamageNumberManager.SpawnDamageNumber DamageNumberBatch
NodeGraphNavigationSystem.UpdateAgents NavPathBudget

NavPathBudget retains calls to UpdateAgent and ComputePath. TargetSearchGc retains CheckVisible and CheckLoS calls.

ModelCameraPass retains the game camera methods and their hooks. Its overlay interval can delay a buff overlay.

Use one pickup-sharing mod at a time. Multiple sharing mods can grant extra copies.

Keep RespectOtherMods on unless you verify every relevant stat hook.

Removal

Exit the game before removal. Remove BepInEx/plugins/LateGamePerformance/.

Remove BepInEx/config/com.tim.LateGamePerformance.cfg only if you want to discard the settings.

SkipIntro writes intro_skip and splash_skip as off during archive saves. Partial application also clears its flags.

Game tests for startup, multiplayer, layouts, and release removal remain necessary. See VALIDATION.md in the source folder.

Build evidence

The reference environment uses Steam app 632360, game build 21587608, and Unity 2021.3.33f1.

Compilation and offline checks do not establish full game compatibility. This revision still needs the runtime checks in VALIDATION.md.

CHANGELOG

Changelog

1.5.1

  • Health point spends and refunds no longer heal. Stat changes use network setters and remove disabled bonuses immediately.
  • Compatible peers receive stat allocations and damage history. Unsupported stat peers pause bonuses.
  • Equipment sharing uses the original pickup. Replacement equipment remains private. Original reward counts remain intact.
  • Gold grants retain collection callbacks and round positive fractional payments up.
  • Automatic sprint waits for incompatible skill states to end.
  • Navigation rotates agent visits and retains completion checks after budget exhaustion.
  • Camera updates retain game fade logic. Buff intervals do not delay fade and flash material changes.
  • Health bar settings update existing bars and restore previous delays on disable.
  • Hidden controls stop interaction. Windows follow their local owner and require a usable skin.
  • General settings expose shortcuts and reset controls. Pause-menu actions support controller access. Hold F2 for the stat badge cursor.
  • Display positions, key hints, and settings rows update during play. Numeric displays use limited update rates.
  • Performance history resets across runs and feature restarts. Logs include simulation progress and timing scope.
  • Timing and item caches use ownership and compatibility checks. The catch-up clamp applies only to solo stages.
  • Feature startup failures invoke cleanup. Individual interface failures do not stop unrelated features.
  • New configurations leave the three groups that change balance off. Existing configurations retain their saved choices.
  • Add portable build and release scripts, seventeen regression checks, correction records, and a game validation matrix.
  • The local package remains a release candidate. Game validation and performance comparisons remain pending.

1.5.0

  • The menus are rebuilt on the game's own interface. They now use the game's panel, font, and colors. Those come from the skin asset the game uses for its own screens. They also scale with the screen by themselves. The old fixed canvas is gone, and the pages stay the right size at any resolution.
  • Every page moved across: the settings page, the damage meter, the performance readout, and the stat point badge.
  • Stat points keep their own window, rebuilt on the game's interface. You spend points as you play, so they are not a setting. They do not sit inside the settings page. The badge and F3 open the window. The badge hides while the window is up.
  • The performance readout starts closed. Press F6 to show it. The log line still runs either way, so a long run leaves its record.
  • Settings show as proper controls: switches, sliders with a value, and a key binder that waits for a key press.
  • Money sharing has a scale. At 1 every player receives the full amount of every payment. That multiplies the group's buying power by the player count. Set it to 1 divided by your player count to match the split the base game uses.
  • Sharing is off by default now. It changes the balance of a run for every player in the game, so the host turns it on.
  • Fixed: the game saved intro_skip and splash_skip as on. Both carry the archive flag. The value went into the game's own config file. It stayed there after the mod was removed. A vanilla start with those switches on lands on the profile screen and loses character materials. The mod now writes them back to off before every save. The file always holds the vanilla value, and the game in play keeps the skip.
  • Only the host can spend stat points. Every machine kept its own count, and none of them reached the machine that runs the game. So a player who joined paid a point and got nothing. That player now sees the window, the level, and the points earned. The buttons stay off, and the reason shows on screen. The badge stays hidden there.
  • Fixed: a closed page still caught mouse clicks. A hidden canvas still answers the pointer. So the settings page and the stat point window kept taking clicks after they closed.

1.4.0

  • New: a damage meter. A table on screen shows the damage each player did on the stage you are on. It also gives the share of the total. Two more columns show damage per second: one over the stage, one over the last six seconds. A bar behind each row runs the full width for the player at the top. Everybody else gets a part of it. Minion damage counts toward the player who owns the minion. Press F5 to hide the table.
  • New: a performance readout. Frame time, frames per second, and the worst frame of the last ten seconds. Also the worst frame of the run, live character counts, and garbage collection. It writes a line to the log every thirty seconds as well, so a long run leaves a record. Press F6 to hide the panel.
  • New: cheaper character drawing. The camera walked over every character twice per frame, and measured hurtbox distances even for characters that draw nothing. Now it walks once and skips the measurement for anything off screen. The overlay scan, which reads about twenty-five buffs per character, runs on a frame stride instead of every frame. The hit flash stays exact.
  • Sharing: Void Fields, Simulacrum waves, and Scavenger bags no longer multiply. The base game drops one reward for each player, because players compete for them. So with sharing on, a group of four received four times what it should.
  • Sharing: equipment can now be shared as well. Off by default. The equipment it replaces drops on the floor next to its owner.
  • Sharing: a switch for printer, cauldron, and scrapper output. Off by default, because one player paid for it.

1.3.1

  • Fixed a boot failure caused by the intro skip. The game's own intro_skip switch changes to the title scene before startup is complete. That throw stopped the startup routine, which left the player on the profile creation screen and every character without materials. The skip now waits for the load to finish.
  • The logo screen is cut by default. It is safe now, and it no longer holds the boot after the load is done.

1.3.0

  • Replaced skill mastery with character stat points. Earn a point every few levels and spend it on health, regeneration, damage, attack speed, crit, armor, or move speed. Points can be taken back.
  • A badge shows on screen while points are waiting. Click it, or press F3, for a small window to spend them.
  • The sprint key reverses: you sprint by default and hold the key to walk.
  • All gold is shared now, including the kill gold the game used to split between players. This matches full item sharing.
  • The intro skip uses the game's own skip switches, so the ship cutscene no longer plays. The engine logo is cut short as well. The game's logo screen stays, because it covers save loading, and cutting it drops you on the profile creation screen. There is a switch for anyone who wants it anyway.
  • Settings live in the mod's own menu on F4. The Risk of Options dependency is gone.
  • The menu lists gameplay features only. Fixes and performance stay on.
  • Menus scale with the screen, so they stay readable above 1080p.

1.2.0

  • New: a settings menu. Press F4 in game. Install Risk of Options and the settings also appear in the game options screen.
  • Features switch on and off while the game runs. No restart.
  • Skill mastery levels now also raise that skill's damage and give armor.
  • Money sharing is on by default.

1.1.0

  • New: SkipIntro. The game boots straight to the title screen.
  • New: CritOverstack. Crit chance above 100 percent converts into extra crit damage.
  • New: BugFixes. Guards for seven vanilla exception sources.
  • New: Sharing. Item sharing with tier filters, optional money sharing. Host-side only.
  • New: EmptyChests. Spent chests, barrels, and multishops despawn.
  • New: AutoSprint. Sprint holds by itself while moving.
  • New: SkillMastery. Skill slots level up through use, for all survivors including modded ones.
  • Target searches now skip hurtboxes without a health component.

1.0.0

  • First release.
  • Eight patch groups: BuffStatsFilter, NavPathBudget, TargetSearchGc, DamageNumberBatch, RaycastThrottle, HealthBarThrottle, TeamItemCountCache, FixedTimeCatchup.