Open-source Cloud Gaming Service For Retro Games
Video demo: https://www.youtube.com/watch?v=GUBrJGAxZZg
Technical wrapup: https://webrtchacks.com/open-source-cloud-gaming-with-webrtc/
CloudMorph: https://github.com/giongto35/cloud-morph: My current focus
on generic solution for cloudgaming
Discord: Join Us

Direct play an existing game: * Pokemon Emerald*
CloudRetro provides an open-source cloud gaming platform for retro games. It started as an experiment for testing cloud gaming performance with WebRTC and Libretro, and now it aims to deliver the most modern and convenient gaming experience through the technology.
Theoretically, in cloud gaming, games are run on remote servers and media are streamed to the player optimally to ensure the most comfortable user interaction. It opens the ability to play any retro games on web-browser directly, which are fully compatible with multi-platform like Desktop, Android, ~~IOS~~.
In ideal network condition and less resource contention on servers, the game will run smoothly as in the video demo. Because I only hosted the platform on limited servers in US East, US West, Eu, Singapore, you may experience some latency issues + connection problem. You can try hosting the service following the instruction the next section to have a better sense of performance.
# Ubuntu / Windows (WSL2)
apt-get install -y make gcc pkg-config libvpx-dev libx264-dev libopus-dev libsdl2-dev libyuv-dev libjpeg-turbo8-dev
# MacOS
brew install pkg-config libvpx x264 opus sdl2 jpeg-turbo
# Windows (MSYS2)
pacman -Sy --noconfirm --needed git make mingw-w64-x86_64-{gcc,pkgconf,dlfcn,libvpx,opus,x264-git,SDL2,libyuv,libjpeg-turbo}
Because the coordinator and workers need to run simultaneously. Workers connect to the coordinator.
Script
make dev.run
The scripts spawns 2 processes one in the background and one in foreground
Manual
Need to run coordinator and worker separately in two session
go run cmd/coordinator/main.go - spawn coordinatorgo run cmd/worker/main.go --coordinatorhost localhost:8000 - spawn workers connecting to coordinatorAdditionally, you may install and configure an X Server display in order to be able to run OpenGL cores.
See the docker-compose.yml file for Xvfb example config.
Use makefile script: make dev.run-docker or Docker Compose directly: docker compose up --build.
It will spawn a docker environment and you can access the service on localhost:8000.
The default configuration file is stored in the pkg/configs/config.yaml file.
This configuration file will be embedded into the applications and loaded automatically during startup.
In order to change the default parameters you can specify environment variables with the CLOUD_GAME_ prefix, or place
a custom config.yaml file into one of these places: just near the application, .cr folder in user's home, or
specify own directory with -w-conf application param (worker -w-conf /usr/conf).
See an example of deployment scripts if you want to try to host your own cloud-retro copy in the cloud. This script (deploy-app.sh) allows pushing configured application to the group of servers automatically. The cloud server should be any Debian-based system with the docker-compose application installed.
By clicking these deep link, you can join the game directly and play it together with other people.
And you can host the new game by yourself by accessing cloudretro.io and click "share" button to generate a permanent link to your game.
We are very much thankful to everyone we've been lucky to collaborate with and many people for help and inspiration from their awesome works.
Thanks:
CloudMorph is a sibling project that offers a more generic to run any offline games/application on browser in Cloud Gaming approach: https://github.com/giongto35/cloud-morph)
Authors:
Maintainers:
$ claude mcp add cloud-game \
-- python -m otcore.mcp_server <graph>