Releases: brainy-bots/arcane
Releases · brainy-bots/arcane
v0.3.0 — AGPL-3.0 + binary wire protocol
Highlights
- Relicensed under AGPL-3.0-only. See LICENSE for full text. Copyright Juan Martín Mingo Suárez (pending Brainy Bots incorporation). For proprietary use, contact the copyright holder.
- New crate
arcane-wire: dependency-light WebSocket wire schema shared by the cluster and external clients. Stable schema, postcard codec. - Cluster WS now accepts both JSON and binary frames. Per-connection format preference — existing JSON clients (e.g. UE5 adapter) keep working unchanged; new clients can speak binary (postcard via arcane-wire) for benchmark fairness with SpacetimeDB's BSATN.
- 28 passing tests in arcane-infra including 10 new covering the binary path.
Why
Upcoming benchmark publishes JSON-Arcane-vs-binary-SpacetimeDB numbers that handicap Arcane. Microbench: JSON 281 ns / 150 B vs postcard 82 ns / 64 B — 3.4× encode, 2.3× size. Real scaling win is cluster broadcast fan-out where size reduction compounds.
Upgrade notes
- No API changes for existing JSON clients. Existing deployments keep working.
- Downstream Rust crates: workspace now uses
license = "AGPL-3.0-only"SPDX. If you had alicense-file.workspace = true, switch tolicense.workspace = true.
Arcane Engine v0.2.0
Arcane Engine v0.2.0
Added
- GameAction type — clients can send simulation-affecting game actions (use_item, cast_spell, etc.) through the cluster WebSocket as
GAME_ACTIONmessages - ClusterTickContext::game_actions — simulation receives client actions each tick and decides how to handle them (validate through SpacetimeDB, apply buffs, etc.)
- WebSocket message routing —
ws_serverparses bothPLAYER_STATEandGAME_ACTIONmessages, routes to separate channels - Connection types architecture doc — documents the four connection types and developer decision guide for routing actions
Developer pattern
- Simulation-affecting actions (speed potion, cast spell): Client → Cluster WebSocket → ClusterSimulation processes → SpacetimeDB validates
- Non-simulation actions (cosmetic, chat): Client → SpacetimeDB direct
See CHANGELOG.md for full details.
Arcane Engine v0.1.0
Arcane Engine v0.1.0
First tagged release of the Arcane multiplayer backend library.
Highlights
- Four-bucket entity state model —
EntityStateEntrycarries spine (position/velocity), replicated JSON (user_data), cluster-local JSON (local_data), and durable state (SpacetimeDB).local_datais never serialized on the wire. - ClusterSimulation trait — pluggable per-tick simulation hook. Games implement
ClusterSimulation::on_tick()to inject physics and game logic into the cluster tick loop. - Input validation — NaN/Infinity rejection, 64 KiB message cap, 100K entity map cap.
- 72 tests, all passing. CI: fmt + clippy + tests.
Crates
| Crate | Description |
|---|---|
| arcane-core | Traits and shared types (ClusterSimulation, EntityStateEntry, IClusteringModel, IServerPool, IReplicationChannel) |
| arcane-spatial | SpatialIndex — 2D grid for neighbor discovery |
| arcane-rules | RulesEngine — clustering decisions |
| arcane-pool | LocalPool — server pool implementation |
| arcane-infra | ClusterManager, ClusterServer, replication; binaries arcane-cluster and arcane-manager |
See CHANGELOG.md for full details.