Web-based Cloud Gaming service for Retro Game
Find a file
2019-04-11 02:05:17 +08:00
nes Update game boy 2019-04-08 20:01:14 +08:00
static Clean 2019-04-10 00:02:10 +08:00
ui Fix director.go after merge 2019-04-10 03:38:40 +08:00
util Remove unnecessary code 2019-04-06 01:05:07 +08:00
vpx-encoder Remove gl 2019-03-31 23:54:02 +08:00
webrtc Clean room with no sessions 2019-04-10 03:33:21 +08:00
Dockerfile Update pion package 2019-04-07 02:12:10 +08:00
main.go Clean room with no sessions 2019-04-10 03:33:21 +08:00
README.md Update read me 2019-04-11 02:05:17 +08:00

Cloud Gaming Service Lite

Cloud Gaming Service is an open source Cloud Gaming Service building on WebRTC.

With Cloud gaming, you can play any of your favourite NES game directly on your browser without installing it on your machine. It also brings modern online multiplayer gaming experience to classic NES game, so two people can play the game together . Joystick gaming is the past :P.

Feature

  1. Can play NES games directly from browser.
  2. Immediately startup, no need to install.
  3. Can multiplayer over internet. A person host a game and the other person can join the same game as 1st or 2nd player.
  4. Save (S) and Load (L) at any point in time.
  5. If you save the roomID, next time you can come back to continue play in that room.

Demo

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

Try the game

For the best gaming experience, please select the closest region to you.

Southeast Asia:

  • nes.webgame2d.com
  • nes.playcloud.games

US West:

  • usw.nes.webgame2d.com
  • usw.nes.playcloud.games

US East:

  • use.nes.webgame2d.com
  • use.nes.playcloud.games

Europe:

  • eu.nes.webgame2d.com
  • eu.nes.playcloud.games

Run on local

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

You can open port, so other person can access your local machine and play the game together.

Code structure

├── games: roms list, no code logic
├── nes: emulator internal
├── static: static file for front end
│   ├── js
│   │   └── ws.js: client logic
│   ├── gameboy.html: frontend with gameboy ui
│   └── index_ws.html: raw frontend without ui
├── ui
│   ├── director.go: coordinator of views
│   └── gameview.go: in game logic
├── vpx-encoder: vp8 encoding images -> video track
├── webrtc: peer to peer communication
├── main.go: integration between emulator + webrtc (communication) + websocket (signalling)
└── run_local.sh

Follow up

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

Credits

LICENSE

MIT License

Contributor

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

Tri Dang Minh
https://trich.im