The goal is to build a robust and efficient solution designed to minimize latency and overhead through a stack of custom protocols in a lean server environment. This project provides a foundational game server structure optimized for self-hosting, ensuring smooth and responsive multiplayer experiences. The intention is to provide a "front-end" centric multiplayer framework that enables developers to a worry free experience in regards to the intricacies of networking.
- FastAPI API: A scalable and high-performance API built with FastAPI, handling routes for lobbies and player management.
- Custom UDPs: Built with a "game development" forward mindset for best throughput and control as needed.
- Reliable and Unreliable UDP sockets are functioning and accept connections when created.
- Built in UDP manager is operational it includes features such as: socket resource cleanup (after a certain time-period with 0 clients being connected), port scanning, connect/disconnect handlers (safe exit), and connected client tracking.
- OAS 3.1: Thanks to FastAPI
/docs
gets generated for API endpoints, so feel free to spin it up and poke around.
- x Tests are continuous WIP, so they may be broken while I do rapid releases early on. Depends on how excited or tired I am when a feature gets completed.
- x Features (more to come), keep an eye on the issues tab. I will be treating the issues panel as a roadmap and open invite to the community.
- x Front-end for the API.
- x Packet handling
- x Declared game logic parsing
To execute the API locally, ensure you have the necessary dependencies installed pip install requirements.txt
and run:
uvicorn app.main:app --reload --host <ip-address> --port <port>
To execute the unit tests locally, ensure you have the necessary dependencies installed and run:
pytest
If you want to test the UDP sockets, I temporarily created a python file you can run with:
python -m app.tests.runnable.run_to_test_udp <client_name> "http://localhost:<port>"
Contributions are welcome! Please fork the repository and submit a pull request with your enhancements or bug fixes.
Apache-2.0 license