Web-based Cloud Gaming service for Retro Game
Find a file
giongto35 5d3a716e2d
Update vendor and makefile (#76)
* Update dependencies

* Update vendor

* Update vendor with C package

* Update Make file
2019-09-01 04:56:27 +08:00
.github Create FUNDING.yml 2019-08-04 04:16:47 +08:00
cmd Move gamelist to become a utility library, this package can be shared between overlord and worker (#72) 2019-08-27 07:26:33 +08:00
config Refactor encoder (#75) 2019-08-31 12:26:00 +08:00
cws Update Playstation core (#73) 2019-08-28 03:54:18 +08:00
document Update Playstation core (#73) 2019-08-28 03:54:18 +08:00
emulator Update NES emulator to follow correct order (#74) 2019-08-30 02:47:08 +08:00
encoder Add H264 codec (#71) 2019-08-23 03:41:16 +08:00
games Add GBA rom to test retroarch 2019-08-31 04:21:00 +08:00
h264encoder Refactor encoder (#75) 2019-08-31 12:26:00 +08:00
libretro Update vendor and makefile (#76) 2019-09-01 04:56:27 +08:00
overlord Move gamelist to become a utility library, this package can be shared between overlord and worker (#72) 2019-08-27 07:26:33 +08:00
static Update UI to support more kind of emulator 2019-08-31 13:45:06 +08:00
util Update Playstation core (#73) 2019-08-28 03:54:18 +08:00
vendor Update vendor and makefile (#76) 2019-09-01 04:56:27 +08:00
vpx-encoder Refactor encoder (#75) 2019-08-31 12:26:00 +08:00
webrtc Refactor encoder (#75) 2019-08-31 12:26:00 +08:00
worker Refactor encoder (#75) 2019-08-31 12:26:00 +08:00
.dockerignore Update docker ignore to skip adding games folder to docker, use volume instead 2019-08-03 16:57:37 +08:00
.gitattributes Update new frontend (#38) 2019-05-25 13:16:32 +08:00
.gitignore Introduce Makefile and go vendor directory for faster build (#67) 2019-08-17 00:13:36 +08:00
_config.yml Set theme jekyll-theme-cayman 2019-07-25 15:25:41 +08:00
Dockerfile Update cores 2019-08-03 16:23:55 +08:00
go.mod Update vendor and makefile (#76) 2019-09-01 04:56:27 +08:00
go.sum Update vendor and makefile (#76) 2019-09-01 04:56:27 +08:00
LICENSE Update LICENSE 2019-04-11 02:13:48 +08:00
Makefile Update vendor and makefile (#76) 2019-09-01 04:56:27 +08:00
prometheus.yml Add prometheus yml 2019-06-05 01:57:53 +08:00
README.md Update README.md 2019-09-01 03:34:45 +08:00

Web-based Cloud Gaming Service

Video demo: https://www.youtube.com/watch?v=koqWB1VKflo


CloudRetro, Open source Web-based Cloud Gaming Service building on WebRTC and LibRetro.

This project aims to bring the most modern and convenient gaming experience to user. You can play any retro games on your browser directly, which is fully compatible on multi-platform like Desktop, Android, IOS. This flexibility also enables online gaming experience to retro games.

Note: Due to the high cost of hosting, I will Hibernate the servers for a while. I'm working on a big change and will turn on hosting again. Sorry for that :(
You can try hosting your own service following the instruction in the next session.

Screenshot Screenshot
screenshot screenshot
screenshot screenshot

Feature

  1. Cloud gaming: Game logic is hosted on a remote server. User doesn't have to install or setup anything. Images and audio are streamed to user in the most optimal way.
  2. Cross-platform compatibility: The game is run on webbrowser, the most universal built-in app. No console, plugin, external app or devices are needed. The device must support webRTC to perform streaming. Joystick is also supported.
  3. Emulator agnostic: The game can be play directly without emulator selection and initialization as long as the its cores are supported by RetroArch.
  4. Vertically scaled + Load balancing: We can add more machines to handle more traffic. The closest server with highest free resource will be assigned to user.
  5. Cloud storage: Game state is storing on online storage, so you can come back to continue playing in a game.

Run on local by Docker

You try hosting the server yourself by running ./run_local_docker.sh. It will spawn a docker environment and you can access the emulator on localhost:8000.

Development environment

Install Golang https://golang.org/doc/install . Because the project uses GoModule, so it requires Go1.11 version.

Install dependencies

# Ubuntu
apt-get install -y pkg-config libvpx-dev libopus-dev libopusfile-dev

# MacOS
brew install libvpx pkg-config opus opusfile

# Windows
... not tested yet ...

And run

  • ./run_local.sh
  • The scripts includes build the binary using Go module

Documentation

FAQ

Credits

Contributor

Nguyen Huu Thanh
https://www.linkedin.com/in/huuthanhnguyen/

Tri Dang Minh
https://trich.im