IsModded
Restore Steam achievement progression with BepInEx on Valheim 1.0-1.0.16. Preserves vanilla cheat and official bypass logic while ignoring Game.isModded.
截圖 共 2 張
模組介紹 作者原文
Valheim 1.0-1.0.16:: isModded & Achievements Architecture
Technical analysis, runtime decoupling, and verification suite for Valheim 1.0.x Steam achievement progression
📌 Overview
Supported game versions: Valheim 1.0.0 through 1.0.16. Latest runtime verification: 1.0.16 on 2026-09-26. The build, Harmony target audit, isolated boot log, package validation, and assembly hashes are recorded in the fleet compatibility evidence.
During the release of Valheim 1.0 (Deep North / Ashlands), an official community update noted:
"We have learned that you cannot earn achievements while playing modded."
Version 1.0.5 runs Iron Gate's complete Achievements.IsCheatedAtAll() implementation while temporarily masking only Game.isModded. This preserves the 1.0.16 item, world, devcommand, cache, and official bypass rules without copying those rules into the mod.
For players and server communities utilizing client-side quality-of-life plugins—such as inventory management, crafting interfaces, camera adjustments, or administrative utilities—this policy introduced an unintended suppression of Steam achievement progression.
This repository provides an open-source technical breakdown and solution:
- Bytecode Root-Cause Analysis: Inspection of the decompiled C# IL showing why Game.isModded causes achievement suppression.
- Interactive Architecture Model: A structured system flow compiled via Archify showing the exact engine evaluation paths.
- Lightweight Runtime Plugin (IsModded.dll): An 11.8 KB Harmony patch that decouples Game.isModded from cheat validation while keeping genuine cheat protections active.
- Embedded Snippet for Mod Authors: A 15-line drop-in Harmony patch that authors can incorporate directly into existing mods without requiring a separate plugin.
- Automated Verification Suite: Standalone CLI executable (Verify-IsModded.exe), PowerShell verification script, and live in-game console command (ismodded) to inspect engine bytecode and validate runtime state.
🗺️ System Architecture
The interaction flow below is compiled directly from the formal specification using Archify:
Interactive Viewer: Open docs/valheim-ismodded.html (Live Web Preview) in any browser for the full interactive model:
- Guided Views: End-to-End Unlock Flow, Vanilla Mod Lockout, IsModded Prefix Decoupling, and Zero-Overhead Verification.
- Navigation: Dynamic pan, zoom, component metadata inspection, and dark/light theme toggle.
- Source & Vector Exports: Specification in docs/valheim-ismodded.architecture.json and standalone vector in assets/architecture-archify.svg.
📥 Installation (For Players)
To restore Steam achievement progression while running BepInEx:
- Download IsModded.dll (11.8 KB) from the repository dist/ directory, GitHub Releases, or.
- Place the file into your Valheim BepInEx plugins folder:
/BepInEx/plugins/IsModded.dll
- Launch the game normally. Steam achievements will record as milestones are achieved.
🔬 Technical Analysis: Root Cause in Valheim 1.0
The suppression of achievements under modded environments is not driven by an anti-cheat engine or file integrity scanning. Instead, it stems from the coupling of a legacy telemetry flag with 1.0 achievement evaluation logic.
- The Game.isModded Telemetry Field
In early versions of Valheim, Iron Gate introduced a static boolean field in Game.cs designed to assist with customer support triage:
// Valheim assembly_valheim.dll:: Game.cs
public static bool isModded = false;
// Note in codebase:
// "While we don't officially support mods in Valheim at this time,
// we ask that you please set the following isModded value to true in your mod.
// This will place a small text in the menu to inform the player that their
// game is modded and help us solving support issues. Thank you for your help!"
- Automatic Flagging by BepInEx
To cooperate with developer support guidelines, the BepInEx loader implemented an automated reflection helper (Chainloader.SetIsModdedTrue()) that s
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。 多人連線時,主機與所有用戶端需要安裝一致的模組。
下面這些內容需要先安裝,否則該模組不會生效: