A learning-focused high-performance multiplayer game server built with C++20 and standalone Asio. The project explores UDP networking, asynchronous I/O, state synchronization, load testing, and profiling.
Important
This is an educational work in progress, not a production-ready game server. The server and client applications are currently minimal placeholders; networking experiments live in the tutorial examples while the main architecture is being developed.
- understand asynchronous network programming with Asio;
- design a UDP-based protocol for real-time multiplayer games;
- experiment with game-state synchronization and latency handling;
- build load-testing scenarios and find performance bottlenecks;
- learn to profile, measure, and optimize a modern C++ server.
apps/
├── client/ # main client entry point
├── server/ # main server entry point
└── tutorials/ # small TCP, UDP, and timer experiments
includes/asio/ # vendored standalone Asio headers
src/ # project source code
- a C++20-compatible compiler;
- CMake 3.20 or newer;
- Clang (the provided preset currently points to
/usr/bin/clang++); - ccache (optional).
The repository includes standalone Asio, so no separate Asio installation is required.
Using the provided debug preset:
cmake --preset Debug
cmake --build build/DebugAlternatively, configure the project with your own compiler:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build buildThe build produces the main server and client executables, along with the tutorial executables declared in CMakeLists.txt.
The repository is at the foundation stage. Planned areas of work include:
- UDP transport and packet format;
- connection and session management;
- fixed-tick simulation loop;
- state snapshots, interpolation, and reconciliation;
- reliability mechanisms for selected messages;
- load-testing tools;
- profiling, benchmarks, and performance documentation;
- automated tests and CI.
The list will evolve as experiments turn into working components.
All implementation work currently present in this repository was written by the author as part of the learning process.
AI agents have been used only to generate and edit the repository description and this README. They have not been used to write the project code so far.
This section will be updated as the project develops to keep a clear record of what was created by the author and what, if anything, was created with AI assistance.
No license has been selected yet.