Free Hosted Server · Open Source · TCP + WebSocket

Add Multiplayer
to Any Game

Register your game with a simple JSON, grab a client library, connect to server.roomielib.com, and you have networked multiplayer. No backend to build, no servers to manage. Free.

Get Started - It's Free View on GitHub →

How It Works

Three things. That's it.

Roomie is a hosted game relay. You describe your game's data, we handle the networking.

1. Register your game

Add a JSON with your app key and player limits. PR it to the repo.

2. Use a client library

Grab the C++, Rust, GML, or C# client.
They default to server.roomielib.com. Connect, create a room, and go.

3. Ship your game

The server handles rooms, relay, host migration, and reconnects. You write game logic, not networking code.


Features

What you get out of the box

Everything is handled by server.roomielib.com. You focus on your game.

Simple Registration

Register your game with an app key and player limits.
The server relays opaque blobs.

Client-Authoritative

One player is host and owns the game state. Others send inputs, the host merges and broadcasts. Simple, flexible authority model.

Host Migration

When the host disconnects, another player takes over automatically.
Full state resync. Everyone stays in the game.

Room System

Room codes, public/hidden listings, passwords, accept/deny, kick/ban, custom settings.
A complete lobby system.

Multi-App

One server hosts many games. Each app_key gets its own room pool. Your game shares the server but is fully isolated.

Always On

server.roomielib.com is running 24/7. No infrastructure to provision, no uptime to worry about. Just connect.


Quickstart

Multiplayer in 3 steps

Here's how the included Pong example gets networked multiplayer. Your game follows the same pattern.

1

Grab the client library

Clone roomielib to get the client libraries and the Pong example. Pong is already registered on the server.

terminal
# Clone and build the C++ Pong example
git clone https://github.com/codename-B/roomielib
cd roomielib/clients/cpp
cmake -B build -DROOMIE_BUILD_EXAMPLE=ON
cmake --build build
2

Register your game

Every game needs an app key and player limits. Here's Pong's.
Write yours, open a PR. Once merged, your game is live on server.roomielib.com.

apps/pong.json
{
  "app_key": "pong",
  "min_players": 2,
  "max_players": 2
}
3

Connect and play

The client libraries connect to server.roomielib.com by default.
Run two instances. One creates a room, the other joins with the code. That's it.

C++ - what the Pong example does
// Connects to server.roomielib.com:8765 by default
RoomieClient client;
client.connect("server.roomielib.com", "8765");

// Player 1: create a room
client.create_room("pong", client_hash, nullptr);
// → receives Joined { room_code: "ABC123", side: 0, ... }

// Player 2: join with the code
client.join_room("pong", "ABC123", client_hash, nullptr);

// Host sends state, peers send input - server relays everything
client.send_move(state_blob, len);  // host
client.send_input(input_blob, len); // peer

Client Libraries

Pick your language

All libraries connect to server.roomielib.com out of the box. Open source and included in the repo.

C++

Full client library with CMake. Includes a networked Pong example built with Raylib.

Ready

Rust

Client library with the same protocol types used by the server. First-class support.

Ready

GameMaker

Native TCP with network_connect_raw. Same binary protocol.
No extensions or DLLs required.

Ready

C# / Unity

Full .NET client. Varint bincode protocol over TCP or WebSocket.

Ready

More

The protocol is open and simple enough to implement in any language that speaks TCP.

Coming Soon