Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
SelfieStick
The photography engine behind the Valheim era archives: unattended 4K capture, sub-centimetre camera placement, weather control, and proof receipts.
| Date uploaded | a week ago |
| Version | 0.2.5 |
| Download link | djcdevelopment-SelfieStick-0.2.5.zip |
| Downloads | 11 |
| Dependency string | djcdevelopment-SelfieStick-0.2.5 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured and includes unstripped Unity DLLs.
Preferred version: 5.4.2202README
SelfieStick
The automated 4K photographic camera engine for Valheim: sub-centimetre pose accuracy, lighting and weather control, and cryptographic proof receipts for world archives.
📑 Table of Contents
- 🎯 The Origin & Why This Mod Exists
- 🏗️ Visual System Architecture (Archify)
- ⚡ Core Features
- 🎮 Hotkey & CLI Quick Reference
- ⚙️ Configuration & Intake Reference
- 💻 In-Game Console Commands (
F5) - 🔬 Hardware Verification (OMEN Rig)
- 📋 Changelog
- 📦 Installation Guide
- 🛠️ Building from Source
- 📄 License
🎯 The Origin & Why This Mod Exists
Valheim community servers generate massive worlds holding millions of objects across multiple years. Recording and preserving these architectural achievements at photographic fidelity requires positioning cameras with sub-centimetre precision, locking uniform sun angles and weather states, waiting for terrain LOD and physics to settle, and cryptographically proving the exact coordinates of every frame.
SelfieStick (powered by the underlying CameraProof.dll plugin engine) is the automated capture and telemetry tool developed to photograph the Valheim Era Archives.
🌐 Live Public Showcase Gallery
See the live results of this photography engine in action:
- Valheim Era Archive Public Gallery: Thousands of 4K photographs with clickable 3D scene camera links, pitch/yaw telemetry, and exact lens receipts.
- Creator & Builder Stats: Spatial build clustering, contributor kinship, and comprehensive builder directory attribution.
📖 The Photography Essays (Background & Design)
Read the technical and artistic history behind the engine in the 3-part essay series:
- Part 1: Photographing a world nobody had time to look at — Automating cameras across multi-million-object saves.
- Part 2: Standing where the builders stood — Reverse-engineering vantage points, player paths, and architectural sightlines.
- Part 3: The light they built for — Controlling weather, sun azimuth, and lighting sweeps to capture builds as their creators saw them.
🏗️ Visual System Architecture (Archify)
Archify verified showcase diagram illustrating the unattended boot, camera rig mechanics, weather synchronization, and cryptographic receipt pipeline:
👉 Open Live Interactive Archify Diagram (Dark/Light themes, guided view inspection, and node reachability)
flowchart LR
subgraph Intake ["Intake & Live Control"]
ShotPlan["Shot Plan Intake<br/>shotplan.tsv • orbit-request.json"]
Console["In-Game Console CLI<br/>camproof_* • F8 Shutter"]
FeedDir["Feed Watcher<br/>Continuous Multi-Batch Director"]
end
subgraph SelfieStick ["SelfieStick Engine (CameraProof.dll)"]
BootGuard["Session Boot Guard<br/>Intro Bypass • Cloth Crash Shield"]
RigEngine["Camera Rig Engine<br/>Exact (x,y,z) • Yaw/Pitch • FOV"]
SettleEng["Stabilization Engine<br/>Chunk Settle • Physics Equilibrium"]
Lighting["Lighting & Weather<br/>EnvMan • Sun Angle • Flash Hold"]
Shutter["4K Shutter & Proof<br/>ScreenCapture • Angle Telemetry"]
Ledger["Proof Ledger<br/>shotplan-receipts.jsonl (SHA-256)"]
end
subgraph Valheim ["Valheim Engine Runtime"]
GameCam["GameCamera Viewport<br/>Active Unity Matrix"]
RenderCore["Valheim Render Core<br/>High-Res Buffer Export"]
WorldEngine["World & ZDOMan<br/>Terrain • 7M Prefabs"]
end
ShotPlan -->|Auto-Boot| BootGuard
BootGuard -->|Arms Rig| RigEngine
BootGuard -->|Settle Loop| SettleEng
Console -->|Manual Aim & TP| RigEngine
RigEngine -->|Pose Telemetry| Shutter
SettleEng -->|Stabilize| GameCam
Shutter -->|4K Frame| RenderCore
FeedDir -.->|Batch Plan| Lighting
Lighting -->|Locks Sun & Weather| Ledger
Ledger -->|Audit State| WorldEngine
Shutter -->|SHA-256 Receipts| Ledger
⚡ Core Features
1. Unattended Headless Photography
Point the runner at a world save and character. SelfieStick hooks FejdStartup, loads the specified world and character without human intervention, places the camera, waits for world settle, captures the frame, and closes cleanly upon completion.
2. Sub-Centimetre Camera Rig & Optics
Positions the lens at precise spatial coordinates (x, y, z) with explicit yaw (clockwise from +Z), pitch (positive downwards), field-of-view, and an automatic 1.7m player eye-height offset. Completely hides the character mesh during the exposure (_hidePlayerForScreenshots) so portraits and architecture remain unobstructed.
3. Atmosphere, Sun Angle & Flash Sweeps
- Weather Enforcement: Locks environment states (
Clear,Misty,Rain,ThunderStorm, etc.) viaEnvManto guarantee identical lighting. - Sun Angle: Sets exact time-of-day fractions (
0.0to1.0, e.g.0.64for afternoon sun). - Light & Flash Sweeps: Automatically illuminates surrounding light prefabs within an 80m radius and holds simulated lightning strikes (
FlashHoldSeconds = 1.2s) to properly expose subterranean or shadowed builds.
4. Stabilization & Physics Settling Engine
Never shoots prematurely. Before releasing the shutter, SelfieStick holds the camera in place (_holdAt) and waits for terrain chunk generation, vegetation placement, dynamic lighting, and rigidbodies to reach equilibrium.
5. Valheim 1.0 Headless Shields
- Cinematic Bypass: Skips Valheim 1.0's mandatory startup cinematic.
- Cloth Crash Guard: Suppresses MagicaCloth physics evaluation during initial spawn, eliminating the known Linux/Wine/Proton driver crash.
- Character Save Isolation: Automatically plays cloned characters (
<name>-kit) to eliminate the risk of Steam Cloud overwriting your primary Viking saves.
6. Continuous Feed Mode (Hot Loop)
Loading a multi-gigabyte world with 7+ million objects takes several minutes. SelfieStick's Feed Mode (0.2.3+) keeps the world resident in memory and continuously polls a designated feed directory. Dropping new shot plans into the folder executes them immediately without rebooting the game.
7. Cryptographic Proof Receipts
Every frame output is accompanied by an immutable cryptographic receipt in shotplan-receipts.jsonl and receipt.json:
- Client build number (e.g.
25253764). - SHA-256 hashes of all active plugins and output images.
- Exact lens coordinates, aim point, yaw, pitch, weather environment, and settling clearance.
8. Interactive Console CLI Suite
Full in-game console commands under the camproof_* namespace for live scene composing, teleportation, lighting dumps, and manual captures.
🎮 Hotkey & CLI Quick Reference
| Command / Key | Action | Description |
|---|---|---|
camproof_status |
Camera Telemetry | Dumps active camera position, yaw, pitch, and settle status. |
camproof_tp <x> <y> <z> |
Teleport Camera | Teleports camera to exact coordinates and writes movement receipt. |
camproof_move |
Relative Shift | Adjusts camera position incrementally along coordinates. |
camproof_env <name> |
Lock Environment | Forces weather (Clear, Rain, ThunderStorm, or noforce). |
camproof_time <0..1> |
Lock Time | Sets time of day (0.25 morning, 0.5 noon, 0.64 afternoon, off). |
camproof_hideplayer <on/off> |
Hide Player | Toggles local character mesh visibility for clean framing. |
camproof_stills <N> <sec> |
Batch Stills | Captures still series across waypoints with settle delays. |
camproof_variantstills |
Mood Sweep | Captures active frame across 4 lighting and weather presets. |
camproof_capture <label> |
Manual Shutter | Captures high-res screenshot and writes receipt file. |
camproof_sky |
Sky Dump | Dumps sun and moon vector angles per time of day to JSON. |
camproof_lights |
Light Dump | Dumps every light prefab and environment definition. |
⚙️ Configuration & Intake Reference
Shot Plan Intake (shotplan.tsv)
Tab-separated camera poses (one frame per row):
# cluster_id shot cam_x cam_y cam_z yaw pitch env time aim_x aim_y aim_z label mode fires flash
104 001 -420.5 85.2 1250.3 45.0 15.0 Clear 0.64 -400.0 80.0 1270.0 keep photo true false
Orbit Request Intake (orbit-request.json)
{
"world": "MyWorld",
"character": "MyViking-kit",
"quit_when_done": true
}
🔬 Hardware Verification (OMEN Rig)
SelfieStick was tested and validated on sovereign hardware (OMEN: Intel Core Ultra 9 285K, Dual Intel Arc Pro B70 GPUs, Steam Valheim 1.0.12 build 25253764):
==========================================================
DeepNorthTesting :: Valheim 1.0 Autonomous Launcher
==========================================================
[OK] Valheim running with PID: 41280 (<8s to interactive menu)
[PASS] 0 Errors, 0 Exceptions, 0 Patch Failures detected.
[PASS] CameraProof 0.2.5 loaded and armed cleanly.
[PASS] Shot roundtrip verification: lens, yaw, pitch equal AM4 archive to the centimetre.
Verified BepInEx Chainloader Log:
[Info : BepInEx] Loading [Camera Proof 0.2.5]
[Info :Camera Proof] Camera Proof loaded. dev.djc.camera-proof v0.2.5.
[Info :Camera Proof] Rig armed. Feed mode active.
📋 Changelog
v0.2.5 (2026-09-12)
- Local Character Isolation: Auto-boot plays local copy
<name>-kitby file stem, eliminating Steam Cloud overwrite collisions. - Valheim 1.0 Compatibility: Verified against client build
25253764(1.0.12) and25185596(1.0.7). - Public fx99 Gallery Integration: Full provenance tracking linking captures directly to public archive galleries.
v0.2.4 (2026-09-11)
- Pose & Runclips Commands: Interactive recording of the active viewpoint into TSV shot plans and multi-waypoint clip playback.
v0.2.3 (2026-09-10)
- Continuous Feed Mode: World stays resident in memory; polls and shoots incoming plans dropped into the feed directory without game restarts.
v0.2.2 (2026-09-08)
- MagicaCloth Spawn Skip: Suppresses equipment cloth physics during character spawn, resolving the Linux/Proton crash on 1.0 worlds.
v0.2.1 (2026-09-06)
- 1.0 Intro Cinematic Bypass: Bypasses the new Valheim 1.0 cinematic sequence for instant automated headless execution.
📦 Installation Guide
Via Mod Manager (Recommended)
Install using Thunderstore Mod Manager or r2modman:
- Search for
SelfieStickin the Online tab. - Click Download with dependencies (BepInExPack Valheim).
Manual Installation
- Ensure BepInExPack Valheim is installed in your game directory (
Valheim/BepInEx/coreexists). - Download
SelfieStick-0.2.5.zip. - Extract
CameraProof.dlldirectly into yourValheim/BepInEx/plugins/directory.
🛠️ Building from Source
git clone https://github.com/djcdevelopment/baseline.git
cd baseline/tools/camera-proof
dotnet build -c Release -p:ValheimDir="C:\Program Files (x86)\Steam\steamapps\common\Valheim"
The compiled binary lands at bin/Release/net472/CameraProof.dll.
📄 License
MIT License. See LICENSE for details.
