| .woodpecker | Fix the readme + Docker Image | |
| config | Add the Server | |
| db | Add the Server | |
| lobby | Add the Server | |
| sdk/godot | Better CLI infos | |
| websockets | Add the Server | |
| .dockerignore | Add the Server | |
| .gitignore | Add the Server | |
| Dockerfile | Add the Server | |
| go.mod | Add the Server | |
| go.sum | Add the Server | |
| LICENCE | Add the Server | |
| main.go | Add the Server | |
| README.md | Fix the readme + Docker Image | |
Youpi
A lightweight self-hostable signaling server for your multiplayer games.
Quick Intro
Godot already has some great multiplayer capabilities through RPC, MultiplayerSpawner or MultiplayerSynchronizer, and already contains some implementations for Peers like WebsocketMultiplayerPeer or ENetMultiplayerPeer. But the one that interests us is WebRTCMultiplayerPeer.
WebRTC is a protocol created for transmitting data between users on the web using Peer To Peer, to avoid excessive bandwidth usage on the server and reduce delay. It's used for voice, video, and file transmission... And the best part is that it handles one of the biggest pain points of P2P: NAT. So why not using it with Godot? Because it needs a Signaling Server. A lightweight server to handle the session creation and initialization, and then everything can go P2P between users.
So this is Youpi. A lightweight Signaling Server for Godot WebRTC, with lobbies management, and some side functions that can be helpful.
But keep in mind that Youpi is made for client-side server hosting. So it may not be suitable for competitive games! And it's made to be lightweight and run on a small server. If you want a more powerful server, you can use Nakama by Heroic Labs.
But I may include some other features that will be useful for game developers in the future...
SDK
To handle the connection between Youpi and Godot, you can find an SDK Here
Deployment
You have a public Docker Image codeberg.org/bigaston/youpi:latest but you can also compile the Go code yourself and just deploy the executable.
On the Docker Image, mount a config.yml file on /app/youpi/config.yml.
server:host:"0.0.0.0"port:3000database:path:"youpi.db"admin:username:admin# changemepassword:admin# changemeImportant, Youpi uses WebSocket, so if you are behind an NGINX/Apache reverse proxy, enable them. And also, if you host your game online on an HTTPS website, remember to serve Youpi behind HTTPS (or here WSS), or you will have some errors.
An admin dashboard is available at youpi.example.com/admin, with the login information you provide in the config.yml file. For now it's really basic, but I will update this later.
Open Source but not Open Contribution
To be honest, I've released this tool because I think it can be useful for people that want a lightweight server, and a unique API to go between self-hosted and Steam Multiplayer. But I will not have the time to handle pull-requests or issues. If you want some help or have some feedback, you can of course put them here, but I don't guarantee to do it!
Current State
With 0.1.0, Youpi can create lobbies, store metadata, and support public or private lobbies with basic lobby search. YoupiSDK covers full lobby creation, multiplayer setup, lobby search, auto login through the Itch.io Desktop App and Steam, and a cross-platform API to switch to Steam Multiplayer if you want.
In the future I want to add a basic online save feature for games published on Itch.io, like cross-device saves, as well as voice chat and maybe other things.