Chipmunks Shared Storage
Experimental shared-storage event ledger for Steam dedicated servers. Records client-reported container deposits and withdrawals. Install on server and clients. No dashboard included.Chipmunks Shared Storage
Experimental 0.1.0 · Steam dedicated servers · install on both server and clients
Records player-reported deposits and withdrawals from containers to a persistent server-side TSV journal. Designed for groups that treat all ordinary containers as shared storage.
This package is a telemetry plugin, not a dashboard. It does not add an in-game screen or a website. Server administrators can use the journal with their own reporting tools. CrewStats is not required and is not bundled.
AI disclosure
The plugin code, documentation and icon-generation script were generated by OpenAI Codex from the server owner's requirements. Automated checks passed, and basic deposit/withdrawal events have been observed during real gameplay. This is an experimental release; the complete multiplayer and edge-case test matrix has not been performed. The package is labelled AI Generated.
What it records
- Item count changes during standard inventory interactions, including the game's take-all and stack-all response handlers.
- Player Steam ID resolved from the sending game peer, world UID, container ID, item prefab, quantity, event ID and client-reported UTC time.
- Positive quantity means deposited; negative quantity means withdrawn.
- Player tombstones are excluded. Moving stacks inside one container without changing totals produces no event.
For shared-storage reports, net withdrawal = withdrawn − deposited. Taking 100 coins from chest A and depositing 100 into chest B gives a net withdrawal of zero, provided both operations were captured and included in the same reporting period.
Deposits are not mined or gathered resources. The plugin does not determine item origin, consumption, current player inventory, or direct trades between players.
Installation
Players using r2modman or Thunderstore Mod Manager
- Close Valheim and select your usual modded profile.
- Install Chipmunks Shared Storage and its BepInEx dependency.
- Launch the game through the manager and join a dedicated server with the same plugin version.
Every player whose actions should be recorded needs the plugin. Players without it can still join, but their operations will be missing from this journal.
Migrating from the manually distributed 0.1.0: close the game, remove only the old manually installed SharedStorageLedger.dll from BepInEx/plugins/ChipmunksSharedStorage/, then install through the manager. Keep BepInEx/config/ChipmunksSharedStorage/ and its pending-event files. There must be only one copy of the plugin DLL in the profile.
Dedicated server / manual installation
Install BepInEx for Valheim first. Place the DLL in:
BepInEx/plugins/ChipmunksSharedStorage/SharedStorageLedger.dll
Restart the dedicated server to load it. The same DLL is used on the server and clients; adding it to a running server does not activate it immediately. No additional network ports or web services are needed.
Checking that it works
The server log should contain CHIPMUNKS_LEDGER_READY, followed by CHIPMUNKS_LEDGER_CLIENT when a compatible Steam client connects. The client log should report Shared storage connected.
Take a known quantity from a chest, then put it in another chest. The server journal should contain a negative and a positive entry for that item under the same player. A handshake retry can take up to a minute. There is no bundled web page to refresh.
Journal format
Relative to the server's BepInEx directory:
config/ChipmunksSharedStorage/events.tsv
UTF-8, no header, seven tab-separated columns:
| Column | Meaning |
|---|---|
| 1 | World UID |
| 2 | Player Steam ID |
| 3 | Event ID: 32 hexadecimal characters |
| 4 | Client UTC Unix timestamp in seconds |
| 5 | Container ZDO ID |
| 6 | Item prefab name |
| 7 | Signed quantity: deposit positive, withdrawal negative |
Client pending events are saved under config/ChipmunksSharedStorage/pending-<world UID>.tsv. They are retried until the server acknowledges them. Server event IDs suppress duplicate delivery, including across restarts.
Back up the server journal separately from the world files. Do not delete it while clients may still have pending events: it also contains the deduplication history. Pending client files must stay with the correct profile/server; copies of a world share its UID.
Compatibility and limitations
- Basic deposit/withdrawal events have been observed with a Windows Steam client and a Linux dedicated server on Valheim 1.0.20. Protocol validation, delta calculations, duplicate suppression and torn-tail recovery have automated tests. The full in-game multiplayer and edge-case test matrix is not complete.
- Steam identities only. Crossplay/PlayFab and console clients are not supported by this release. Local single-player and the hosting player's actions in a listen-server game are not supported.
- Hooks cover standard inventory selections, dropping outside the inventory, and take-all/stack-all response handlers. Third-party automated storage/crafting, alternative inventory UIs and future game versions may bypass them.
- Operations before the client handshake, crashes at the moment of an action, I/O failures and queue overflow can cause missing records. Current client presence does not prove past coverage.
- Client clocks must be accurate. An event more than five minutes ahead of the server clock is not accepted.
- Pending queue: 10,000 events per world. Server journal: 64 MiB. At the journal limit, new events are not acknowledged; clients retain them until their queue limit is reached. There is no automatic journal rotation in 0.1.0. Do not reset the journal as a routine workaround; coordinate archival and pending-queue handling before further collection.
- A torn final journal row is backed up and removed on startup. A malformed complete row prevents the collector from opening the journal; preserve it for diagnosis.
- This is client-reported telemetry for cooperative groups, not an anti-cheat or tamper-proof audit log. A modified client can report false information.
Data and privacy
The plugin sends operation records to the game server you joined using the existing game connection. It does not upload records to Thunderstore, the author, or a separate analytics service. The server journal contains Steam IDs and gameplay activity; administrators should tell players about collection and avoid sharing raw journals publicly. Local pending queues also contain gameplay activity.
Русский
Код мода, документация и скрипт создания иконки сгенерированы OpenAI Codex по требованиям владельца сервера. Категория: AI Generated.
Экспериментальный журнал общего склада для выделенного Steam-сервера. Устанавливается на сервер и каждому игроку. Все обычные контейнеры считаются общими, могилы исключены.
Баланс изъятия = взял − положил: перенёс 100 монет между сундуками → 0. Это не статистика добычи и не расход предметов. Для баланса нужны обе записанные операции за один период.
Мод сохраняет журнал, но не содержит веб-панель или таблицы в игре. CrewStats не требуется. Игроки без дополнения не учитываются. При переходе с ручной установки удалите только прежнюю копию DLL, сохранив папку config/ChipmunksSharedStorage.
Проверены реальные операции одного клиента и автоматические тесты; полная игровая проверка всех способов перемещения ещё не завершена. Steam ID и действия сохраняются у администратора сервера. Поддержка crossplay, автоматизации другими модами и игры без выделенного сервера в этой версии не заявлена.
