
SelfieStick
The photography engine behind the Valheim era archives: exact lens positioning, unattended 4K capture, weather control, and proof receipts.SelfieStick
Gallery composition and portable local capture are available as a 0.3.1 candidate.
See the capture contract, proof and initial save-isolation incident
and the extracted runner instructions.
The gallery and Creator/DM now let a user compose one archived-world still, download
an exact selfiestick-capture/v1 package, and render its PNG locally from the
matching archive. The package verifies the archive and dependencies, uses disposable
world/character copies, measures the actual lens/FOV/dimensions and records restoration.
The local 0.3.1 proof covers OMEN and AM4; clean-revision release promotion and public
downloads follow the fleet plan.
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)
โก 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), and field of view. Legacy feet-based rows use their historical 1.7m eye-height offset; gallery composer captures carry an absolute lens and place the game render camera there exactly once. Completely hides the character mesh during exposure (_hidePlayerForScreenshots) so architecture remains 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: The exact gallery runner requires unique local character/world copies and checks the client's actual save discovery and Steam character mirrors before and after. Legacy kit/feed workflows have their own lifecycle; use the verified gallery runner for composer downloads. An initial 0.3.0 test saved a capture-only cloud profile after
-savedirwas ignored; the incident and correction remain documented.
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.7 (2026-09-15)
- Interactive Diagram Live on GitHub Pages: Linked directly to live interactive Archify canvas hosted at
https://djcdevelopment.github.io/SelfieStick/. - Absolute CDN Image Embedding: Switched diagram preview image to GitHub Pages CDN for instant, error-free rendering on Thunderstore.
- Removed Plaintext Code Block: Eliminated unparsed raw mermaid code box.
v0.2.6 (2026-09-15)
- Thunderstore Media Fix: Replaced relative image links with absolute repository URLs.
- Official Repository Launch: Source code and Archify visual checks published at
djcdevelopment/SelfieStick.
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.
๐ฆ 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.7.zip. - Extract
CameraProof.dlldirectly into yourValheim/BepInEx/plugins/directory.
๐ ๏ธ Building from Source
git clone https://github.com/djcdevelopment/SelfieStick.git
cd SelfieStick
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.


