Allumette is a signaling server designed for ggrs (rollback netcode library) games, leveraging matchbox-socket for robust peer-to-peer connections. It provides a decentralized and stateless matchmaking service with a focus on flexibility and extensibility.
- Decentralized Matchmaking: Facilitates direct peer-to-peer connections for games, reducing reliance on central authorities for gameplay.
- Stateless Authentication: Implements a secure, stateless authentication system using JWTs, ensuring scalable and flexible user management.
- Lobby Management:
- Public Lobbies: Easily discoverable and joinable lobbies for open matchmaking.
- Private Lobbies: Invite-only lobbies with optional whitelisting, perfect for friends or competitive play.
- Offline Account with Friends: Supports managing friend relationships and accounts that persist across sessions.
- WebSocket Integration: Utilizes WebSockets for real-time communication between clients and the signaling server, enabling dynamic lobby updates and game state synchronization.
- Web Interface for UI Development: Includes
allumette_web(a SvelteKit application) to aid in building intuitive web-based user interfaces for matchmaking and lobby management. - Comprehensive Integration Test Suite: A robust suite of integration tests ensures the stability and correctness of the API and core functionalities.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- Rust toolchain (with
cargo) just(command runner, alternative tomake)npm(for theallumette_webfrontend)
-
Clone the repository:
git clone https://github.com/bascanada/matchbox-server.git cd matchbox-server -
Build the server:
cargo build
-
Install frontend dependencies:
cd allumette_web npm install cd ..
To run the Allumette server locally:
make runThe server will typically run on 127.0.0.1:3536.
To run the SvelteKit web interface:
cd allumette_web
npm run devThis will start the development server for the web UI, usually accessible at http://localhost:5173.
To execute the comprehensive test suite, including unit and integration tests:
make testsrc/: Core Rust server-side logic, including authentication, lobby management, and state handling.allumette_web/: SvelteKit frontend application for the web interface.tests/: Integration tests for the server API.examples/: Example client usage.
Contributions are welcome! Please feel free to open issues or submit pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.