All Projects → giongto35 → Cloud Morph

giongto35 / Cloud Morph

Licence: mit
Decentralize, Self-host Cloud Gaming/Application

Programming Languages

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

Projects that are alternatives of or similar to Cloud Morph

Meething
dWebRTC Video Meetings MESH/SFU hybrid using GunDB, MediaSoup and Beyond!
Stars: ✭ 303 (+46.38%)
Mutual labels:  webrtc, decentralized
Awesome Live Stream
Webrtc && Nginx && DASH && Quic 学习资料收集,持续更新中
Stars: ✭ 290 (+40.1%)
Mutual labels:  ffmpeg, webrtc
docker-nvidia-glx-desktop
MATE Desktop container designed for Kubernetes supporting OpenGL GLX and Vulkan for NVIDIA GPUs with WebRTC and HTML5, providing an open source remote cloud graphics or game streaming platform. Spawns its own fully isolated X Server instead of using the host X server, therefore not requiring /tmp/.X11-unix host sockets or host configuration.
Stars: ✭ 47 (-77.29%)
Mutual labels:  webrtc, wine
Rtmp Ts Dash Webrtc
👾 音视频解决方案 Audio and video solutions(AV1)
Stars: ✭ 129 (-37.68%)
Mutual labels:  ffmpeg, webrtc
Rtp Streamer
rtp record and rtp streamer
Stars: ✭ 60 (-71.01%)
Mutual labels:  ffmpeg, webrtc
Janus Webrtc Gateway Docker
Perfect Docker Image for Media Streaming Expert User ( https://github.com/meetecho/janus-gateway )
Stars: ✭ 582 (+181.16%)
Mutual labels:  ffmpeg, webrtc
Dockerfiles
Optimized media, analytics and graphics software stack images. Use the dockerfile(s) in your project or as a recipe book for bare metal installation.
Stars: ✭ 98 (-52.66%)
Mutual labels:  ffmpeg, webrtc
Analysisavp
音视频学习,相关文件格式/协议分析。h264 nalu aac adts flv
Stars: ✭ 38 (-81.64%)
Mutual labels:  ffmpeg, webrtc
Mediasoup3 Record Demo
Simple Record Demo using Mediasoup 3 and GStreamer
Stars: ✭ 84 (-59.42%)
Mutual labels:  ffmpeg, webrtc
Meshenger Android
P2P Audio/Video calls over local networks. No server or Internet access needed.
Stars: ✭ 152 (-26.57%)
Mutual labels:  webrtc, decentralized
Nextcloud Spreed Signaling
Standalone signaling server for Nextcloud Talk.
Stars: ✭ 201 (-2.9%)
Mutual labels:  webrtc
Ascii
👾 ASCII Roulette :: ascii art video chat on the cli
Stars: ✭ 202 (-2.42%)
Mutual labels:  webrtc
Peer Base
Build real-time collaborative DApps on top of IPFS
Stars: ✭ 208 (+0.48%)
Mutual labels:  decentralized
Ffmpeg Android Maker
Contains a script that assembles FFmpeg library for Android
Stars: ✭ 207 (+0%)
Mutual labels:  ffmpeg
Mediastreamrecorder
Cross browser audio/video/screen recording. It supports Chrome, Firefox, Opera and Microsoft Edge. It even works on Android browsers. It follows latest MediaRecorder API standards and provides similar APIs.
Stars: ✭ 2,381 (+1050.24%)
Mutual labels:  webrtc
Videostreamer
Stream video (e.g. RTSP) to an HTML5 video element (MP4)
Stars: ✭ 208 (+0.48%)
Mutual labels:  ffmpeg
Webtty
Share a terminal session over WebRTC
Stars: ✭ 2,380 (+1049.76%)
Mutual labels:  webrtc
Ovenplayer
OvenPlayer is Open-Source HTML5 Player. OvenPlayer supports WebRTC Signaling from OvenMediaEngine for Sub-Second Latency Streaming.
Stars: ✭ 196 (-5.31%)
Mutual labels:  webrtc
Mediadevices
Go implementation of the MediaDevices API.
Stars: ✭ 197 (-4.83%)
Mutual labels:  webrtc
Owt Client Native
Open WebRTC Toolkit client SDK for native Windows/Linux/iOS applications.
Stars: ✭ 213 (+2.9%)
Mutual labels:  webrtc

Decentralized, Self-hosted cloud gaming/cloud application service.

Introduction

CloudMorph is a decentralized, self-hosted cloud gaming/cloud application platform. User can host their cloud gaming solution with minimum configuration. By leveraging the ease of deployment, CloudMorph goal is to build a decentralized cloud-gaming network with providers and consumers.
To bring a scalable, performant and universal cloud gaming solution, CloudMorph has to cope with many technical challenges in Low Latency Streaming, Windows application Virtualization in headless server, OS event simulation, Video/Audio encoding pipeline and optimization, NAT traversal, P2P network structurization, etc. Unlike CloudRetro, which is a completed Cloud Gaming solution for Retro Game hosted on a dedicated cloud infrastructure, CloudMorph decentralized the hosting to users for any Windows Games/Applications by a generic and modularized solution.

Discord: Join Us

Demo

Video Demo: https://www.youtube.com/watch?v=fkOpOQ-HwFY

Screenshot Screenshot
screenshot Diablo II-US screenshot Starcraft
screenshot RoadRash screenshot Browse and Switch games

CloudMorph Demo

  • Cloud Diablo SG (Demo of Collaborative play Diablo running on Singapore server using CloudMorph).
  • Cloud Diablo US (Demo of Collaborative play Diablo running in US server). Switch applications using the sidebar on the left.

Getting Started

Experience deployment on your own:

  • Run setup_remote.sh 111.111.111.111 with 111.111.111.111 is your host. What you will get is a Notepad hosted on your remote machine. More details about deployment is at below.

Design Goal:

  1. Cloud gaming: Game is run in a remote cloud instance. Video/Audio are streamed to user in the most optimal way using advanced encoding technology.
  2. Cross-platform compatibility: App is run on web browser, the most universal built-in that can fit in multiple platforms Desktop/Mobile. No console, plugin, external app or devices are needed.
  3. Deployment Simplicity: No API/ interface integration needed from application. One line script deployment to a server to get work done.
  4. Mesh network: Providers-Consumers over Peer To Peer communication. After joining the network, Provider's Application is discoverable and launched with one click.
  5. Modularizable: A concise technical stack to develop/deploy for cloud gaming/ cloud application service.
  6. Scalable: Able to provision new machines, and scale on headless machines cluster horizontally.

Deployment

Foremost, we need an Ubuntu instance with a public network firewall. For example, we can use the given script/create_do.sh to create a digital ocean instance. Then we put below 4 in the same folder:

  1. config.yaml: app config, the app configuration
  2. wine: whole wine folder from .wine. If there is no wine folder, the deployment will use the default .wine from installation.
  3. apps: a folder contains the app you want to deploy. For example, DiabloII. If your application is from other folder ex "Program Files", we can leave it empty. We just need to configure config.yaml to point to correct app path
  4. setup_remote.sh: a script to deploy your application to server

Run:

Deployment with Lutris

  • Lutris eases the installation of a game on Linux. The recommended flow is to install game with Lutris and copy produced wine environment to Cloud Morph.

Deployment Example

  • script/example contains example applications configuration. Note: /apps is left empty due to copyright.

Development

The service is based on Golang, C++, and Linux X11 utility tools (Xvfb, ffmpeg). You can set up all dependencies with setup.sh. After that, you can run the go server with

  • go run server.go

Access to your local at

  • localhost:8080

Note: the wine application is run in Docker. You can run it without docker by changing run-wine.sh to run-wine-nodocker.sh in server.go for easier debugging.

Design

CloudApp Core

screenshot

  1. When a Web Service starts, Application Container, named "CloudApp Core", is spawned. Inside the container there are Application + Virtual Display/Audio + Windows Event Simulation Utility. Multiple Containers can be spawned on demand.

  2. A P2P connection will be setup between a client and service. WebRTC Pion is a great library to handle WebRTC.

  3. Input captured from Client is sent to Web Service using WebRTC Data Channel (UDP)

  4. Web Service will send received input events to Virtual Machine over a socket.

  5. The utility (syncinput.exe) will listen to the input events and simulates equivalent Windows OS event to Wine Application through WinAPI.

  6. Application screen/ Audio is captured in a Virtual Display Frame Buffer (XVFB)/ Virtual Audio (PulseAudio), which is later piped to FFMPEG.

  7. FFMPEG encode the Video Stream to VPX RTP stream and Audio Stream to Opus stream.

  8. Overall, "CloudApp Core" module receives Input as WebSocket event and Output as RTP stream. It is packaged in container with the interface declared at core/go/cloudapp.

Decentralize

screenshot

  • If the configuration in config.yaml includes discoveryHost attribute, application will be discorable by everyone in Discovery list in sidebar.
  • In this flow, Client will query discovery host list of joinable host, then the client can pick any application in the discovery list.

Detailed Technology

wiki

Real-World Usecase

For Developers
  • Experience playing/hosting Cloud Gaming on their own.
  • Plugable Cloud gaming module: The cloud gaming core is packaged and virtualized to be easily extended to different tech stacks. E.g Python, Java ...
For Consumers.
  • Multi-platform: be able to run web-browser, mobile web.
  • Collaborative Gaming: Multiple people plays the same game. Ex. Twitch play pokemon, or like in http://clouddiablo.com/.
For Providers
  • Playable Teaser: Application's teaser is playable, so users can experience new game directly on Browser.

Road Map - Request for Help

  • UI improvement
  • Full Dockerization. Currently server is not run in Container.
  • Port C++ Window API to Rust.
  • GPU acceleration. - Integrate with FFMPEG job.
  • Multiplex application sessions. Currently, only collaborative mode is supported, which serves all application's sessions from the same single instance.
  • Performance optimization.
  • Web Mobile controller supprt. Currently, mouse click is already simulated.
  • Packaging frontend as a plugin that can be imported in any Webpage.
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].