Snapmap+ extends DOOM 2016's SnapMap editor with entity and declaration editing, prefabs, timelines, asset browsing, override packages and navigation tools. It ships two Windows DLLs and a standalone installer, supporting the Vulkan and OpenGL executables.
The project is an independent, clean-room implementation. It ships no DOOM or SnapHak binary content; game assets are read from the player's installation.
| Path | Responsibility |
|---|---|
| src/ | Backend engine integration and the WebView2 companion window. |
| installer/ | Install, update and uninstall CLI. |
| docs/ | Contributor guides and cross-component contracts. |
| tests/ | Native and JavaScript regression tests. |
| tools/ | Release-note tooling and signature derivation. |
| site/ | Public website and player guide. |
| feedback/ | In-app feedback relay. |
| .github/ | CI, releases, publishing and repository policy. |
build.ps1, package.ps1 |
Compile both DLLs and assemble the installable bundle. |
Start with contributing for setup, builds, tests and review requirements and architecture for component boundaries. Main directory READMEs explain responsibilities; source comments document detailed ownership, limits and thread requirements.
Keep source ASCII where required by the Windows build, preserve generated tables and license notices, and update current documentation with behavior changes. Binaries and generated build output are ignored; CI produces release artifacts from source.
Download snapmap-plus.exe from Releases
and double-click it. The installer locates DOOM through Steam and asks before
changing files. It also accepts terminal commands:
snapmap-plus install
snapmap-plus update
snapmap-plus status
snapmap-plus uninstall
Close DOOM before installing or updating. Launch it afterward and enter SnapMap;
run sh in the game console if the companion window does not open. See the
player guide.
The installer and player data live under %LOCALAPPDATA%\snapmap-plus.
Uninstall restores recorded backups and preserves settings, overrides, prefabs
and rawmaps. Original SnapHak user data is copied forward during migration;
see the installer README.
The DLL build requires MSVC 2022 Build Tools with the C++ desktop workload. Building the installer also requires Go 1.21 or later. The frontend build fetches its WebView2 SDK; the running application uses the system WebView2 runtime. Full setup instructions are in contributing.
From the repository root:
powershell -NoProfile -ExecutionPolicy Bypass -File build.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File package.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File tests/run-tests.ps1The output is build/XINPUT1_4.dll and
build/webview/snapmap-plus-ui.dll; package.ps1 assembles them in dist/ with
MANIFEST.sha256. Deploy a local build with
installer/snapmap-plus.exe install --local dist.
Engine signature and global-anchor changes require the two-image test gate:
tests/run-tests.ps1 -Doom <DOOMx64vk.exe> -DoomAlt <DOOMx64.exe> with the
executables of the supported build (the April 2024 update, Steam build 13954591).
The test guide covers installer and
release-tool checks as well.
The Git tag is the version. Each release contains both the DLL bundle and the
installer. Plain vX.Y.Z tags are stable; vX.Y.Z-beta.N tags are prereleases.
Use --beta for the newest beta or --release <tag> for a specific version.
Without a stable release, the installer reports its fallback to the newest beta.
CHANGELOG.md is the release-note source. Maintainers prepare and review its entry before pushing a tag; follow Cutting a release.
The backend creates config.json at first launch and owns its validation and
recovery. Deleting it resets preferences on the next startup. Manual changes
are read at startup; UI settings use the registered service. The installer
preserves this file.
Mods live in %LOCALAPPDATA%\snapmap-plus\mods\ and are added with the
sh_mods console command; a saved map names the mods it uses, and the next load
activates them. A map that names a mod you do not have asks first; it downloads
only what you approve in the dialog, verified by hash. A map saved or published with packages by an
earlier release has a complete package converted into a local mod on load; any
other package is removed. Nothing is loaded from
%LOCALAPPDATA%\snapmap-plus\overrides\: on install and update the installer
runs snapmap-plus-store.exe, which converts a mods folder of earlier releases
and moves the packages in overrides\ into mods\ (packages you add there later
included), leaving overrides\ as it was for you to keep or delete; whatever it
deletes goes to the Recycle Bin. snapmap-plus migrate runs that conversion by
itself, without reinstalling. See
Mods.
SnapHak, Chrispy's original closed-source SnapMap tool, established the rawmap, override, hidden-entity and companion-window workflows that Snapmap+ builds on. Snapmap+ implements these independently and extends them for current use.
MIT. See LICENSE.