Web-based Cloud Gaming service for Retro Game
Find a file
2019-09-08 15:25:02 +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 Update encoding checking at webrtc initialization 2019-09-08 15:25:02 +08:00
cws Encoder based on platform (#80) 2019-09-08 13:18:12 +08:00
document Remove old nes emulator (#78) 2019-09-04 02:21:46 +08:00
emulator Remove old nes emulator (#78) 2019-09-04 02:21:46 +08:00
encoder Add H264 codec (#71) 2019-08-23 03:41:16 +08:00
h264encoder Fixed bug on H264 when packets are limited 2019-09-07 19:03:12 +08:00
libretro Remove old nes emulator (#78) 2019-09-04 02:21:46 +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 encoding checking at webrtc initialization 2019-09-08 15:25:02 +08:00
util Update encoding checking at webrtc initialization 2019-09-08 15:25:02 +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 Update encoding checking at webrtc initialization 2019-09-08 15:25:02 +08:00
worker Update encoding checking at webrtc initialization 2019-09-08 15:25:02 +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 Encoder based on platform (#80) 2019-09-08 13:18:12 +08:00

CloudRetro

Open-source Cloud Gaming Service For Retro Games http://cloudretro.io

Introduction

This project aims to bring the most modern and convenient gaming experience to user as well as experiement the performance of Cloud-gaming technology. 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.

*Because there are limited servers in US East, US West, Eu, Singapore, you may experience some latency issues in particular regions. You can try hosting your own service following the instruction the next section to have a better sense of smoothness.

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

Screenshot Screenshot
screenshot screenshot
screenshot screenshot

Feature

  1. Cloud gaming: Game logic and storage is hosted on cloud service. It reduces the cumbersome of game initialization. Images and audio are streamed to user in the most optimal way.
  2. Cross-platform compatibility: The game is run on web browser, the most universal built-in app. No console, plugin, external app or devices are needed. Chrome with the latest version and fully WebRTC support is recommended for the game.
  3. Emulator agnostic: The game can be played directly without any extra effort to set up the gaming emulator or platform.
  4. Vertically scaled: The infrastructure is designed to be able to scale under high traffic by adding more instances.
  5. Cloud storage: Game state is storing on online storage, so you can come back to continue playing in a game.
  6. Online multiplayer: Bring online multiplayer gaming to retro games. (In Road map)
  7. Collaborate gameplay: Follow the idea of "Twitch Plays Pokemon", multiple players can play the same game together (In Road map)

Run on local by Docker

You try running the server yourself by running make run-docker. It will spawn a docker environment and you can access the service 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 ...

Because coordinator and workers needs to run simulateneously. Workers connects to coordinator.

  1. Script
  • make run
  • The scripts includes build the binary using Go module
  1. Manual
  • go run cmd/main.go -overlordhost overlord - spawn coordinator
  • go run cmd/main.go -overlordhost ws://localhost:8000/wso - spawn workers connecting to coordinator

Wiki

FAQ

Credits

Contributor

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

Tri Dang Minh
https://trich.im