The Eye
A deterministic, cross-platform Valheim API extraction tool, vibe coders love it!Changelog — The Eye
2.2.0 — 2026-09-03 (pre-1.0 baseline release)
Provenance
- New
Manifest.json, written before any extractor runs: game version string with build hash, Steam buildid, md5 + size of every Managed DLL, BepInEx version and every loaded plugin, world name/seed/global keys, options used, and per-file results when the dump ends. Also bundled into the AgentML zip.
API dump rewritten
- Full member surface per type: fields (with modifiers and constant values), properties (with
accessor visibility), events, constructors, methods (full signatures with
virtual/override/abstract), interfaces, attributes, nested types, enum values, Unity metadata. - Members are objects keyed by name so Huginn reports member-level adds and removes.
- Only game assemblies by default (
[API] ApiAssemblyFilter); compiler-generated types skipped. - Sequential, sorted by FullName. The old
Parallel.ForEachmade the file order random per run.
Huginn's Report rewritten as a structural diff
- Every record is keyed on its identity; the report says ADDED, REMOVED and CHANGED per file, with
flattened field-level deltas (old/new) for CHANGED and a
Huginn_Summary.jsonof counts. - The baseline can be chosen:
dump_eye baseline=<dir>or[Huginn] HuginnBaselineDir. - The old line-hash diff could not say "removed" and produced an 80 MB report of
ADDED_OR_MODIFIED.
ZDO dump
- Prefab hash resolved to a prefab name. Adds rotation, sector, persistence, object type,
revisions, creation time, and every key/value from
ZDOExtraDatawith hashes reverse-mapped throughZDOVars. Sorted by UID. - The ZNetScene active-area override is now off by default (
[ZDO] ForceGlobalActiveArea). It forced the game to instantiate every ZDO in the world for the whole session and the dump never needed it on a host.
New Registry_Dump.json
- Enums with values,
ZDOVarshash table, console commands with cheat/server/admin flags,SpawnSystemListspawn tables,CreatureSpawnerprefabs, environments and biome environments, random events, piece tables and every piece with requirements, skill definitions, and the full localization table.
Call graph
RpcRegistrationindex records: the RPC name string and the registering method for everyZNetView/ZRoutedRpc/ZRpc.Registercall.- Types and the
CalledByindex are sorted.
Determinism and hygiene
- All output is UTF-8 without BOM (line splitters were dropping the first record).
- Prefabs and ObjectDB items sorted by name; positions and floats in invariant round-trip format.
- Localization now resolves (
Localizationlives inassembly_guiutils; the old reflective lookup askedassembly_valheimand 894 display names stayed as$tokens).
Console and automation
dump_eyeoptions:baseline=<dir> nodiff noml nozdo noscene noloc; results print to the in-game console, not only the BepInEx log. Neweye_status.[Automation] AutoDumpOnWorldLoad/AutoDumpDelaySeconds/AutoDumpQuitfor dedicated servers, which have no console to type into.
2.1.1
- ValueExtractor (
Values_Dump.json) and CallGraphExtractor (CallGraph_Dump.json) added. - Streaming JSON dump engine, AgentML zip bundle, F8/F9 IMGUI controls, line-hash Huginn's Report.
1.2.9
- Fixed Readme file
1.2.8
- Initial public release


