You are viewing a potentially older version of this package. View all versions.
Pendulum-Valheim_Moments-0.8.1 icon

Valheim Moments

Capture deaths, boss kills and great loot as animated WebP clips. Discord delivery controlled by the host, with optional Epic Loot details. Windows x64 beta.

Date uploaded 6 hours ago
Version 0.8.1
Download link Pendulum-Valheim_Moments-0.8.1.zip
Downloads 10
Dependency string Pendulum-Valheim_Moments-0.8.1

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2333 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2333

README

Valheim Moments

Save the moments worth sharing: boss victories, rare drops, unfortunate deaths, and anything you catch with a hotkey. Valheim Moments turns recent gameplay into animated WebP clips and can send them to Discord.

Windows x64 beta. Manual capture, deaths, boss summaries and loot highlights have been tested in game. Multiplayer relay has automated coverage but still needs live co-op and dedicated-server testing. This release uses a smaller WebP-only encoder; its animation/decode tests pass, with a fresh in-game check recommended.

Features

  • F10 captures recent gameplay. F9 pauses/resumes recording.
  • Automatic player-death clips, including the recorded cause when available.
  • Boss clips with first-kill rules, kill credit, final-blow attribution and loot.
  • Optional Epic Loot rarity, modifiers, sockets and unidentified-item display.
  • Ordinary-enemy loot highlights with a configurable minimum rarity.
  • Independent boss and ordinary-loot display options, with Markdown headings and bullets.
  • Host-owned Discord channel routing and bot name. Clients relay footage to the host.
  • Local WebP files remain available when delivery fails.

Install

Install using Thunderstore Mod Manager or r2modman, then launch Modded. BepInEx is installed as a dependency. Epic Loot is optional, tested with version 0.14.2, and is not automatically installed by this package.

For multiplayer relay, install this version on the host and every recording client. The host needs the mod even if it does not record footage. Windows headless servers run relay delivery without allocating a graphics capture buffer.

If upgrading from the manually installed prototype, close Valheim and move the old BepInEx/plugins/ValheimEventClips folder out of the profile before installing through the manager. Keep its Clips folder if you want those recordings. Keep your existing config. Installing both copies can cause duplicate-plugin conflicts.

First capture

  1. Enter a world and wait at least five seconds.
  2. Press F10.
  3. Wait for encoding to finish. Find the result in this mod's Clips folder under the profile's BepInEx/plugins directory.

Defaults are 640×360, 15 FPS, five seconds before the event, and two seconds after manual/death events. Boss and ordinary-loot clips default to four seconds after. WebP animations have no audio. They are not MP4 videos.

Recording uses a bounded frame buffer (roughly 185 MiB at defaults) and a separate background encoder. Only one clip collects/encodes at a time; extra triggers are skipped. Actual performance depends on your hardware and settings.

Discord setup — host or single-player

Launch once, exit, then edit BepInEx/config/local.valheimeventclips.cfg locally:

[Discord]
Enabled = true
WebhookURL = YOUR_DISCORD_WEBHOOK_URL
Username = Valheim Moments
UploadClips = true
SaveLocalCopy = true
EnableClientRelay = true

Create the webhook in the destination Discord server's integrations settings. Treat its URL as a secret. Never share a configured file, profile export containing it, or a screenshot of the URL. No webhook is included with this download.

To use separate destinations, enable the matching host option and enter its URL:

UseGoodLootWebhook = false
GoodLootWebhookURL =
UseBossKillWebhook = false
BossKillWebhookURL =
UsePlayerDeathWebhook = false
PlayerDeathWebhookURL =

When an override is off, that event uses the default webhook. An enabled but invalid override retains the clip locally. Manual clips always use the default destination. The host's Username is used for every destination.

Joining clients need no webhook. Their local webhook and bot-name settings are ignored in multiplayer. EnableClientRelay = false on a client prevents it sending clips; on the host it disables incoming clip delivery. No host webhook credentials are sent to clients. The host adds a Recorded by line from the connected player's name. Client event captions/rarity decisions are not independently verified by the host.

Boss and loot settings

[Boss Kill] includes FirstKillOnly, FirstKillBypassesRarity, OnlyCaptureIfLootMeetsRarity, MinimumLootRarity, and PlayerNameMode (KillCredit, FinalBlow, or Both). First kill means the character's first recorded kill in Valheim's saved statistics, not its first uploaded clip.

[Loot Capture] MinimumRarity defaults to Legendary. None is useful for testing any observed drop. Bosses exclusively use boss rules and do not produce a second ordinary-loot event. Ordinary-loot highlights require Epic Loot's optional adapter; item pickups, crafting and console-spawned items do not trigger them.

Both sections have MaxLootItemsShown, ShowQuantity, ShowRarity, ShowItemModifiers, ShowItemSockets, ShowUnidentifiedStatus, and LootHeader. Highest rarity sorts first. Unidentified modifiers and sockets stay hidden. Restart after editing configuration.

Current limits

  • Relay clips are limited to 10 MiB, also subject to the host's lower upload limit.
  • Relay transfers are paced and take time before Discord upload. The host accepts one incoming transfer/upload at a time. Busy events are declined without automatic retry.
  • Client originals are always retained. Host relay temp files are removed after delivery or failure; a process crash can leave a RelayTemp file behind.
  • Co-op perspectives are separate submissions, with no encounter-wide deduplication.
  • Long ragdoll delays can put the killing blow outside an ordinary-loot clip's history.
  • Periodic damage can leave final-blow attribution unavailable. No guessed player is shown.
  • Discord may reject files according to its current limits; failed uploads retain footage.
  • Linux/macOS/Steam Deck recording are not supported by this Windows package.

Credits

Uses Imazen.WebP and libwebp. Their license and attribution files are included in the plugin's Licenses folder. Game, Unity, BepInEx, Harmony and Epic Loot binaries are not redistributed in this package. Icon created with AI-assisted image generation. This is an unofficial community mod, not affiliated with Iron Gate or Coffee Stain.

CHANGELOG

Changelog

0.11.1 - complete boss kill credit

  • Boss Kill Credit now lists all players in Valheim's credited-attacker records, instead of only the recording character. Nearby spectators are excluded.
  • Recorded by, Final Blow and personal first-kill history remain independent. Missing roster metadata is explicitly marked unavailable rather than implying solo credit.
  • Send the bounded roster alongside vanilla credit; attribution hooks also initialize on headless hosts.
  • Updated player/source documentation and multiplayer acceptance checks. Added a Future Roadmap favoring game-driven progression events and host configuration over hardcoded content lists.
  • Natural-loot testing was reported successful on 0.11.0. The new roster fix has automated coverage; final live co-op confirmation remains pending.
  • Update the host and all recording clients to 0.11.1 for complete attribution metadata.

0.11.0 - natural loot acquisitions

  • Added host-controlled natural chest and world pickup highlights, sharing loot rarity/display/routing settings.
  • Track verified generation, including Epic Loot 0.14.2 deferred chest rolls; trigger on successful acquisition with Collected by attribution.
  • Exclude player storage, gravestones, drops, crafted items, deposits, mixed stacks and unknown provenance. Consume eligibility once, including partial pickups.
  • Group quick acquisitions for Take all summaries. Vanilla ordinary/world loot can qualify with MinimumRarity=None without Epic Loot.
  • Provenance hooks also run on headless hosts; markers persist in ordinary item custom data.
  • Host and recording clients must all update to 0.11.0. New natural-loot behavior has automated coverage; live validation remains pending.

0.10.1 - practical capture minimums

  • Minimum capture dimensions are now 480 x 270; defaults remain 640 x 360.
  • Memory fitting respects that floor and reduces effective FPS when necessary.
  • Minimum frame-pool budget is 48 MiB so maximum clip durations fit at 1 FPS.

