01

A real server, not a packet relay

The aim is a complete and hackable server that behaves like the original authority expected by the retail client.

BattleSpades accepts the stock Steam client, the non-Steam client, and the new revival client. Connection compatibility is only the first layer. The server re-simulates players, resolves combat, owns the voxel world, advances game modes, and distributes state back to every connected peer.

That server-authoritative model matters because it creates one shared truth. A player may predict movement locally so controls feel immediate, but the fixed-rate server remains responsible for the result. The implementation was calibrated against the compiled client instead of relying on remembered behavior or approximate constants.

02

What already works

The current server covers the complete minute-to-minute combat loop: walking, sprinting, crouching, wading, climbing, jumping, hitscan weapons, headshots, grenades, damage, kill feeds, graves, timed respawns, ammo crates, and health crates. Block placement and destruction operate on the exact aimed cell, with debris and structure collapse propagated to clients.

Eleven modes give those systems a purpose: the ten retail Match Lobby modes (Team Deathmatch, Capture the Flag, Classic CTF, Zombie, VIP, Multi-Hill, Territory Control, Diamond Mine, Demolition, and Occupation) plus Arena. Each has its own rules and objective flow.

  • Full VXL map streaming with CRC validation
  • BlockLine construction, spade digging, bullet damage, and flood-fill collapse
  • Grenade fuse, bounce, line-of-sight blast damage, and 3×3×3 terrain destruction
  • Bots that run, flank, take cover, and play every mode's objectives
  • A Map Creator host for building and publishing custom maps
  • Player and administrator commands, team management, and plugin hooks
03

Readable logic with compiled hot paths

BattleSpades splits responsibilities deliberately. Python holds the game rules, modes, players, commands, plugins, and orchestration where maintainers need clarity. Cython handles physics, VXL and KV6 operations, byte-level packet work, and vector math where predictable performance matters.

The ENet transport uses the same protocol family as the original client: protocol version 168, a single channel, and range-coder compression. Networking and gameplay drains have explicit budgets so a burst of packets, world mutations, entity work, or plugin activity cannot quietly consume the entire tick.

  • aoslib: compiled physics, VXL world operations, and KV6 voxel models
  • shared: packet readers, writers, protocol types, and vector math
  • server: 60 Hz loop, connections, players, combat, and world management
  • modes: isolated rules for every retail mode plus Arena
  • plugins and commands: customization without rewriting the simulation core
04

Measured against the client

Reverse engineering becomes useful only when findings are repeatable. BattleSpades keeps captured behavior, packet research, deterministic scenarios, and regression tests close to the implementation. Movement replay gates compare client and server trajectories over thousands of frames, with the accepted mean position delta in the millimetre range.

Capacity validation is executable rather than aspirational. The current Windows and Python 3.12 baseline sustains the 50-player gate at roughly 60 Hz with sub-5 ms tick p99. That does not promise identical results on every host, but it provides a published baseline that future changes must continue to meet.

05

Run it or build it

Portable Beta 0.1 archives (0.1.0-beta.1) package the launcher, native runtime, editable configuration, maps, prefabs, plugins, and license notices. They are published on GitHub Releases for Windows, Linux, and macOS on x86-64 and ARM64, with SHA-256 checksums, so hosting needs no system Python installation or compiler.

Developers can build from source with Python 3.10 through 3.12 and a C/C++ compiler. The repository includes installation scripts, release checks, operator documentation, protocol notes, and contribution guidance. Start with the hosting guide if the goal is a game night; start with the repository if the goal is changing the battlefield.

06

Common questions

Does BattleSpades work with the original Ace of Spades client?

Yes. It is designed for the original Ace of Spades 1.x Battle Builder protocol and is tested with the stock Steam client, the non-Steam client, and the revival client.

Is BattleSpades a fork of an old dedicated server?

No. It is a clean-room, from-scratch implementation built from observed client behavior, packet research, and repeatable verification.

Can I add custom modes or server behavior?

The readable Python game layer, mode modules, commands, and plugin hooks are intended to make experimentation possible without forcing every change into compiled physics code.

How many players can it host?

The default configuration uses 24 player slots. An executable performance gate validates a 50-player workload at approximately 60 Hz with sub-5 ms tick p99 on the documented Windows baseline.