A first proof-of-concept for a Steamworks lobby-based MMO-lite game in Odin.
- Raylib window with simple 2D circle rendering.
- Steamworks initialization through
odin-steamworks. - Uses Steam AppID
480(steam_appid.txt) for local Spacewar testing. - Press
Cto create a friends-only dungeon lobby with max 5 players. - Press
Ito open Steam's invite dialog. - Accepting a Steam lobby invite while the game is running joins that lobby.
- Non-overlay lobby testing: copy lobby IDs with
L, join clipboard lobby IDs withJ, or launch with--join <lobby_id>. - WASD / arrow-key movement for the local circle.
- Broadcasts local player state to lobby peers with
SteamNetworkingMessages. - Receives peer state and interpolates remote circles.
- Data-oriented first pass: global game state, SoA player slots, packed network packet.
odin build . -out:example_rotmg_pocSteam must be running and logged in.
./example_rotmg_pocOn Linux, libsteam_api.so must be discoverable by the loader. This repo keeps a copy beside the executable for the POC.
WASD/ arrows: moveI: invite friends to lobbyL: copy current Steam lobby ID to clipboardJ: join numeric Steam lobby ID from clipboardShift+Tab: Steam overlayC: create/host a lobby if not already in one
Host:
./example_rotmg_pocPress C to create a lobby. Once in lobby, press L to copy the numeric lobby ID and send it to another developer.
Joiner option A, clipboard:
- Copy the numeric lobby ID from chat/Discord/etc.
- Run the game.
- Press
Jbefore creating/while not in a lobby.
Joiner option B, launch argument:
./example_rotmg_poc --join 109775240000000000This path tests Steam lobbies and SteamNetworkingMessages without requiring the Steam overlay invite UI.
- Split this single-file POC into modules:
sim,players,steam_net,render. - Add explicit dungeon/raid lobby sizing: 5-player dungeons, 10-player raids.
- Move from peer transform broadcast to host-authoritative snapshots.
- Add fixed-timestep simulation and render interpolation buffers.
- Add packet sequence validation, stale-player timeout, and disconnect handling.
- Add compact SoA entity state for combat actors/projectiles/effects.
- Add deterministic dungeon encounter room prototype.
- Package correctly for Steam with proper Steam AppID and redistributables.