1
1
Fork
You've already forked Youpi
0
A lightweight self-hostable signaling server for your multiplayer games.
  • GDScript 58.8%
  • Go 40.7%
  • Dockerfile 0.5%
2026年03月25日 22:50:43 +01:00
.woodpecker Fix the readme + Docker Image 2026年03月25日 22:50:43 +01:00
config Add the Server 2026年03月25日 22:39:59 +01:00
db Add the Server 2026年03月25日 22:39:59 +01:00
lobby Add the Server 2026年03月25日 22:39:59 +01:00
sdk/godot Better CLI infos 2026年03月25日 22:42:38 +01:00
websockets Add the Server 2026年03月25日 22:39:59 +01:00
.dockerignore Add the Server 2026年03月25日 22:39:59 +01:00
.gitignore Add the Server 2026年03月25日 22:39:59 +01:00
Dockerfile Add the Server 2026年03月25日 22:39:59 +01:00
go.mod Add the Server 2026年03月25日 22:39:59 +01:00
go.sum Add the Server 2026年03月25日 22:39:59 +01:00
LICENCE Add the Server 2026年03月25日 22:39:59 +01:00
main.go Add the Server 2026年03月25日 22:39:59 +01:00
README.md Fix the readme + Docker Image 2026年03月25日 22:50:43 +01:00

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# changeme

Important, 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.