All Projects → giongto35 → Cloud Game

giongto35 / Cloud Game

Licence: apache-2.0
Web-based Cloud Gaming service for Retro Game

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Cloud Game

Nile.js
Server
Stars: ✭ 1,757 (+27.87%)
Mutual labels:  webrtc, distributed
Toho Like Js
Touhou style danmaku shooter game which runs on your chrome.
Stars: ✭ 127 (-90.76%)
Mutual labels:  game, webrtc
Enslavism
A framework to manage distributed WebRTC servers that communicate with browser clients
Stars: ✭ 143 (-89.59%)
Mutual labels:  webrtc, distributed
Pikachu Volleyball P2p Online
Pikachu Volleyball peer-to-peer online via WebRTC data channels
Stars: ✭ 160 (-88.36%)
Mutual labels:  game, webrtc
Rustynes
👾 An NES emulator by Rust and WebAssembly
Stars: ✭ 399 (-70.96%)
Mutual labels:  game, nes
Game Server
Distributed Java game server, including cluster management server, gateway server, hall server, game logic server, background monitoring server and a running web version of fishing. State machine, behavior tree, A* pathfinding, navigation mesh and other AI tools
Stars: ✭ 916 (-33.33%)
Mutual labels:  game, distributed
Nes Rust
NES emulator written in Rust + WASM
Stars: ✭ 141 (-89.74%)
Mutual labels:  nes, webrtc
DBMSology
The Paper List on Design and Implmentation of System Software
Stars: ✭ 67 (-95.12%)
Mutual labels:  distributed, cloud-computing
Summer
这是一个支持分布式和集群的java游戏服务器框架,可用于开发棋牌、回合制等游戏。基于netty实现高性能通讯,支持tcp、http、websocket等协议。支持消息加解密、攻击拦截、黑白名单机制。封装了redis缓存、mysql数据库的连接与使用。轻量级,便于上手。
Stars: ✭ 336 (-75.55%)
Mutual labels:  game, distributed
Networked Aframe
A web framework for building multi-user virtual reality experiences.
Stars: ✭ 803 (-41.56%)
Mutual labels:  game, webrtc
Vett
P2P Dots & Boxes game with WebRTC & WebTorrent
Stars: ✭ 49 (-96.43%)
Mutual labels:  game, webrtc
Laines
Cycle-accurate NES emulator in ~1000 lines of code
Stars: ✭ 1,365 (-0.66%)
Mutual labels:  nes
Opendiablo2
An open source re-implementation of Diablo 2
Stars: ✭ 10,057 (+631.95%)
Mutual labels:  game
Nni
An open source AutoML toolkit for automate machine learning lifecycle, including feature engineering, neural architecture search, model compression and hyper-parameter tuning.
Stars: ✭ 10,698 (+678.6%)
Mutual labels:  distributed
Openrct2
An open source re-implementation of RollerCoaster Tycoon 2 🎢
Stars: ✭ 10,115 (+636.17%)
Mutual labels:  game
Micro Racing
🚗 🏎️ 🎮 online 3D multiplayer neural networks based racing game
Stars: ✭ 100 (-92.72%)
Mutual labels:  game
Foundatio
Pluggable foundation blocks for building distributed apps.
Stars: ✭ 1,365 (-0.66%)
Mutual labels:  distributed
Kamailio
Kamailio - The Open Source SIP Server for large VoIP and real-time communication platforms -
Stars: ✭ 1,358 (-1.16%)
Mutual labels:  webrtc
Nuvie
Nuvie - New Ultima VI Engine
Stars: ✭ 99 (-92.79%)
Mutual labels:  game
Openpanzer
Javascript/HTML5 rewrite of Panzer General 2 game
Stars: ✭ 98 (-92.87%)
Mutual labels:  game

CloudRetro

Build Latest release

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://github.com/giongto35/cloud-morph: My current focus on generic solution for cloudgaming

Introduction

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.

Announcement

(Currently, I'm working on CloudMorph: It offers more generic solution to run any offline games/application on browser in Cloud Gaming approach: https://github.com/giongto35/cloud-morph)

Try the service at

Single play: http://cloudretro.io
Direct play an existing game: Pokemon Emerald

*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
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 using advanced encoding technology.
  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.
  3. Emulator agnostic: The game can be played directly without any extra effort to set up the gaming emulator or platform.
  4. Collaborate gameplay: Follow the idea of crowdplay(TwitchPlaysPokemon), multiple players can play the same game together by addressing the same deeplink. The game experience is powered by cloud-gaming, so the game is much smoother. Check CrowdPlay section
  5. Online multiplayer: The first time in history, you can play multiplayer on Retro games online. You can try Samurai Showndown with 2 players for fighting game example.
  6. Horizontally scaled: The infrastructure is designed to be able to scale under high traffic by adding more instances.
  7. Cloud storage: Game state is storing on online storage, so you can come back and continue playing your incomplete game later.

Development environment

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

Install Dependencies

# Ubuntu / Windows (WSL2)
apt-get install -y make gcc pkg-config libvpx-dev libx264-dev libopus-dev libopusfile-dev libsdl2-dev

# MacOS
brew install pkg-config libvpx x264 opus opusfile sdl2

# Windows (MSYS2)
pacman -Sy --noconfirm --needed git make mingw-w64-x86_64-{gcc,pkg-config,dlfcn,libvpx,x264-git,opusfile,SDL2}

Because the coordinator and workers need to run simultaneously. Workers connect to the coordinator.

  1. Script
  • make dev.run
  • The scripts spawns 2 processes one in the background and one in foreground
  1. Manual
  • Need to run coordinator and worker separately in two session
  • go run cmd/coordinator/main.go - spawn coordinator
  • go run cmd/worker/main.go --coordinatorhost localhost:8000 - spawn workers connecting to coordinator

Additionally, 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.

Run with Docker

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.

Configuration

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.

Technical Document

High level Worker internal
screenshot screenshot

FAQ

Crowd Play, play game together

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 deeplink to your current game.


Synchronize a game session on multiple devices

Contribution

We are very much thankful to everyone who contributes to the project:

Credits

Art

Main Contributor

Sergey Stepanov
https://github.com/sergystepanov/

Author

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

Tri Dang Minh
https://trich.im

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].