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://awesomeopensource.com/project/giongto35/cloud-morph: My current focus
on generic solution for cloudgaming
Discord: Join Us
Direct play an existing game: Pokemon Emerald
Due to high cost of maintainance, we are keeping only one server hosting in U.S now. You may experience high latency when connecting the service from other places. You can try hosting the service yourself from the guideline. I believe CloudRetro has served its purpose to introduce Cloud Gaming/ WebRTC tech stack for the last 3 years.
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.
Screenshot | Screenshot |
---|---|
![]() |
![]() |
![]() |
![]() |
# Ubuntu / Windows (WSL2)
apt-get install -y make gcc pkg-config libvpx-dev libx264-dev libopus-dev libsdl2-dev
# MacOS
brew install pkg-config libvpx x264 opus sdl2
# Windows (MSYS2)
pacman -Sy --noconfirm --needed git make mingw-w64-x86_64-{gcc,pkgconf,dlfcn,libvpx,opus,x264-git,SDL2}
Because the coordinator and workers need to run simultaneously. Workers connect to the coordinator.
make dev.run
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
(CLOUD_GAME_GAMES_PATH
is env variable for games on your host). It will spawn a docker environment and you can access
the service on localhost:8000
.
The configuration parameters are stored in the configs/config.yaml
file which is shared for all
application instances on the same host system. It is possible to specify individual configuration files for each
instance as well as override some parameters, for that purpose, please refer to the list of command-line options of the
apps.
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.
High level | Worker internal |
---|---|
![]() |
![]() |
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.
Synchronize a game session on multiple devices
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://awesomeopensource.com/project/giongto35/cloud-morph)
Authors:
Maintainers: