Reduced release-time logging overhead by buffering file writes instead of flushing every message synchronously from gameplay threads.
Throttled repetitive runtime diagnostics so preview, transport, and anchor logs no longer spam the log file during active sessions.
Moved outgoing webcam crop, mirror, and downscale work to a GPU blit path before JPEG encoding, reducing CPU load when capture devices force higher source resolutions such as 1280x720.
Changed remote anchor refresh to follow the tracked player lifecycle first, avoiding repeated alive/dead full-scene scans for every peer during steady-state gameplay.
Updated package version to 1.2.2.
Added this English changelog to the release archive so packaged builds include change history next to the DLL and manifest.
Updated the Thunderstore dependency to BepInEx-BepInExPack-5.4.2305.
2026-03-14
Split remote anchor resolution into separate alive/death paths so code_head_top and Player Death Head(Clone) are no longer mixed during lifecycle transitions.
Extended anchor failure diagnostics to log alive and death anchor candidates independently for the matched remote player hierarchy.
Reused the last trusted remote death anchor when Steam/Photon ID matching temporarily drops after death, preventing webcam loss above a valid Player Death Head(Clone).
Fixed an issue where webcams disappeared after entering a level due to failed Photon Owner ID matching; anchor resolution now scans all PhotonView components in the hierarchy.
Fixed an issue where webcams did not attach to dead players properly: implemented a direct child-search fallback for Player Death Head(Clone) when standard component resolution fails.
Disabled the parking coordinate threshold filter specifically for death heads, preventing them from being rejected when flung far away by physics.
Added a 5-second grace period for the Alive lifecycle state to prevent webcam flickering or disappearing during the transition between alive and dead states.
Implemented diagnostic logging (LogAnchorResolutionFailureDiagnostics) to track anchor resolution failures in real-time.
2026-03-07
Moved the custom Steam relay transport to a dedicated virtual port so it no longer collides with RepoSteamNetworking traffic when that library is installed locally.
Reworked the webcam send profile selection to use Steam lobby recipient count and a stricter bitrate budget, preventing 24 FPS / 360p from staying active in larger lobbies.
Switched video delivery from direct full-mesh fan-out to host-relay routing over Steam so larger lobbies no longer multiply every client frame across all peers.
Limited host-relay routing to larger lobbies only; 2-3 player sessions now keep direct peer fan-out because it is cheaper and lower-latency at that size.
Added a remote-anchor fallback grace mode so active webcam streams stay visible for a few seconds even if avatar anchor resolution temporarily fails during scene churn.
Expanded remote anchor discovery so webcam quads can reattach to corpse/ragdoll-style player hierarchies instead of staying frozen at the last live position.
Replaced corrupted and Cyrillic runtime strings in release-bound code with readable ASCII English text.
Rewrote package and repository README files to remove mojibake from shipped documentation.
Added .editorconfig to keep text files in UTF-8.
Added execution/check_text_encoding.py to catch mojibake before packaging.
Removed RuntimeStringVault string obfuscation and restored plain Twitch branding strings and channel URL.
Removed assembly-level obfuscation attributes and aligned assembly/plugin versioning with the Thunderstore manifest.
Removed all Twitch and author branding from runtime code and package metadata for Thunderstore compliance.
Added execution/release_sanity_check.py to validate package structure, manifest consistency, and forbidden legacy tokens before release.
Removed the obsolete Rune580-REPO_SteamNetworking_Lib dependency from Build/manifest.json.