Crusader Kings III Multiplayer Stabilizer for Windows.
CK3MPS is a small Windows utility for preparing a cleaner, more predictable Crusader Kings III multiplayer environment. It focuses on reducing common OOS and connection-risk causes around CK3 user files, launcher state, Windows networking, Steam, Paradox Launcher, mods, cache, reports, workflow saves, parity checks, and runtime readiness.
Download latest release | View package | Read changelog
| Main window | Restore |
|---|---|
![]() |
![]() |
| Scan | Generated report |
|---|---|
![]() |
![]() |
- Checks CK3 folders, running processes, saves, mods, reports, cache, launcher state, Steam state, Windows networking, firewall, adapter hints, VPN, PPPoE, DNS and route risks.
- Applies selected stability actions with visible progress and grouped checklist items.
- Offers practical presets: Recommended, Maximum, clean profile, network-focused and diagnostic-only flows.
- Archives OOS and crash evidence without filling the CK3 game folder with stabilizer logs.
- Writes compact reports, quarantine data, restore history and live logs to
Documents\Paradox Interactive\CK3MPS, or toCK3MPS_Datanext to the executable when Portable mode is enabled. - Uses journaled portable-mode migration with startup recovery for interrupted state-root moves.
- Uses batch restore transactions with reverse snapshots and
restore_manifest.tsvrollback for selected restore operations. - Supports authenticated parity-room exchange on loopback and a selected private LAN IPv4 endpoint while preserving room code, session secret, encryption/signature, replay, payload, peer/client, and rate-limit checks.
- Keeps the release folder simple: the downloadable app is
release\CK3MPS.exe.
CK3MPS is built for local Windows machines and should be run intentionally.
- Run it as administrator when applying stabilization.
- Run Scan when you only want diagnostics and review without applying changes. Scan mode is read-only and does not create or migrate stabilizer state. Use Export Scan Report afterward to explicitly save the in-memory result to a location you choose.
- Keep your CK3 saves. Managed workflow saves are quarantined for recovery instead of being deleted.
- Close CK3 before applying game or launcher settings.
- Treat imported reports, saves, launcher state and restore manifests as untrusted input. Review before applying changes on shared or unusual setups.
- Review any warning in the final readiness report before starting multiplayer.
- If portable migration or restore is interrupted, reopen CK3MPS before deleting transaction data so startup/restore recovery can inspect preserved journals and snapshots.
- CK3MPS writes reports, history, quarantine data, migration journals and restore metadata only under
Documents\Paradox Interactive\CK3MPS, or underCK3MPS_Datanext to the executable in portable mode. - App-owned transaction data includes
.ck3mps-state-migration,.ck3mps-migration-stage-*, migration.backupdata,restore_transactions\*, andrestore_manifest.tsvsnapshots. - Workflow save actions are limited to managed
.ck3files under the CK3 user save roots. Selected saves are duplicated atomically where the filesystem supports it, and deleted saves are moved into quarantine history. - Directory restore uses same-parent staging/rename operations. CK3MPS does not claim atomic replacement across different filesystem volumes.
- Large save and OOS inputs are read with explicit size limits. When a text source exceeds the configured bound, CK3MPS truncates the read and marks the result.
- The parity room host listens on loopback and one selected private LAN IPv4 endpoint, not a wildcard address. Joining requires both the room code and the session secret, and payload sizes are bounded.
- LAN parity still needs a manual two-machine Windows test before release confidence because CI cannot reproduce every router, firewall, VPN, or adapter-priority setup.
- Release checks can detect newer versions, but the app only opens the official GitHub release page. Automatic unsigned updater execution is intentionally disabled.
- Windows 10 or Windows 11
- Crusader Kings III installed through Steam or a compatible Paradox Launcher setup
- .NET Framework 4.8 runtime
- Administrator rights for Windows/network/launcher/registry/restore changes
- Close CK3 and Paradox Launcher.
- Run
CK3MPS.exeas administrator. - Select Recommended for a balanced MP setup, or Maximum for the broadest stabilization pass.
- Run Scan.
- Open Review and inspect the planned actions.
- Run Apply Settings.
- Start CK3 and re-scan if you want to confirm settings persisted after launch.
| Preset | Use case |
|---|---|
| Recommended | Balanced multiplayer stabilization without unnecessary aggressive cleanup. |
| Maximum | All available checks and stabilization actions. |
| Clean profile only | Focuses on CK3 user state, cache, reports and launcher-generated noise. |
| Network only | Focuses on Windows network diagnostics and adapter-specific stability hints. |
| Diagnostic only | Produces checks and reports without applying changes. |
Checklist actions are backed by stable StepCatalog IDs. Changing a step's meaning requires updating the catalog, tests, presets, and documentation together.
source/ readable C# source files split by feature area
assets/ icon, manifest, screenshots and repository artwork
docs/ architecture, testing, release, package and project notes
scripts/ build, test, release packaging and GitHub package helpers
release/ runnable CK3MPS.exe and user release README
Requirements:
- Visual Studio Build Tools 2022 with MSBuild
- .NET Framework 4.8 targeting pack
.\scripts\build.ps1 -UpdateReleaseArtifactsThe runnable executable is copied to:
release\CK3MPS.exe
For the current hardening set, build before tests and use the single orchestrator:
.\scripts\build.ps1
.\scripts\test-all.ps1test-all.ps1 verifies bin\CK3MPS.exe, runs test-required.ps1 first, then runs the remaining test-*.ps1 scripts in stable priority/name order with isolated PowerShell processes and per-script diagnostics under bin\test-logs.
Create the local release zip:
.\scripts\package-release.ps1In CI release publishing, packaging uses the already-tested build:
.\scripts\package-release.ps1 -SkipBuildCreate the GitHub NuGet package locally:
.\scripts\package-github.ps1The package is written outside the repository to CK3MPS_exports.
- Run
Scanto read the current CK3 / launcher / Windows state without changing files. - Open
Reviewto inspect the exact actions and reports that would run now. - Run
Apply Settingsonly after the same-session scan looks correct. - If you remove a managed workflow save by mistake, recover it from the stabilizer quarantine history instead of the original save folder.
- If a parity room is needed outside the local machine, test on the same private LAN and confirm firewall behavior on real Windows machines.
- Use docs/RELEASE-CHECKLIST.md before every official release.
- Run
.\scripts\build.ps1and.\scripts\test-all.ps1before packaging. - Run
.\scripts\validate-release.ps1before packaging or publishing. - Release publishing validates exact tag/AppVersion equality through
.\scripts\check-version-consistency.ps1 -RequireReleaseTag. - If CI is red, inspect the failed workflow step first, then the
test-script-diagnosticsartifact for per-script logs.




