Skip to content

Releases: brainy-bots/arcane

v0.3.0 — AGPL-3.0 + binary wire protocol

19 Apr 13:17
c228232

Choose a tag to compare

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 a license-file.workspace = true, switch to license.workspace = true.

Arcane Engine v0.2.0

18 Apr 07:53

Choose a tag to compare

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_ACTION messages
  • ClusterTickContext::game_actions — simulation receives client actions each tick and decides how to handle them (validate through SpacetimeDB, apply buffs, etc.)
  • WebSocket message routingws_server parses both PLAYER_STATE and GAME_ACTION messages, 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

17 Apr 18:30

Choose a tag to compare

Arcane Engine v0.1.0

First tagged release of the Arcane multiplayer backend library.

Highlights

  • Four-bucket entity state modelEntityStateEntry carries spine (position/velocity), replicated JSON (user_data), cluster-local JSON (local_data), and durable state (SpacetimeDB). local_data is 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.