GameSync is a real-time multiplayer game server written in Go. Its purpose is to learn and demonstrate the backend engineering behind shared, low-latency game worlds: persistent connections, concurrency, authoritative state, and state synchronization.
The demo game will stay intentionally small: a browser-based 2D arena where players can join a room, move, and see one another. The server—not the client—will decide the authoritative game state.
Stage 0 — Repository Bootstrap. This first commit deliberately contains only a Go module, a runnable entry point, and project documentation. No HTTP, WebSocket, room, or game-state architecture has been introduced yet.
Run it with:
go run .- HTTP server
- One WebSocket client
- Multiple clients and safe broadcasting
- Rooms
- Minimal synchronized player state
- Authoritative inputs and a fixed server tick
The project will grow incrementally: build a small capability, encounter the next real problem, learn the relevant Go or networking concept, then extend the system.
Each milestone will have a short record of its goal, design choices, how to run/test it, and lessons learned. Start with Stage 0: Repository Bootstrap.
- Learn idiomatic Go through a practical concurrent-networking project.
- Keep the server authoritative: clients send intentions, while the server validates and simulates the world.
- Measure before optimizing; introduce complexity only when it solves a real problem.
- Build toward meaningful simulated concurrent load, not elaborate gameplay.