Web-based Cloud Gaming service for Retro Game
Find a file
trichimtrich 4721db201e Update new frontend (#38)
* WIP

* fix crlf

* fix crlf

* new gesture, menu, tooltip, share

* WIP share

* clear dusties and put magic

* oops

* Remove fade

* Update js behaviour
2019-05-25 13:16:32 +08:00
cmd Update new frontend (#38) 2019-05-25 13:16:32 +08:00
config Worker auto reconnect (#34) 2019-05-23 19:23:45 +08:00
cws Use different uuid package 2019-05-24 23:56:03 +08:00
document Update new frontend (#38) 2019-05-25 13:16:32 +08:00
emulator use for to wait channel 2019-05-20 16:00:09 +08:00
overlord Update new frontend (#38) 2019-05-25 13:16:32 +08:00
static Update new frontend (#38) 2019-05-25 13:16:32 +08:00
util Allocation inplace 2019-05-15 02:52:00 +08:00
vpx-encoder Worker listen to random port so we can run multiple worker 2019-05-21 23:54:31 +08:00
webrtc Use go mode + use pion v2 (#39) 2019-05-25 12:10:04 +08:00
worker Update new frontend (#38) 2019-05-25 13:16:32 +08:00
.gitattributes Update new frontend (#38) 2019-05-25 13:16:32 +08:00
.gitignore Worker auto reconnect (#34) 2019-05-23 19:23:45 +08:00
Dockerfile Use go mode + use pion v2 (#39) 2019-05-25 12:10:04 +08:00
go.mod Use go mode + use pion v2 (#39) 2019-05-25 12:10:04 +08:00
go.sum Use go mode + use pion v2 (#39) 2019-05-25 12:10:04 +08:00
LICENSE Update LICENSE 2019-04-11 02:13:48 +08:00
pogo Use go mode + use pion v2 (#39) 2019-05-25 12:10:04 +08:00
README.md Use different uuid package 2019-05-24 23:56:03 +08:00
run_local.sh Use go mode + use pion v2 (#39) 2019-05-25 12:10:04 +08:00
run_local_docker.sh Use go mode + use pion v2 (#39) 2019-05-25 12:10:04 +08:00

POGO, Web-based Cloud Gaming Service

SEA: http://cloud.webgame2d.com | US West: http://us.cloud.webgame2d.com (not hosted)| US East: http://use.nes.webgame2d.com (not hosted)| Europe: http://eu.nes.playcloud.games (not hosted) For the best gaming experience, please select the closest region to you.

POGO is an open source Cloud Gaming Service building on WebRTC using browser as the main platform.

POGO stands for "POcket Gaming Online" aims to bring the most convenient gaming experience to gamer. You can play any games on your browser directly, which is fully compatible on multi-platform like Desktop, Android, IOS. This flexibility enables modern online gaming experience to retro games starting with NES in this current release.

Note: The current state of cloud gaming service lite are not optimized for production. The service will still experience lag in the case of heavy traffic. You can try hosting your own service following the instruction in the next session.

screenshot

Demo

https://www.youtube.com/watch?v=qkjV2VIwVIo

Feature

  1. Cloud gaming: Game logic is handled in server and streamed to user.
  2. Cross-platform compatibility: The game is run on webbrowser, the most universal builtin app. No console, external app or devices are need.
  3. Verially scaled: Services are distributed. The closest server with highest free resource will be assigned to user. (In progress)
  4. Collaborative hosting: this is our invented term refering to the whole community can contribute to host the platform. Whenever the server is hosted and able to connect to the coordinator, it can join the cloud-gaming network and Collaboratively serve prod traffic.
  5. Local streaming: If you host a server on your local machine and play game on other device close to that, the game will automatically detect running local server and serve the traffic.
  6. Cloud storage: Game state is storing on an 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

Install dependencies

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

# MacOS
brew install libvpx pkg-config

# Windows
...

And golang dependencies

  • go get github.com/pion/webrtc/
  • go get github.com/gorilla/websocket
  • go get gopkg.in/hraban/opus.v2
  • go get github.com/gofrs/uuid
  • go get cloud.google.com/go/storage

And run

  • ./run_local.sh

Collaborative hosting

  • go run cmd/main.go -overlordhost cloud.webgame2d.com - start game workers (in charge of peerconnection) connecting to cloud-game network.

Documentation

Design Doc Implentation

Follow up

This project demos the simplest cloud game with NES. Integrating with other emulator like GBA, NDS will also be possible. I'm welcome for the contribution.

Credits

Contributor

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

Tri Dang Minh
https://trich.im