Rune
Streams, state and live aggregates for a game backend, in one system. Write events, read player state by key, query leaderboards as they change.
A log that is also your database
materialized views
Joins and aggregates over your topics, current on every write. Read any row by key.
tables
Compacted topics keep the latest value per key: player state with no separate database.
typed schemas
Schema registry and generated C++ types. Add, drop and rename fields without breaking old clients.
transactions
Exactly-once writes across topics and partitions, consumer offsets in the same commit.
consumer groups
Partitions spread across your workers and rebalanced on join, leave or failure.
durable streams
Replicated, keyed, ordered per partition, idempotent producers, automatic failover.
TLS 1.3
Encrypted client sessions with hostname verification.
transient topics & views
Replicated in memory, never on disk. Transient views rebuild from their topics on restart.
game-loop client
Run the client inside your server tick: no client threads, no blocking calls.
Rune QL
Define and evolve topics with statements in the rune console.
In an MMO backend
- Characters, world statetablesTyped, compacted topics keyed by player or entity.
- Trades, auction housetransactionsDebit and credit commit together or not at all.
- Combat, match, session eventsstreamsFan out to matchmaking, analytics and anti-cheat workers.
- Leaderboards, guild statsviewsSum and Count by player or guild, read by key.
Your topics are your database
A position write updates one row. A rename updates every row of that user. Views are persisted by default and recover on restart. No ETL, no cache to invalidate.
Rune vs Kafka 4.0
Same hardware · 3 nodes · replication factor 3 · 64 B records