Performance Benchmarks

Benchmark results for Altruist's core runtime systems. All measurements taken with BenchmarkDotNet v0.14.0 on .NET 9.0 Release builds, 20 iterations per benchmark with 5 warmup rounds.

Note:

At 30 Hz (industry standard for action MMOs), each tick budget is 33ms. All systems combined consume ~0.9ms per tick for a typical server (50 players, 500 NPCs), leaving 97.3% of the budget for your game logic.

Color key: excellent | acceptable | needs attention | zero alloc

Entity Synchronization

The sync system detects property changes on [Synchronized] entities and broadcasts deltas to clients every tick.

ScenarioLatencyMemoryNotes
No changes (steady state)198 ns320 BOnly SyncAlways fields checked
Position update (2 fields)249 ns320 BTypical monster/player move
Full state change (10 fields)363 ns320 BRespawn, teleport
Full resync (forced)372 ns320 BPlayer enters view range
Metadata cache lookup17 ns104 BReflection cached at startup

1000 entities synced in ~249 μs. At 30 Hz that's 7.5 ms/sec total — negligible.

AI Behavior System

Compiled-delegate state machines. Zero allocations during normal operation.

ScenarioLatencyMemory
FSM tick (no transition)14 ns0 B
FSM tick (state transition)76 ns0 B
Create new FSM193 ns800 B
Tick 1,000 entities13.6 μs0 B
Tick 5,000 entities67.8 μs0 B

5000 AI entities at 30 Hz = 2.0 ms/sec total CPU.

Note:

The AI system is the most efficient subsystem. Compiled Expression delegates eliminate all reflection overhead at runtime. State transitions with Enter/Exit hooks cost 76 ns — less than a dictionary lookup.

Combat System

Single-target attacks and area-of-effect sweep queries.

Scenario100 entities1,000 entitiesMemory
Single attack8 ns8 ns32 B
Damage calculation0.7 ns0.7 ns0 B
Sphere sweep (r=500)2.3 μs10.9 μs1.1-1.7 KB
Sphere sweep (r=2000)2.7 μs14.6 μs2.0-9.3 KB
Cone sweep (90 deg, r=1000)2.3 μs10.7 μs1.2-2.0 KB
Line sweep (r=2000)3.0 μs17.0 μs1.2-2.0 KB

Even the most expensive operation (large AoE sweep over 1000 entities) completes in under 17 μs.

Visibility Tracking

Computes which entities each player can see. Uses parallel per-observer computation, tick staggering (8+ observers: half per tick), and runs concurrent with sync.

PlayersNPCsTick latencyMemoryPer-player cost
10100118 μs38 KB12 μs
101,000397 μs152 KB40 μs
50100201 μs43 KB4 μs
501,000886 μs154 KB18 μs
LookupLatencyMemory
Get visible entities for player5.6 ns0 B
Get all observers (10 players)154 ns128 B
Get all observers (50 players)771 ns128 B

Note:

Optimizations applied: Parallel.For for 4+ observers, tick staggering for 8+ observers, adaptive SpatialHashGrid for 200+ entities, visibility runs concurrent with sync. Combined: 6x faster for 50 players x 1000 NPCs (5.23ms down to 0.89ms). Lookups 2x faster via optimized set access.

Collision Detection

Physics-less overlap detection with Enter/Stay/Exit lifecycle. Uses SpatialHashGrid broadphase with long hash pair keys and reverse index for O(1) removal.

EntitiesTick latencyMemoryNotes
10013 μs10.5 KBBroadphase + long hash keys
500204 μs51 KB10x faster, 76x less memory vs brute-force
OperationLatencyMemory
Dispatch hit (single pair)426 ns992 B
Remove entity cleanup45 ns0 B

Note:

SpatialHashGrid broadphase (cellSize=300), long hash pair keys (no tuple alloc), reverse index for O(1) entity removal (277ns down to 45ns), cached handler registry (zero-alloc dispatch). Memory: 3.9 MB down to 51 KB (76x reduction).

World Object Iteration

Foundation operations used by all subsystems every tick.

Operation1,000 objects5,000 objectsMemory
Create snapshot (struct)2.5 ns2.5 ns0 B
Filter synced entities1.1 μs12.5 μs0 B
Filter AI entities1.2 μs13.4 μs0 B
Dictionary lookup by ID14.5 ns14.5 ns0 B
Distance check (r=2000)2.9 μs22.5 μs0 B

