
Host your first BattleSpades server
BattleSpades is the open-source dedicated server for Ace of Spades: Battle Builder. This guide takes you from nothing to a running server you can join, on Windows, Linux or macOS, without prior server experience.
What you need
A computer that stays on while people play, a network that lets UDP traffic in, and players with a compatible client.
| Item | Requirement |
|---|---|
| Operating system | Windows, Linux or macOS. Portable builds exist for x86-64 and ARM64 of each. |
| CPU | The server simulates everyone at a fixed 60 ticks per second. One free CPU core per busy server is a comfortable start. |
| Memory | Measured during the beta: roughly 80–200 MB per server after a map loads, plus 30–60 MB for bots. Very small 512 MB VPS plans ran out of memory; 1 GB or more is a safe start for one or two servers. |
| Network | Inbound UDP on the game port (default 27015). A home connection works with port forwarding; a VPS works with its firewall opened. |
| Players | The original Steam game, the non-Steam client, or the open-source revival client. All speak protocol 168. |
| Source build only | Python 3.10–3.12 (3.12 recommended) and a C/C++ compiler. |
Option A: portable release
Open the BattleSpades releases page (opens in a new tab) and download the archive for your system: windows-x86_64, windows-arm64, linux-x86_64, linux-arm64, macos-x86_64 or macos-arm64. Each archive contains the launcher, the Python runtime, config.toml, the maps, prefabs, the plugin folder and license notices.
- 01Verify
Compare the ZIP against the release's
SHA256SUMS.txt(for examplecertutil -hashfile file.zip SHA256on Windows orsha256sum file.zipon Linux). - 02Extract everything
Extract the whole folder. Do not copy only the executable: maps, native libraries and config must sit next to it.
- 03Set the admin password
Open
config.tomlin a text editor and set[admin] passwordto a unique secret of at least 12 characters (see below). - 04Run the check
Run
--checkonce. It validates the config, maps, native modules, prefabs and the bot worker without opening the game port. - 05Start
Run the executable without arguments. Leave the window open; closing it stops the server.
.\BattleSpades.exe --check
.\BattleSpades.exe./BattleSpades --check
./BattleSpadesThe macOS build is unsigned and not notarized, so Gatekeeper may ask you to allow it explicitly (System Settings → Privacy & Security).
Option B: build from source
Install Python 3.12 and a compiler first. The compiler builds the Cython physics/map/packet core and the bundled ENet networking library.
| System | Compiler |
|---|---|
| Windows | Visual Studio Build Tools with the “Desktop development with C++” workload |
| Debian / Ubuntu | sudo apt install build-essential python3-dev |
| Fedora / RHEL | sudo dnf install gcc python3-devel |
| macOS | xcode-select --install |
git clone https://github.com/KikoTs/BattleSpades.git
cd BattleSpades
py -3.12 -m venv venv
.\venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
python setup.py build_ext --inplace
python run_server.py --check
python run_server.pygit clone https://github.com/KikoTs/BattleSpades.git
cd BattleSpades
python3.12 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python setup.py build_ext --inplace
python run_server.py --check
python run_server.pyThe repository also has one-step installers that do the dependency install and build for you: ./scripts/install.sh (Linux/macOS) and .\scripts\install.ps1 (Windows).
The five settings to change first
Everything lives in config.toml next to the server. The server reads it once at startup, so restart after editing. The shipped file is a complete, commented example; you only need to touch a few keys to begin.
[server]
name = "My AoS Server" # max 31 characters are shown
port = 27015
max_players = 24
[game]
default_mode = "ctf" # tdm ctf cctf zom vip mh tc dia dem oc arena
default_map = "CastleWars" # a .vxl name from maps/, without .vxl
[admin]
password = "a-long-unique-secret" # 12+ characters, not changeme- Name: what players see in the browser and scoreboard.
- Mode and map: see Game modes and maps for the retail map pool of each mode.
- Admin password: in-game
/adminlogin is disabled while it ischangeme, empty or shorter than 12 characters. The server still runs, but you cannot moderate. - Bots: the sample config backfills up to 12 bots when the server is empty. See Bots to change or disable that.
- AoSPlay listing:
[revival] enabled = truedoes nothing until you register and set a token; see Ports and public listing.
To keep personal tweaks separate, copy the file to config.local.toml and start with --config config.local.toml. --port 27020 overrides only the port for one run. Every key is explained in the configuration reference.
Start and join
A healthy --check prints one OK line per item. A warning about the admin password means you have not changed it yet.
OK version: 0.1.0-beta.1
OK config.toml: C:\Games\BattleSpades\config.toml
OK maps: 28 VXL files; default=MayanJungle.vxl
OK native imports: 8 modules
OK Steam discovery: disabled
OK prefabs: 40 KV6 files
OK worker spawn: AI child processed full map MayanJungle.vxl ...- 01Same computer
Start your game client and use its direct-connect option with
127.0.0.1:27015. This proves the server runs. - 02Same network
From another device on your LAN, connect to the host's local address, e.g.
192.168.1.20:27015. This proves the OS firewall lets UDP in. - 03Internet
Forward the port on your router and test from a different connection (a phone hotspot works). Details: Ports and public listing.
- 04Become admin
In game, open chat and type
/admin your-password. Try/helpto see every command you now have.
Logs are written to logs/server.log beside the server (rotated at 16 MB, 3 backups) and to the console. Crash stack traces go to logs/server.fault.log. To stop the server press Ctrl+C in its window.
Where to go next
- Ports and public listing: firewall, router, AoSPlay and Steam listing.
- Game modes and maps: rotation, votes, match length.
- Admin and moderation: bans, anti-cheat, AFK and griefing.
- Multiple servers and updates: run many modes from one install and upgrade safely.
- Troubleshooting: when something does not work.
Common questions
Do players need Python?+
No. Players only need a compatible game client. Portable server releases do not need Python either.
Can I run a server and play on the same PC?+
Yes. Start the server, then connect your client to 127.0.0.1:27015. For others to join, the port still has to be reachable from the internet.
Should I raise tick_rate for smoother play?+
No. Keep tick_rate = 60. The client's physics and the server's reconciliation are calibrated to 60 Hz; other values break movement such as jumping.
Which version am I running?+
Run the server with --version. This site's guides were generated from BattleSpades 0.1.0-beta.1.


