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

StateKeeper

PEAK远征记录与复盘:体力状态、队伍距离、物品证据、历史收藏和同玩家跨局对比,支持中英文。

Date uploaded 3 weeks ago
Version 0.1.0
Download link WUYACHIYU-StateKeeper-0.1.0.zip
Downloads 91
Dependency string WUYACHIYU-StateKeeper-0.1.0

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

StateKeeper 0.1.0

153851 153842 153848 153843 153846 153845 153847

STATE KEEPER records your PEAK expeditions so you can review player states, item observations, and supporting evidence from the pause menu.

This is the first public test release. The interface and statistics are still being improved. Analysis reflects facts and inferences available to the recording client, not an all-seeing view or a teammate rating system.

Features

  • Records regular and extra stamina, afflictions, petrification, jumps, positions, teammate distances, and inventory changes.
  • Six review pages: Overview, Event Timeline, Player Report, Team Relations, Items, and Data Quality.
  • Select an event to inspect nearby stamina, status, distance, and item evidence. Missing or uncertain data is explicitly marked.
  • Search items by Chinese or English name, category, or effect keywords to review consumption evidence, possible assistance, and alternative explanations.
  • Keeps the 10 most recent runs by default, with favorites, unfavoriting, deletion, and custom run names. Favorites do not count toward the recent-run limit.
  • Compare the same player across 2-4 runs. Only reliable Steam identities are matched; different players sharing a nickname are not merged.
  • English and Chinese text follows the game language. Recordings and analysis stay local, with no automatic uploads or additional network RPCs.

Installation and Usage

  1. Install through r2modman or Thunderstore Mod Manager. Requires BepInExPack PEAK 5.4.2403.
  2. For manual installation, place StateKeeper.dll in the game's or profile's BepInEx/plugins folder, then start the game. Do not keep multiple StateKeeper DLLs installed. Remove any legacy development build named PeakRunAnalytics.dll from the plugins folder first.
  3. Recording starts automatically in-game. Press ESC and find STATE KEEPER below the leave-game button, separated by one empty button space.
  4. Open a recorded run to view its report. The first analysis reads data in the background and shows progress, with cancellation and retry available.
  5. An active run cannot be favorited, renamed, or deleted. Manage it after it ends or is aborted. Custom names support up to 40 characters; leave the name blank to restore the default.

There is no F8 favorite shortcut. Use the panel to favorite, rename, or delete runs.

Configuration

The first launch creates BepInEx/config/com.local.statekeeper.cfg.

Setting Default Description
General.Enabled true Enables collection. When disabled, sampling and item/jump event recording stop, but history remains available. An already-started run is still saved and finalized normally. Re-enabling marks an observation interruption.
Advanced.DebugLogging false Logs diagnostic timings for collection, inventory scans, and slower panel rebuilds. Enable for troubleshooting; ordinary error logging is unaffected.
Advanced.StaminaEventThreshold 0.01 Minimum change recorded as an immediate stamina event, from 0 to 1. Does not change the stamina sampling rate of 5 samples per second.

No ModConfig or other menu plugin is required. Restart the game after editing the configuration to apply the new settings.

Data and Privacy

Default Windows data directory: %USERPROFILE%/AppData/LocalLow/LandCrab/PEAK/StateKeeper.

  • Runs contains recent recordings, Favorites contains favorited recordings, and Analysis contains regenerable analysis caches.
  • Raw data is compressed into chunks covering approximately 30 seconds. The active run is saved approximately every 5 seconds. A complete run includes all its chunks; do not move just one JSON file.
  • Deleting a run removes its recordings and analysis cache and cannot be undone in the panel. Favorite or back up runs you want to keep.
  • Recordings contain player nicknames, Steam identifiers, detailed timestamps, positions, and item information. Do not publish raw files without participants' consent.
  • Only current schema 3 recordings are shown. Legacy schema 2 recordings are not migrated, displayed, or automatically deleted. Outdated analysis caches are rebuilt as needed; analysis does not modify the original recordings.

Known Limitations

  • Built against local PEAK 2.4.b assemblies. Other game versions and mod combinations may affect observations.
  • Confirmed deaths, raw observations, duplicates, and unconfirmed observations are shown separately. Instant death need not include a separate unconscious episode; raw event counts are not death counts.
  • Healing, feeding teammates, pull-back actions, and revivals have different observation coverage. An unknown rescuer is not assigned to the host or last item holder. There is no combined rescue-count ranking.
  • Teammate desynchronization, teleportation, death holding positions, and historical clock regressions can interrupt evidence chains. Attribution is not forced across these gaps. Progress follows the recorded runtime directory; the number of progress points is not the number of mountains.
  • Charts use aggregated data, and range statistics may be approximate. This is not a lossless frame-by-frame replay. Item-instance text summaries are limited to 100 lines; the observation log is paginated separately.
  • In-game validation is not yet complete for all resolutions, Chinese input methods, controllers, or multiplayer performance. Passing offline tests does not prove that every layout is correct or that there are no frame stalls.
  • There is no automatic upload, web synchronization, or anonymized export. Uninstalling the plugin does not automatically delete local recordings.

Original Idea

The inspiration for this mod came from an earlier project, PlayersInfo. A few days ago, I fixed a bug that caused item‑grid information to be printed in the logs unexpectedly. The latest version should have resolved it (now it only prints when logging is explicitly enabled in the config). I've been thinking: should I take this bug and turn it into a mod that stores data for each round—such as health, inventories, and distances between teammates and myself—and then analyse that behaviour through algorithms? I think that could be really interesting.

CHANGELOG

StateKeeper 0.1.0

First Public Test Release

  • Fixed truncated Unfavorite and Rename labels in the English history list by widening the action area and preserving text padding.
  • Fixed cloned buttons inheriting the game's Resume callback and the rename dialog rendering behind the pause menu. The input receives focus when opened, and controls are restored when leaving the page.
  • Added pause-menu access to Overview, Event Timeline, Player Report, Team Relations, Items, and Data Quality.
  • Added stamina and affliction bars, item search, evidence around events, danger windows, and same-player comparisons across runs.
  • Added favorites, unfavoriting, deletion, and custom run names of up to 40 characters. Removed the F8 shortcut.
  • Death observations are deduplicated and checked against player states instead of being counted directly. Invalid distances caused by drift around death holding positions are excluded.
  • Preserved inventory observations across clock regressions. Stages follow actual progress points, with the final stage extending to the end of the recording.
  • New recordings use a local monotonic clock. Background analysis cache updates do not modify original recordings.
  • Removed legacy favorite entry points, unused chart APIs, and unused parameters before release. Fixed events potentially being recorded while collection was disabled. Performance diagnostics are off by default.
  • Passed 64 automated tests, including read-only replay of seven existing recordings. In-game UI, input method/controller, and multiplayer performance validation remain incomplete; see the README.

Development Foundations

  • Reworked run storage into bounded 30-second GZip JSON chunks.

  • Moved checkpoint serialization and compression off the Unity main thread.

  • Replaced repeated player IDs, status names, and distance objects with compact indexed arrays.

  • Removed unchanged-inventory allocations by comparing value-type fingerprints first.

  • Added active-chunk recovery and chunk-aware favorite/retention handling.

  • Added storage tests for 8-player chunks, recovery, favorites, and recent-run cleanup.

  • Added first-phase PEAK run telemetry collection.

  • Added RunId-based active-run recovery and formal end detection.

  • Added 5Hz stamina, state, position, and pairwise distance samples.

  • Added compact inventory snapshots and item lifecycle/resource events.

  • Added atomic JSON persistence, corruption quarantine, favorites, and recent-run retention.