A modular Valheim mod-suite repository generated by HeimForge.
This is an unofficial community project and is not affiliated with or endorsed by Iron Gate or Coffee Stain.
The repository provides standalone build, test, deployment, metadata, and packaging workflows. Static validation does not replace runtime testing against the actual Valheim client and server.
Use WSL/Linux as the primary development environment and keep the repository in
the Linux filesystem rather than under /mnt/c.
Copy the local configuration templates:
cp Environment.props.example Environment.props
cp .valheim/dev.json.example .valheim/dev.jsonThen run a portable repository-only check:
./scripts/preflight.sh --portableFor full local validation after configuring a development Valheim installation:
./scripts/preflight.sh
./scripts/bootstrap.shSee docs/development.md for local setup, server deployment, and
dependency/reference maintenance.
This project was generated with the following modules:
HeimForgeExample.ServerCore: server-only gameplay and administration features.HeimForgeExample.Shared.Diagnostics: independent two-sided module with its own compatibility requirements.HeimForgeExample.Client: client-only UI, visual, input, and convenience features.HeimForgeExample.Common: shared pure code and protocol primitives.
Compatibility boundaries:
- ServerCore:
NotEnforced / None - Client:
NotEnforced / None - Shared.Diagnostics:
VersionCheckOnly / Minor
Common is a shared library rather than a BepInEx runtime plugin; at least one of the three must be enabled -- a generation request disabling all three is rejected before this repository is created.
suite.config.json and the solution file are the current structural authority.
The canonical workflow is:
WSL repository + dotnet
|
+-- build/test/package in WSL
+-- inspect Windows Valheim files through /mnt/c/...
+-- deploy client DLLs to Windows Valheim through /mnt/c/...
+-- deploy server DLLs to the configured local or remote server
Windows remains the real Valheim client runtime.
Validate project metadata:
python3 scripts/suite_metadata.py checkSynchronize supported metadata changes:
python3 scripts/suite_metadata.py syncRun tests:
./scripts/test.shBuild:
./scripts/build.sh DebugInspect the configured Valheim/Jötunn/BepInEx development stack:
python3 scripts/update-game-stack.py checkRefresh game references after a Valheim binary/reference update:
python3 scripts/update-game-stack.py refreshCreate deterministic Release packages:
./scripts/package.shSee docs/development.md, docs/dependencies.md, and docs/testing.md for
details.
Deployment is explicit and metadata-driven:
./scripts/deploy-client.sh Debug
./scripts/deploy-server.sh DebugClient receives Common + Client + Shared.Diagnostics. Server receives Common + ServerCore + Shared.Diagnostics.
Server deployment is not tied to Docker. Local filesystem destinations and remote POSIX or Windows servers over SSH are supported. Docker is an optional lifecycle integration for restart, status, and log operations.
Managed hosts that expose only FTP/SFTP or a control-panel file manager require manual deployment through the provider's tools because automated remote deployment requires an SSH command channel.
Server deployment does not restart the server unless explicitly requested.
See docs/development.md for local and SSH deployment configuration,
transaction guarantees, and server lifecycle behavior.
suite.config.json is the editable source of truth for supported mutable
project metadata, including:
- version and publication metadata
- dependency pins
- project scopes and target frameworks
- client/server package membership
suiteName and rootNamespace are generation-time identity and are locked in
suite.identity.lock.json.
Use scripts/suite_metadata.py rather than hand-editing generated metadata
files.
HeimForge does not select a project-level license for generated repositories.
LICENSES/MIT-0.txt covers the HeimForge scaffold material. Before public
distribution:
- choose a project license
- add it as the root
LICENSE - remove
LICENSE.todo - run:
python3 scripts/suite_metadata.py check --releaseSee docs/release.md for the complete release checklist.
Repository checks can prove structural consistency, build behavior, packaging, and deployment rules, but some behavior still requires the user's actual Valheim environment:
- full Jötunn/Valheim plugin compilation
- dedicated-server plugin load
- actual multiplayer compatibility behavior
- Shared Diagnostics RPC runtime proof
- any implemented feature's game-internal behavior, once a feature is chosen and built
docs/development.md— local environment, build, deployment, and server workflowsdocs/dependencies.md— dependency purposes and version maintenancedocs/module-catalog.md— generated module topologydocs/networking.md— networking conventionsdocs/patch-ledger.md— Harmony patch trackingdocs/release.md— packaging and public-release checklistdocs/testing.md— validation and test workflow