Lakona

Build realtime C# game servers
share code with Unity and Godot clients

A C# full-stack game server framework for shared client/server contracts, typed RPC, actor-owned state, reliable push, live logic updates, and runtime diagnostics.

Built for live multiplayer games

📡

No protocol drift

Server and Unity/Godot clients compile the same C# RPC contracts, DTOs, and stable state types.

🎮

Hot-update live logic

Reload C# gameplay behavior while long-lived player, room, and match state stays alive.

🔌

Actor-owned state

Rooms, players, lobbies, and matches process messages sequentially instead of fighting shared locks.

🔎

Inspect live servers

Use readiness checks, framework logs, and loopback diagnostics to inspect process, hotfix, actor, session, and recent event state.

âš¡

Scale deliberately

Run everything in one process during development, then split nodes and route actors explicitly in production.

🔀

Flexible transports

Choose TCP, WebSocket, KCP, loopback, JSON, or MemoryPack without binding gameplay code to one wire format.

Reload rules. Keep state alive.

RoomBehavior.cs
// Server-only behavior that can reload while actor state stays alive
[HotfixBehaviorOf(typeof(RoomActor))]
public static partial class RoomBehavior
{
    public static ValueTask<JoinRoomReply> JoinAsync(this RoomActor room, JoinRoomRequest request)
    {
        room.Players.Add(request.PlayerId);
        return new(new JoinRoomReply(true, room.Players.Count));
    }
}