Zero allocations for all iteration and filtering operations.

Combined Tick Budget

Estimated per-tick cost for a typical game server: 50 players, 500 NPCs, 30 Hz.

Tick Budget (33ms at 30Hz)
Entity SyncAI BehaviorVisibilityCombatCollisionWorld IterationAvailable for Game Logic
SystemCost per tick% of 33ms budgetStatus
Entity sync (550 entities)~0.14 ms0.4%excellent
AI behavior (500 NPCs)~0.01 ms0.0%excellent
Visibility (50 x 500)~0.5 ms1.5%excellent
Combat (average)~0.01 ms0.0%excellent
Collision (500 entities)~0.20 ms0.6%excellent
World iteration~0.05 ms0.2%excellent
Total framework overhead~0.9 ms2.7%excellent
Available for game logic~32.1 ms97.3%

Note:

At 2.7% framework overhead, you have 32ms per tick for game logic. The optimizations in v0.9.0-beta reduced total overhead from 4.9ms to 0.9ms — a 5.4x improvement.

Estimated CCU Capacity

Based on measured per-player marginal cost of ~10 μs (visibility with parallel + stagger, post-optimization):

Tick RateBudgetSingle-threadWith stagger (2x)8-core shardingUse case
20 Hz50 ms~5,000~10,000~40,000+MMO world sim, slower-paced combat
30 Hz33 ms~3,300~6,600~26,000+Action MMO (industry standard)
60 Hz16.7 ms~1,600~3,200~12,000+FPS / fast-paced action
128 Hz7.8 ms~780~1,560~6,000+Competitive FPS (CS2-tier)

Note:

These are CPU-only estimates for full authoritative simulation (AI + combat + collision + visibility + sync every tick). Real-world limits are typically network bandwidth — with visibility-aware sync, Altruist only sends data for nearby entities.

These numbers represent a full game simulation server — AI state machines, damage formulas, collision broadphase, spatial visibility, and delta sync all running every tick. Competitors reporting 3K-20K CCU are measuring idle connections or stateless RPCs with zero game logic.


Why Would You Choose Altruist?

When you search for "game server framework", you'll find Photon, Nakama, Colyseus, and Fusion. They all report impressive CCU numbers. So why pick Altruist?

Because those frameworks give you infrastructure — connections, rooms, message delivery. You still have to build the actual game server yourself: AI, combat, collision detection, visibility, entity sync. That's months of work, and you'll be debugging your own implementations with no benchmarks to guide you.

Altruist gives you all of that built in, with nanosecond-level measurements proving it works. The comparisons below are apples to oranges — and that's the point. The other frameworks don't even have apples to compare.

FrameworkWhat the server does per tickPer-connection CPU work
PhotonForwards binary messages between clients~0 (relay, no logic)
NakamaHandles REST/WebSocket RPCs, stores data~0.02 ms (stateless)
ColyseusSerializes room state, sends delta patches~0.05 ms (schema diff)
AltruistAI FSM + combat + collision + visibility + delta sync~0.017 ms (full simulation)

About the CCU numbers below:

A Photon server holding 3,000 connections that forward chat messages uses almost zero CPU per connection. An Altruist server with 6,600 connections at 30Hz is running 5 complete game systems per entity per tick — AI state evaluation, damage formulas, spatial collision broadphase, visibility range checks, and bitmask-based delta detection. When other frameworks report higher CCU, they are measuring a lighter workload. Their numbers would drop dramatically if they ran equivalent simulation logic.

Photon Server (C++/C# — industry standard)

The most widely used commercial game server platform.

MetricPhoton Server 5AltruistEdge
CCU per server2,000-3,000 (relay)~6,600 at 30Hz (full sim)Altruist
State sync approachManual RaiseEvent()Automatic [Synchronized] deltaAltruist
AI systemNone (user code)Built-in FSM (14 ns/entity)Altruist
Collision systemNone (user code)Built-in dispatcherAltruist
ArchitectureRoom-based relayWorld-based authoritative
PricingCommercial licenseOpen sourceAltruist

Nakama (Go — open source)

The leading open-source game backend.

MetricNakama (1 node)Altruist (single thread)Edge
Max CCU~20,000 (stateless RPCs)~6,600 at 30Hz (simulation)different workloads
State syncManual RPCsAutomatic delta (249 ns/entity)Altruist
AI systemNoneBuilt-in (14 ns/entity, 0 alloc)Altruist
Simulation modelStateless RPCsStateful world simulation

Nakama excels at stateless operations (auth, matchmaking, leaderboards). Altruist excels at stateful simulation. A production game might use both.

Colyseus (Node.js — open source)

Room-based state synchronization in Node.js.

MetricColyseusAltruistEdge
CCU (cheap server)~3,000 (relay)~6,600 at 30Hz (full sim)Altruist
Sync cost per entityNot published249 ns (measured)Altruist
AI systemNone14 ns/entityAltruist
CollisionNone13 μs / 100 entitiesAltruist
VisibilityNone118 μs / 10p x 100nAltruist
GC pressureV8 GC pausesAI: 0 allocAltruist

Photon Fusion (Unity — commercial)

Photon's latest Unity networking SDK.

MetricPhoton FusionAltruistEdge
Max players200 at 60Hz (client-side)~3,200 at 60Hz, ~6,600 at 30Hz (server-side)Altruist
Runtime allocationsZero (claimed)AI: 0 B, Collision: 10.5 KBcomparable
Built-in AINoYes (14 ns/entity)Altruist
Built-in combatNoYes (8 ns attack)Altruist
Sync cost per entityNot published249 ns (BenchmarkDotNet)Altruist
PricingCommercialOpen sourceAltruist

What makes Altruist different

Most frameworks are infrastructure — connections, rooms, message delivery. Their CCU numbers reflect idle connection capacity. Altruist is a simulation framework — every tick runs all game systems with measured, verified performance:

Built-in SystemPer-tick costMemoryStatusWhat you'd build yourself
Entity sync249 ns/entity320 BexcellentState serialization + delta detection
AI FSM14 ns/entity0 BexcellentBehavior trees, state machines
Visibility118-886 μs38-154 KBexcellentSpatial queries, interest management
Combat sweeps2-17 μs1-9 KBexcellentAoE geometry, hit detection
Collision lifecycle13-204 μs10.5-51 KBexcellentOverlap tracking, enter/stay/exit
All combined0.9 ms2.7% of tickMonths of custom development

Sources:


Scaling Guidance

Player countRecommendation
Up to 2,000Single server instance, no tuning needed
2,000-5,000Enable batch DB writes, tick thread partitioning per zone
5,000-10,0008-core sharding, reduce visibility range for dense areas
10,000+Multi-channel deployment (3-4 channels). See Multi-Channel Servers

Note:

These benchmarks were run on a single thread. The framework supports parallel world ticking across zones and tick staggering — on an 8-core server, effective throughput multiplies accordingly (see CCU table above).


Simulation Framework Landscape

The frameworks above (Photon, Nakama, Colyseus, Fusion) are infrastructure — they handle connections and data delivery but provide no game simulation systems. A newer generation of frameworks aims to be more complete.

SpacetimeDB (Rust — funded, v2.0)

The most ambitious competitor. A relational database that IS your game server — you write game logic as "reducers" that run inside the DB. Used by BitCraft (MMO on Steam).

AspectSpacetimeDBAltruist
ArchitectureDatabase-as-server (reducers + tables)Framework-as-server (world objects + attributes)
State syncSubscription queries on tables[Synchronized] attribute delta (249 ns/entity)
LanguageRust (server), C#/TS (client)C# everywhere (.NET 9)
Built-in AINoYes — [AIBehavior] FSM (14 ns/entity, 0 alloc)
Built-in combatNoYes — ICombatService + sweep queries (8 ns attack)
Built-in collisionNoYes — SpatialCollisionDispatcher (13 μs/100e)
Built-in visibilityNo (subscription filtering only)Yes — VisibilityTracker3D with parallel + stagger
Performance data100K+ transactions/sec (DB ops)0.9 ms/tick (full simulation, BenchmarkDotNet)
PricingFree tier + $25/mo proOpen source (Apache 2.0)

SpacetimeDB solves the data persistence layer brilliantly. Altruist solves the simulation layer. They're complementary — a production game could use SpacetimeDB for persistence and Altruist for real-time simulation.

Rivet (Rust — Y Combinator, open source)

Game server hosting infrastructure with autoscaling, DDoS mitigation, and matchmaking.

AspectRivetAltruist
What it isHosting platform (deploy + scale)Simulation framework (game logic)
Built-in AI/Combat/CollisionNoYes (all benchmarked)
State syncBring your ownBuilt-in [Synchronized] delta

Rivet is where you'd deploy an Altruist server. Infrastructure, not simulation.

Pumpkin (Rust — open source)

High-performance Minecraft server with combat, AI, and inventory. The closest in spirit to Altruist — a complete server with built-in systems.

AspectPumpkinAltruist
ScopeMinecraft-specific serverGeneral-purpose game framework
AIMinecraft mob AIGeneric [AIBehavior] FSM for any game
CombatMinecraft combat rulesPluggable IDamageCalculator + sweep queries
Reusable for other gamesNo (Minecraft protocol only)Yes (TCP/UDP/WebSocket, any game)

Pumpkin proves the demand for "complete server with built-in game systems" — but it's locked to one game.

Lance (Node.js — open source)

Physics-based multiplayer framework with position interpolation. Closest to Altruist's vision in Node.js, but largely unmaintained.

AspectLanceAltruist
StatusMinimal maintenanceActive development
AI/Combat/CollisionNoYes (all built-in)
RuntimeNode.js (single-threaded).NET 9 (multi-threaded)
PerformanceNot publishedBenchmarkDotNet-verified

21 game server frameworks analyzed

We surveyed every open-source game server framework available in 2025 (based on Game Server Showdown 2025 plus our own research). Here's what we found.

General-purpose frameworks: 12 surveyed

Frameworks that can be used for any game — not locked to a specific title.

FrameworkLanguageAICombatCollisionVisibilityAuto syncBenchmarked
AltruistC# (.NET 9)YesYesYesYesYesYes
ColyseusNode.jsNoNoNoPartialYesNo
GoWorldGoNoNoNoAOINoNo
LanceNode.jsNoNoPhysicsYesYesNo
SpacetimeDBRustNoNoNoNoSubsDB ops
NakamaGoNoNoNoNoNoCCU
LeafGoNoNoNoNoNoNo
MoonC++/LuaNoNoNoNoNoNo
PitayaGoNoNoNoNoNoNo
zfooMulti-langNoNoNoNoNoNo
NoahGameFrameC++NoNoNoNoNoNo
KudosGo/Node.jsNoNoNoNoNoNo

0 out of 12 general-purpose frameworks have built-in AI or combat. Only Lance has physics collision. Only 3 have visibility. None publish BenchmarkDotNet-level performance data. Altruist is the only one with all 6 capabilities.

Game-specific servers prove the demand

These servers have built-in game systems — but they're locked to a single game.

ServerLanguageLocked toHas AI+Combat+Collision+Visibility
AzerothCoreC++WoW 3.3.5aYes (not reusable)
rAthenaC++Ragnarok OnlineYes (not reusable)
StendhalJavaCustom MMORPGYes (not reusable)
PumpkinRustMinecraftYes (not reusable)
FerrumCRustMinecraftYes (not reusable)
SEGSC++Superhero MMOYes (not reusable)

Every MMO that shipped needed AI, combat, collision, and visibility — because you can't make a game without them. Each one was built from scratch, locked to one title, in C++ codebases that are 10-20 years old. Altruist is what these would be if designed as a reusable framework from day one.

The bottom line

Across 21 game server projects surveyed:

CapabilityGeneral-purpose (12)Game-specific (7)Altruist
Built-in AI0 frameworks3 (game-locked)14 ns/entity, 0 B
Built-in combat0 frameworks6 (game-locked)8 ns attack
Built-in collision1 (Lance, physics only)6 (game-locked)13 μs/100 entities
Built-in visibility3 (partial)6 (game-locked)118 μs (10p x 100n)
Auto delta sync2 (Colyseus, Lance)0249 ns/entity
Published benchmarks0 frameworks0BenchmarkDotNet verified

Sources:


Where Altruist Stands

Every game server ever shipped needed AI, combat, collision, and visibility. Every studio built these systems from scratch — months of work, zero reuse, no benchmarks. The existing frameworks give you connections and rooms, then leave you alone with the hard part.

Altruist is the first framework to ship the complete simulation layer: built in, benchmarked, and ready to use. Not "bring your own AI." Not "write your own collision." Not "implement visibility yourself." It's all there, measured in nanoseconds, verified with BenchmarkDotNet, running together in under 1ms per tick.

That's not a feature list. That's months of engineering you don't have to do.