Game server handling remote AI clients playing turn-based games over TCP Sockets and JSON.
Ruby F# C#
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Laink is a standalone game server designed to let game AIs written in any language to compete against each other. Communication takes place as length-prefixed JSON over TCP Sockets.

Laink also provides a reference implementation for generic player AIs and game engine implementation.


  1. Client's spewing unexpected nonsense get an asynchronous reader thread/message queue to let them know about the nonsense.
  2. When a client's connection dies, ensure it's removed from the game and closed down as elegantly as the situation allows.
  3. Separate game engines out of the server process, instead communicating over sockets.
  • Allows game engines to be written in any language, too.
  • TBD: Should the server be a broker for messages, or just connect clients directly to the game engine after it's booted up? The former is more overhead, but allows the server to track all interactions and generate stats.
  1. Asynchronous queue for 'high priority' player requests before their turn (e.g. "What's the score?", "I Quit!", "Tell Harold he's going down!" )
  2. Research replacing all threads with actors