0.10.0 — host rules and bounded client settings

  • Host controls event switches, rarity/first-kill rules, timing, attribution and post formatting. Connected clients see those options as read-only in Configuration Manager.
  • Clients keep hotkeys, capture/relay opt-out, resolution/FPS/quality, memory budget, image flip, local-copy retention and performance diagnostics editable.
  • Host policies sync over the connected server's direct RPC channel. Webhook URLs and Discord identity never enter the packet; client config files retain local preferences.
  • Host and clients need 0.10.0 or compatible newer versions. Capture waits for host settings; outdated clients without the settings exchange cannot relay clips.
  • Added UI/config-file ranges, aspect-ratio limits (1:2 through 3:1), and automatic resolution reduction to fit memory limits. Defaults remain 640x360 at 15 FPS.
  • Debug timing is under Configuration Manager's Advanced filter and defaults off.
  • Automated policy and bounds checks pass; live settings UI/co-op checks remain pending.

0.9.5 — compact posts and successful-upload cleanup

  • Removed the extra blank line before automatically appended generated loot.
  • SaveLocalCopy now defaults to false: successful uploads delete the local clip. Joining clients also delete after the host confirms successful Discord delivery.
  • Existing installs keep their setting; use SaveLocalCopy=false to enable cleanup. Failed/skipped uploads and older saved files remain local. No session-wide purge.

0.9.4 — loot formatting

  • Avoid repeating rarity words already at the beginning of item names, including Magic and Legendary. Matching uses the localized rarity and whole-word boundaries.
  • Format each modifier and socket detail with two spaces followed by * -# .
  • Applies to both boss and ordinary-loot summaries; hidden unidentified details remain hidden.

0.9.3 — capture session isolation

  • Clear buffered footage and cancel a collecting clip when joining, leaving or switching sessions. Pending GPU readbacks from the old session are discarded.
  • Keep frames owned by an active encoder intact until it finishes; existing upload guards continue to prevent sending the old clip through a different session.
  • Require an active session and local player before recording or triggering a new clip.
  • Added automated tests for session changes, late readbacks and encoder ownership.

0.9.2 — periodic final-blow attribution

  • Track actual Spirit/fire/poison status-effect sources on the boss owner, without changing game damage or kill credit. A tick from one known player can now supply the final-blow name; mixed or unknown sources remain unavailable.
  • Respect fire/Spirit stacking and poison replacement instead of assuming the last direct attacker caused the periodic kill.
  • Added Boss Kill.TrackPeriodicDamage (default true, restart required).
  • Added automated status-effect attribution checks. Spirit-damage final-blow naming passed a live boss-kill test. Fire/poison and remaining automatic co-op checks are pending.

0.9.1 — recorder attribution for everyone

  • Added Recorded by: to host and solo posts for all clip types, using the recording character's name at the time of the trigger.
  • Joining-player posts retain host-supplied recorder attribution with the same formatting.
  • Confirmed live co-op F10 Discord delivery for both host and joining player, and visual playback of the WebP-only encoder's clips.

0.9.0 — consistent naming

  • Renamed source projects, namespaces, plugin DLL, encoder executable and install folder to ValheimMoments.
  • Plugin GUID/config identifier is now local.valheimmoments. Upgrading requires migrating the previous config and removing the older active plugin.
  • Added explicit development-installer migration options that preserve settings, recordings and the previous plugin outside the active profile.
  • Added the project's MIT license and public GitHub source link.

0.8.1 — first Thunderstore beta

  • Manual, death, boss and ordinary-loot animated WebP captures.
  • Optional Epic Loot details, rarity filtering and first-kill priority.
  • Markdown post formatting and independent loot display settings.
  • Host-owned Discord destinations and bot name, with bounded client clip relay.
  • New 256×256 Valheim Moments icon and mod-manager packaging.
  • Replaced the prototype's ImageMagick bundle with a smaller WebP-only encoder.
  • Multiplayer relay and the new encoder still need fresh live-game validation.