A comprehensive collection of DayZ Standalone mods designed for server administration, gameplay enhancement, and quality-of-life improvements. Features modular design with automated build, validation, and publishing workflows.
Gameplay modifications and quality-of-life improvements focused on item usability and reduced annoyances:
- Shouldered Fishing Rod & Tripod - Adds custom fishing rod (
Swarm_FishingRod) and tripod (Swarm_Tripod) that can be carried in shoulder slot alongside other items - No Bury Large Bags - Prevents burying large bags (like the Lantia suit) in the ground for gameplay balance
- Less Laugh - Reduces laughing frequency from BrainDisease to be less annoying
- Less Sneeze - Reduces sneezing frequency from Influenza to be less disruptive
- Improvised Suppressor Crafting - Requires a full duct tape (instead of partial) to craft improvised suppressors for balancing
Dependencies: DZ_Data, DZ_Scripts, DZ_Gear_Tools, DZ_Gear_Cooking
Modular animal drop modifications with clean, expandable architecture. Modifies harvesting/skinning drops for:
- Wolf (Canis Lupus)
- Goat (Capra Hircus - Male & Female variants)
- Sheep (Ovis Aries - Male & Female variants)
- Reindeer (Rangifer Tarandus - Male & Female variants)
- Wild Boar (Sus Scrofa)
- Brown Bear (Ursus Arctos)
- Polar Bear (Ursus Maritimus)
Each animal has its own dedicated config for easy customization and future expansion.
Dependencies: DZ_Animals
Repack of the original EarPlugs mod by DaemonF0rge with Swarm branding. Client-side volume control system:
- Volume Levels - Cycle through Full, Mid, Low, and Off volume levels
- In-Game Widget - Visual indicator showing current volume state
- Custom Keybind - Configurable hotkey via inputs.xml
- Game Audio Control - Reduces master volume for immersive RP scenarios or hearing protection
Credits: Original mod by DaemonF0rge. Thanks for allowing community repacks!
Dependencies: Mission module only (client-side)
Enhanced spectator camera system for filming and content creation. Extends Community Online Tools (COT) spectator functionality:
- Delete Marker - Remove camera markers from spectator view
- Delete Light - Remove light sources for cleaner filming
- Lock-On Target - Enhanced camera locking on entities
- Custom Inputs - Additional keybinds for camera control via inputs.xml
Purpose: Provides server admins and content creators with advanced camera controls for filming cinematic footage, events, and documentation.
Dependencies: JM_COT_Scripts (Community Online Tools), CF (Community Framework)
Note: This is NOT a repack - it requires COT to be installed and only overrides/extends the spectator camera functionality.
Server-side moderation and player activity tracking tool:
- Restricted Area Logout Menu - Custom logout interface for designated zones
- Combat Logout Tracking - Silent monitoring of combat logging behavior (provides evidence for admin action)
- Player Activity Monitoring - Tools for server administrators to observe player behavior
Purpose: Moderation tool for server admins to track and prevent rule violations without disrupting gameplay.
Dependencies: DZ_Data, DZ_Scripts (Game, World, Mission modules)
Swarm/
βββ src/ # Source code for all mods
β βββ meta.cpp # Mod metadata template
β βββ SwarmTweaks/ # Gameplay tweaks
β β βββ config.cpp
β β βββ scripts/4_World/ # World module overrides
β βββ SwarmAnimals/ # Animal drops (modular structure)
β β βββ config.cpp
β β βββ canis_lupus/config.cpp
β β βββ capra_hircus/config.cpp
β β βββ ovis_aries/config.cpp
β β βββ ...
β βββ SwarmEarplugs/ # Volume control
β β βββ config.cpp
β β βββ data/inputs.xml
β β βββ scripts/5_Mission/
β βββ SwarmSpectator/ # Enhanced spectator
β β βββ config.cpp
β β βββ data/inputs.xml
β β βββ scripts/3_Game, 4_World, 5_Mission/
β βββ SwarmObserver/ # Moderation tools
β βββ config.cpp
β βββ scripts/3_Game, 4_World, 5_Mission/
βββ dist/@Swarm/ # Build output (gitignored)
β βββ Addons/ # Compiled PBO files
β βββ Keys/ # Public signing key (.bikey)
β βββ meta.cpp # Processed metadata
β βββ mod.cpp # Workshop metadata
βββ keys/ # Signing keys directory
β βββ Swarm.bikey # Public key (committed)
β βββ Swarm.biprivatekey # Private key (gitignored)
βββ scripts/ # Build tools and utilities
β βββ load_env.ps1 # PowerShell .env parser
β βββ update_version.ps1 # Version preprocessor
β βββ steamcmd.exe # SteamCMD for Workshop publishing
βββ validate/ # Script validation environment
β βββ mods/ # Dependency mods (CF, COT, etc.)
β β βββ @CF/
β β βββ @Community-Online-Tools/
β βββ serverDZ.cfg # Custom server config (gitignored)
β βββ serverDZ.default.cfg # Default validation config
βββ build.bat # Build all mods
βββ validate.bat # Script validation
βββ publish.bat # Full publish workflow
βββ launch.bat # Local dev environment launcher
βββ .env # Environment configuration (gitignored)
- DayZ Tools - Install via Steam (free with DayZ ownership)
- Windows - Build scripts are Windows batch files (PowerShell 5.1+)
- DayZ Server - Required for
validate.batandlaunch.bat - DayZ Client - Required for
launch.batonly - SteamCMD - Required for automated
publish.batworkflow
If your mods depend on other mods, place them in validate/mods/:
validate/mods/@CF/
validate/mods/@Community-Online-Tools/
Create a .env file in the project root with your paths:
# ============================================
# DayZ Tools (REQUIRED for build/publish)
# ============================================
DAYZ_TOOLS=G:\SteamLibrary\steamapps\common\DayZ Tools
# ============================================
# DayZ Server (REQUIRED for validate/launch)
# ============================================
DAYZ_SERVER=G:\SteamLibrary\steamapps\common\DayZServer
# ============================================
# DayZ Client (REQUIRED for launch.bat only)
# ============================================
DAYZ_CLIENT=G:\SteamLibrary\steamapps\common\DayZ
# ============================================
# Steam Workshop Publishing
# ============================================
# Steam account username for SteamCMD
STEAM_USERNAME=your_steam_username
# Workshop item ID (get this after first manual publish)
WORKSHOP_ID=1234567890
# ============================================
# Development Options
# ============================================
# Dependency mods to load (semicolon-separated)
MODS=@CF;@Community-Online-Tools
# Client profile directory (optional, for launch.bat)
DAYZ_PROFILE=C:\Users\YourName\Documents\DayZ| Variable | Required For | Description |
|---|---|---|
DAYZ_TOOLS |
build, publish | Path to DayZ Tools installation. Used for AddonBuilder.exe, DSSignFile.exe, and DSCreateKey.exe |
DAYZ_SERVER |
validate, launch | Path to DayZ Server. Required to run script validation and local test server |
DAYZ_CLIENT |
launch | Path to DayZ client installation for local testing |
STEAM_USERNAME |
publish | Your Steam account username for SteamCMD authentication |
WORKSHOP_ID |
publish | Steam Workshop item ID (obtained after first publish) |
MODS |
validate, launch | List of dependency mods to load, separated by semicolons (e.g., @CF;@COT) |
DAYZ_PROFILE |
launch | Optional: Path to DayZ profile directory to copy settings from |
Instead of using .env, you can set system environment variables:
setx DAYZ_TOOLS "G:\SteamLibrary\steamapps\common\DayZ Tools"
setx DAYZ_SERVER "G:\SteamLibrary\steamapps\common\DayZServer"
setx DAYZ_CLIENT "G:\SteamLibrary\steamapps\common\DayZ"Note: System variables take precedence over .env file values.
Compiles all source packages into PBO files using DayZ Tools AddonBuilder.
- Environment Loading - Loads
DAYZ_TOOLSfrom.envor environment variables - Version Management - Uses
--versionflag or reads from.versionfile - Preprocessing - Runs
update_version.ps1to replace%VERSION%placeholders in all source files - Compilation - Invokes AddonBuilder for each folder in
src/directory - Metadata Processing - Copies and processes
meta.cppwith version, timestamp, and Workshop ID - Optional Signing - Signs PBOs with private key if
--signflag is specified - Optional Validation - Runs
validate.batif--validateflag is specified
# Basic build with version number
build.bat --version 1.2.3
# Build with signing
build.bat --version 1.2.3 --sign
# Build with validation (requires DayZ Server)
build.bat --version 1.2.3 --validate
# Build with custom validation timeout
build.bat --version 1.2.3 --validate --timeout 30
# Build without specifying version (uses .version file)
build.bat| Option | Description |
|---|---|
--version X.X.X |
Version number for this build (updates .version file) |
--sign |
Sign all PBO files with private key after building |
--validate |
Run script validation after successful build |
--timeout N |
Validation timeout in seconds (default: 15) |
- PBO files:
dist/@Swarm/Addons/*.pbo - Meta file:
dist/@Swarm/meta.cpp(processed with version/timestamp/Workshop ID) - Version file:
.version(stores last used version)
- Folder Discovery - Scans
src/for subdirectories (each becomes a PBO) - Version Injection - PowerShell preprocessor finds all
%VERSION%placeholders and replaces them - AddonBuilder Execution - Each folder is compiled with
-clear -packonlyflags - Meta.cpp Processing - Replaces
%VERSION%,%TIMESTAMP%, and%PUBLISHEDID%in meta.cpp - Timestamp Format - Uses .NET DateTime.UtcNow.Ticks format for Workshop compatibility
Tests compiled scripts by launching a DayZ Server instance and checking logs for errors.
- Environment Loading - Loads
DAYZ_SERVERandMODSfrom.env - Build Verification - Checks if
dist/@Swarm/Addonsexists - Config Selection - Uses
validate/serverDZ.cfg(custom) orvalidate/serverDZ.default.cfg(default Chernarus) - Mod List Building - Loads dependency mods from
validate/mods/orMODSenv variable, then adds@Swarmlast - Server Launch - Starts DayZServer_x64.exe in background with all mods loaded
- Timeout Wait - Waits specified seconds for server to load and initialize scripts
- Log Analysis - Scans RPT and crash logs for script errors, compile errors, and fatal errors
- Process Termination - Kills server process and analyzes final logs
- Error Reporting - Displays crash logs, script logs, and error lines from RPT files if errors found
# Run validation with default timeout (15 seconds)
validate.bat
# Run validation with longer timeout
validate.bat --timeout 30
# Skip build check (assume mods are already built)
validate.bat --skip-build
# Show help
validate.bat --help| Option | Description |
|---|---|
--timeout N |
Server run duration in seconds (default: 15) |
--skip-build |
Skip checking if mod is built |
--help |
Display detailed help information |
The script looks for configs in this order:
validate/serverDZ.cfg- Custom config (your specific map, mods, settings)validate/serverDZ.default.cfg- Default config (vanilla Chernarus offline)
To validate on a different map, copy serverDZ.default.cfg to serverDZ.cfg and modify the Missions class:
Missions = {
class MyCustomMap {
template = "dayzOffline.enoch"; // or .namalsk, .takistanplus, etc.
};
};Place dependency mods in validate/mods/:
validate/mods/@CF/
validate/mods/@Community-Online-Tools/
validate/mods/@DeerIsle/
Or specify in .env:
MODS=@CF;@Community-Online-Tools;@DeerIsleThe script automatically loads dependencies BEFORE @Swarm to ensure proper load order.
The validation script detects:
- Crash Logs -
crash_*.logfiles - Crash Dumps -
*.mdmpminidump files - Script Errors - RPT entries containing "SCRIPT ERROR", "SCRIPT (E)", "Compile error"
- Fatal Errors - "Fatal error", "ErrorModule", "Cannot compile"
If errors are found, logs are preserved at .validate_temp/ for inspection.
0- Validation passed, no errors detected1- Validation failed, script errors or crashes detected
Complete pipeline for building, validating, signing, and publishing to Steam Workshop.
This is a 4-step automated pipeline:
- Runs
build.bat --version X.X.Xto compile all mods - Preprocesses version placeholders
- Generates PBO files in
dist/@Swarm/Addons/ - Skip with
--skip-buildif already built
- Runs
validate.bat --skip-buildto check for script errors - Launches DayZ Server with all mods loaded
- Analyzes RPT logs for compile errors
- Skip with
--skip-validate(not recommended)
- Creates signing keys if they don't exist (using DSCreateKey.exe)
- Signs all PBO files with private key (using DSSignFile.exe)
- Generates
.bisignsignature files - Copies public
.bikeytodist/@Swarm/Keys/ - Skip with
--skip-sign
- Creates
mod.cppwith version and metadata - Generates Workshop VDF configuration file
- Logs into Steam via SteamCMD
- Uploads mod files to Workshop item
- Skip with
--skip-publish(useful for build+sign only)
Before first publish, you MUST:
-
Install SteamCMD
- Download from: https://developer.valvesoftware.com/wiki/SteamCMD
- Extract
steamcmd.exetoscripts/steamcmd.exe
-
Initialize SteamCMD and Cache Credentials
cd scripts steamcmd.exe +login your_steam_username +quit- Enter your password
- Enter Steam Guard code if prompted
- Credentials are cached for future automated runs
- Important: You only need to do this once, or when changing passwords
-
Create Workshop Item Manually
- Open DayZ Tools β Publisher
- Click "New" and fill in mod details
- Upload initial version manually
- Note the Workshop ID from the URL (e.g.,
https://steamcommunity.com/sharedfiles/filedetails/?id=1234567890) - Add
WORKSHOP_ID=1234567890to your.envfile
-
Configure .env File
DAYZ_TOOLS=G:\SteamLibrary\steamapps\common\DayZ Tools DAYZ_SERVER=G:\SteamLibrary\steamapps\common\DayZServer STEAM_USERNAME=your_steam_username WORKSHOP_ID=1234567890
# Full publish pipeline (build β validate β sign β publish)
publish.bat --version 1.2.3
# Publish with changelog
publish.bat --version 1.2.3 --changelog "Fixed bug with fishing rod shouldering"
# Publish with custom signing key
publish.bat --version 1.2.3 --key MyCustomKey
# Dry run (show what would happen without doing it)
publish.bat --version 1.2.3 --dry-run
# Skip validation (faster, but risky)
publish.bat --version 1.2.3 --skip-validate
# Build and sign only, don't publish
publish.bat --version 1.2.3 --skip-publish
# Use existing build, just sign and publish
publish.bat --version 1.2.3 --skip-build| Option | Description |
|---|---|
--version X.X.X |
Required - Version number to build and publish |
--key KeyName |
Key name for signing (default: "Swarm") |
--changelog "text" |
Change note displayed on Workshop (default: "Version X.X.X") |
--workshop-id ID |
Override Workshop ID from .env |
--skip-build |
Skip build step (use existing PBOs) |
--skip-validate |
Skip script validation (not recommended) |
--skip-sign |
Skip signing step |
--skip-publish |
Build and sign only, don't upload to Workshop |
--dry-run |
Show what would be done without executing |
On first run, publish.bat automatically creates a key pair:
- Private Key:
keys/Swarm.biprivatekey- Keep this SECRET (gitignored) - Public Key:
keys/Swarm.bikey- Share with server owners (committed to repo)
- Never share your
.biprivatekeyfile - It's used to prove authenticity - Always share your
.bikeyfile - Server owners need this to verify your mods - The public key is automatically copied to
dist/@Swarm/Keys/for Workshop distribution - Custom key names: Use
--key CustomNameto create/use different key pairs
cd scripts
steamcmd.exe +login your_steam_username +quitThis caches your credentials in scripts/config/loginusers.vdf.
- If Steam Guard is enabled, you'll be prompted for a code during first login
- The code is sent to your email or mobile app
- After successful authentication, credentials are cached
- Future
publish.batruns will use cached credentials automatically
- Wrong password? - Run the manual login command again to update cached credentials
- Steam Guard timeout? - Re-run the login command and enter code faster
- Two-Factor Required? - Use the Steam Mobile Authenticator app for instant codes
0- Published successfullyNon-zero- Error occurred (build failed, validation failed, signing failed, or upload failed)
After successful publish:
- Workshop URL -
https://steamcommunity.com/sharedfiles/filedetails/?id=YOUR_ID - Signed PBOs -
dist/@Swarm/Addons/*.pboand*.bisign - Public Key -
dist/@Swarm/Keys/Swarm.bikey - Mod Metadata -
dist/@Swarm/mod.cppandmeta.cpp
Launches local DayZ Server and Client for development testing with automatic configuration.
- Environment Loading - Loads paths from
.env(DAYZ_SERVER, DAYZ_CLIENT, DAYZ_TOOLS, MODS, DAYZ_PROFILE) - Process Cleanup - Kills existing DayZ processes to free up files and ports
- Optional Build - Runs
build.batand signs PBOs if--buildflag specified - Config Selection - Uses
validate/serverDZ.cfgorvalidate/serverDZ.default.cfg - Temp Directory Setup - Creates
.launch_temp/for server profiles and client profiles - BattleEye Configuration - Automatically enables BattleEye in server config for stability
- Profile Copying - Copies existing DayZ profiles from
DAYZ_PROFILEto temp client directory (preserves settings) - Mod List Building - Loads dependencies from
validate/mods/orMODSenv variable, adds@Swarmlast - COT Permission Setup - If Community Online Tools is detected, creates full admin permissions for "everyone" role
- Server Launch - Starts DayZServer_x64.exe in new window with full logging
- Client Launch - After 10-second wait, starts DayZ_BE.exe with auto-connect to local server
# Launch server and client (default port 2302)
launch.bat
# Launch with custom port
launch.bat --port 2303
# Build, sign, and launch
launch.bat --build
# Build with custom port
launch.bat --build --port 2303
# Show help
launch.bat --help| Option | Description |
|---|---|
--port N |
Server port (default: 2302) |
--build |
Build and sign mod before launching |
--help |
Display help information |
Same as validate.bat - uses validate/serverDZ.cfg or validate/serverDZ.default.cfg.
The script automatically adds BattlEye = 1; to the server config for proper client connection.
If Community Online Tools is detected in the mod list, the script creates:
PermissionsFramework/Roles/everyone.txtwith full admin permissions- All COT permissions granted to "everyone" role (no need to manually set up admins)
- Includes camera, ESP, teleport, weather, vehicle, loadout, and Namalsk event controls
If DAYZ_PROFILE is set, the script copies your existing:
- Client settings (
*.DayZProfile) - Graphics settings (
*.cfg) - Input settings (
*.xml)
Everything is stored in .launch_temp/:
- Server Logs -
.launch_temp/*.RPT,.launch_temp/*.ADM,.launch_temp/*.log - Client Logs -
.launch_temp/client/Users/DevClient/*.RPT - Server Profiles -
.launch_temp/PermissionsFramework/, etc.
Client automatically connects to 127.0.0.1:PORT using -connect and -port parameters.
- Close the server and client windows manually
- Or use Task Manager to kill
DayZServer_x64.exeandDayZ_x64.exe - Or run
launch.batagain (it kills existing processes first)
# 1. Build with validation
build.bat --version 1.0.0 --validate
# 2. Launch for testing
launch.bat
# 3. Make changes to src/ files
# 4. Quick rebuild and relaunch
launch.bat --build# Faster builds (skips validation)
build.bat --version 1.0.0
# Launch directly
launch.batThe .version file stores the last used version:
# First build creates .version file
build.bat --version 1.0.0
# Subsequent builds can omit version
build.bat
# Update version explicitly
build.bat --version 1.1.0If validation fails:
-
Check preserved logs -
.validate_temp/directory contains:*.RPT- Full server logscrash_*.log- Crash detailsscript_*.log- Script-specific logs
-
Run with longer timeout - Give server more time to load:
validate.bat --timeout 60 -
Test manually - Launch server yourself:
launch.bat # Check logs in .launch_temp/
Create validate/serverDZ.cfg with your custom map:
hostname = "Dev Test Server";
Missions = {
class Namalsk {
template = "dayzOffline.namalsk";
};
};Then run validation or launch as normal.
PowerShell script that parses .env files:
# Usage from batch files
powershell -NoProfile -ExecutionPolicy Bypass -File "scripts\load_env.ps1" -EnvFile ".env" -VarName DAYZ_TOOLSFeatures:
- Skips empty lines and comments (lines starting with
#) - Removes surrounding quotes from values
- Returns single variable value or all variables as
KEY=VALUElines - Silent failure (returns nothing if file or variable not found)
Copies source files to temporary directory and replaces %VERSION% placeholders:
# Usage from build.bat
powershell -NoProfile -ExecutionPolicy Bypass -File "scripts\update_version.ps1" -SourceDir "src\SwarmTweaks" -TempDir ".build_temp\SwarmTweaks" -Version "1.2.3"Replacements:
%VERSION%β Actual version string (e.g., "1.2.3")- Used in
config.cppfiles for mod version display
The src/meta.cpp file uses these placeholders:
version = "%VERSION%"; // Replaced with --version value
timeStamp = %TIMESTAMP%; // Replaced with DateTime.UtcNow.Ticks
publishedid = %PUBLISHEDID%; // Replaced with WORKSHOP_ID env variableProcessing:
build.batreplaces all placeholders when copying todist/@Swarm/meta.cpp- Timestamp format is .NET ticks for Steam Workshop compatibility
- Published ID defaults to
0ifWORKSHOP_IDnot set
Critical: Never share or commit your .biprivatekey file!
# .gitignore already includes
keys/*.biprivatekeyIf your private key is compromised:
- Generate a new key pair:
publish.bat --version X.X.X --key NewKeyName - Re-sign all PBOs with the new key
- Distribute the new
.bikeyto server owners - Update your Workshop item with newly signed PBOs
The .env file is gitignored but contains sensitive paths:
# .gitignore already includes
.envNever commit:
- Steam usernames
- Workshop IDs (if you want to keep them private)
- Local file paths (they're specific to your machine)
- Create new folder in
src/(e.g.,src/SwarmNewMod/) - Add
config.cppwith comments explaining features - Add scripts in appropriate module folders (3_Game, 4_World, 5_Mission)
- Build and test:
build.bat --version 1.0.0 --validate launch.bat
Each animal has its own config.cpp in src/SwarmAnimals/:
canis_lupus/config.cpp- Wolfcapra_hircus/config.cpp- Goat (male)capra_hircus_fem/config.cpp- Goat (female)- etc.
Edit the appropriate file and rebuild.
Always validate before publishing:
# Build with validation
build.bat --version X.X.X --validate
# Or use the full publish pipeline
publish.bat --version X.X.X --dry-runSee individual mod directories for licensing information. SwarmEarplugs is a repack of the original EarPlugs mod by DaemonF0rge.
- SwarmEarplugs - Original EarPlugs mod by DaemonF0rge
- SwarmSpectator - Extends Community Online Tools by Jacob-Mango
- Swarm Team - Kize and contributors
For issues, questions, or suggestions:
- Check the logs in
.validate_temp/or.launch_temp/for errors - Review this README for workflow details
- Check each mod's
config.cppfor feature documentation
Last Updated: February 2026
Current Version: See .version file
Workshop: Check your WORKSHOP_ID in .env
-
Create Workshop Item Manually
- Open DayZ Tools β Publisher
- Click "New" and fill in mod details
- Upload initial version manually
- Note the Workshop ID from the URL (e.g.,
https://steamcommunity.com/sharedfiles/filedetails/?id=1234567890) - Add
WORKSHOP_ID=1234567890to your.envfile
-
Configure .env File
DAYZ_TOOLS=G:\SteamLibrary\steamapps\common\DayZ Tools DAYZ_SERVER=G:\SteamLibrary\steamapps\common\DayZServer STEAM_USERNAME=your_steam_username WORKSHOP_ID=1234567890
# Full publish pipeline (build β validate β sign β publish)
publish.bat --version 1.2.3
# Publish with changelog
publish.bat --version 1.2.3 --changelog "Fixed bug with fishing rod shouldering"
# Publish with custom signing key
publish.bat --version 1.2.3 --key MyCustomKey
# Dry run (show what would happen without doing it)
publish.bat --version 1.2.3 --dry-run
# Skip validation (faster, but risky)
publish.bat --version 1.2.3 --skip-validate
# Build and sign only, don't publish
publish.bat --version 1.2.3 --skip-publish
# Use existing build, just sign and publish
publish.bat --version 1.2.3 --skip-build| Option | Description |
|---|---|
--version X.X.X |
Required - Version number to build and publish |
--key KeyName |
Key name for signing (default: "Swarm") |
--changelog "text" |
Change note displayed on Workshop (default: "Version X.X.X") |
--workshop-id ID |
Override Workshop ID from .env |
--skip-build |
Skip build step (use existing PBOs) |
--skip-validate |
Skip script validation (not recommended) |
--skip-sign |
Skip signing step |
--skip-publish |
Build and sign only, don't upload to Workshop |
--dry-run |
Show what would be done without executing |
On first run, publish.bat automatically creates a key pair:
- Private Key:
keys/Swarm.biprivatekey- Keep this SECRET (gitignored) - Public Key:
keys/Swarm.bikey- Share with server owners (committed to repo)
- Never share your
.biprivatekeyfile - It's used to prove authenticity - Always share your
.bikeyfile - Server owners need this to verify your mods - The public key is automatically copied to
dist/@Swarm/Keys/for Workshop distribution - Custom key names: Use
--key CustomNameto create/use different key pairs
cd scripts
steamcmd.exe +login your_steam_username +quitThis caches your credentials in scripts/config/loginusers.vdf.
- If Steam Guard is enabled, you'll be prompted for a code during first login
- The code is sent to your email or mobile app
- After successful authentication, credentials are cached
- Future
publish.batruns will use cached credentials automatically
- Wrong password? - Run the manual login command again to update cached credentials
- Steam Guard timeout? - Re-run the login command and enter code faster
- Two-Factor Required? - Use the Steam Mobile Authenticator app for instant codes
0- Published successfullyNon-zero- Error occurred (build failed, validation failed, signing failed, or upload failed)
After successful publish:
- Workshop URL -
https://steamcommunity.com/sharedfiles/filedetails/?id=YOUR_ID - Signed PBOs -
dist/@Swarm/Addons/*.pboand*.bisign - Public Key -
dist/@Swarm/Keys/Swarm.bikey - Mod Metadata -
dist/@Swarm/mod.cppandmeta.cpp
Launches local DayZ Server and Client for development testing with automatic configuration.
- Environment Loading - Loads paths from
.env(DAYZ_SERVER, DAYZ_CLIENT, DAYZ_TOOLS, MODS, DAYZ_PROFILE) - Process Cleanup - Kills existing DayZ processes to free up files and ports
- Optional Build - Runs
build.batand signs PBOs if--buildflag specified - Config Selection - Uses
validate/serverDZ.cfgorvalidate/serverDZ.default.cfg - Temp Directory Setup - Creates
.launch_temp/for server profiles and client profiles - BattleEye Configuration - Automatically enables BattleEye in server config for stability
- Profile Copying - Copies existing DayZ profiles from
DAYZ_PROFILEto temp client directory (preserves settings) - Mod List Building - Loads dependencies from
validate/mods/orMODSenv variable, adds@Swarmlast - COT Permission Setup - If Community Online Tools is detected, creates full admin permissions for "everyone" role
- Server Launch - Starts DayZServer_x64.exe in new window with full logging
- Client Launch - After 10-second wait, starts DayZ_BE.exe with auto-connect to local server
# Launch server and client (default port 2302)
launch.bat
# Launch with custom port
launch.bat --port 2303
# Build, sign, and launch
launch.bat --build
# Build with custom port
launch.bat --build --port 2303
# Show help
launch.bat --help| Option | Description |
|---|---|
--port N |
Server port (default: 2302) |
--build |
Build and sign mod before launching |
--help |
Display help information |
Same as validate.bat - uses validate/serverDZ.cfg or validate/serverDZ.default.cfg.
The script automatically adds BattlEye = 1; to the server config for proper client connection.
If Community Online Tools is detected in the mod list, the script creates:
PermissionsFramework/Roles/everyone.txtwith full admin permissions- All COT permissions granted to "everyone" role (no need to manually set up admins)
- Includes camera, ESP, teleport, weather, vehicle, loadout, and Namalsk event controls
If DAYZ_PROFILE is set, the script copies your existing:
- Client settings (
*.DayZProfile) - Graphics settings (
*.cfg) - Input settings (
*.xml)
Everything is stored in .launch_temp/:
- Server Logs -
.launch_temp/*.RPT,.launch_temp/*.ADM,.launch_temp/*.log - Client Logs -
.launch_temp/client/Users/DevClient/*.RPT - Server Profiles -
.launch_temp/PermissionsFramework/, etc.
Client automatically connects to 127.0.0.1:PORT using -connect and -port parameters.
- Close the server and client windows manually
- Or use Task Manager to kill
DayZServer_x64.exeandDayZ_x64.exe - Or run
launch.batagain (it kills existing processes first)
# 1. Build with validation
build.bat --version 1.0.0 --validate
# 2. Launch for testing
launch.bat
# 3. Make changes to src/ files
# 4. Quick rebuild and relaunch
launch.bat --build# Faster builds (skips validation)
build.bat --version 1.0.0
# Launch directly
launch.batThe .version file stores the last used version:
# First build creates .version file
build.bat --version 1.0.0
# Subsequent builds can omit version
build.bat
# Update version explicitly
build.bat --version 1.1.0If validation fails:
-
Check preserved logs -
.validate_temp/directory contains:*.RPT- Full server logscrash_*.log- Crash detailsscript_*.log- Script-specific logs
-
Run with longer timeout - Give server more time to load:
validate.bat --timeout 60 -
Test manually - Launch server yourself:
launch.bat # Check logs in .launch_temp/
Create validate/serverDZ.cfg with your custom map:
hostname = "Dev Test Server";
Missions = {
class Namalsk {
template = "dayzOffline.namalsk";
};
};Then run validation or launch as normal.
PowerShell script that parses .env files:
# Usage from batch files
powershell -NoProfile -ExecutionPolicy Bypass -File "scripts\load_env.ps1" -EnvFile ".env" -VarName DAYZ_TOOLSFeatures:
- Skips empty lines and comments (lines starting with
#) - Removes surrounding quotes from values
- Returns single variable value or all variables as
KEY=VALUElines - Silent failure (returns nothing if file or variable not found)
Copies source files to temporary directory and replaces %VERSION% placeholders:
# Usage from build.bat
powershell -NoProfile -ExecutionPolicy Bypass -File "scripts\update_version.ps1" -SourceDir "src\SwarmTweaks" -TempDir ".build_temp\SwarmTweaks" -Version "1.2.3"Replacements:
%VERSION%β Actual version string (e.g., "1.2.3")- Used in
config.cppfiles for mod version display
The src/meta.cpp file uses these placeholders:
version = "%VERSION%"; // Replaced with --version value
timeStamp = %TIMESTAMP%; // Replaced with DateTime.UtcNow.Ticks
publishedid = %PUBLISHEDID%; // Replaced with WORKSHOP_ID env variableProcessing:
build.batreplaces all placeholders when copying todist/@Swarm/meta.cpp- Timestamp format is .NET ticks for Steam Workshop compatibility
- Published ID defaults to
0ifWORKSHOP_IDnot set
Critical: Never share or commit your .biprivatekey file!
# .gitignore already includes
keys/*.biprivatekeyIf your private key is compromised:
- Generate a new key pair:
publish.bat --version X.X.X --key NewKeyName - Re-sign all PBOs with the new key
- Distribute the new
.bikeyto server owners - Update your Workshop item with newly signed PBOs
The .env file is gitignored but contains sensitive paths:
# .gitignore already includes
.envNever commit:
- Steam usernames
- Workshop IDs (if you want to keep them private)
- Local file paths (they're specific to your machine)
- Create new folder in
src/(e.g.,src/SwarmNewMod/) - Add
config.cppwith comments explaining features - Add scripts in appropriate module folders (3_Game, 4_World, 5_Mission)
- Build and test:
build.bat --version 1.0.0 --validate launch.bat
Each animal has its own config.cpp in src/SwarmAnimals/:
canis_lupus/config.cpp- Wolfcapra_hircus/config.cpp- Goat (male)capra_hircus_fem/config.cpp- Goat (female)- etc.
Edit the appropriate file and rebuild.
Always validate before publishing:
# Build with validation
build.bat --version X.X.X --validate
# Or use the full publish pipeline
publish.bat --version X.X.X --dry-runSee license file. SwarmEarplugs is a repack of the original EarPlugs mod by DaemonF0rge.
- SwarmEarplugs - Original EarPlugs mod by DaemonF0rge
- SwarmSpectator - Extends Community Online Tools by Jacob-Mango
- Swarm Team - Kize, Arky and contributors
Last Updated: February 2026
Current Version: See .version file
Workshop: Check your WORKSHOP_ID in .env