Kodi Community Forum

Full Version: Game Streaming / Cloud Gaming - Remote CPU/GPU process + network stream games
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Starting a new thread for this concept since garbear is back and posted some ideas about adding Game Streaming / Cloud Gaming (ometimes refered to as gaming on demand) functionality to RetroPlayer,

http://en.wikipedia.org/wiki/Cloud_gaming

The basic idea is that you have a more powerful computer on your network (on internet) with faster CPU/GPU that actually does all or most of grunt work and then you basically either just try to do low-latency streaming over the network as a captured video stream with hardware encoding and a low-latency player, or do can go a other way and just do partial pre-processing and then actually stream the game data and finish the rendering on the target machine, which obviously if much harder to achieve.

(2014-12-12, 00:42)garbear Wrote: [ -> ]I'm thinking of adding a TCP transport to the Game API. this would have two benefits: multiplayer support, and the ability to run a libretro core on a different machine. so you could run a core on a fast computer, and either do multiplayer - by sending the video/input to a RPi client - or simply run the core in the background and do single player on the RPi.

Not sure how well this would work for 3D rendering, maybe the host could render the graphics and loopback the RGB data so it could be sent to a client...
There are already several other open source projects that offer Game Streaming, not sure if any of their core concepts or even source code could be reused for this in order to add it to RetroPlayer?


Examples of open source open source projects that offer Cloud Gaming / Game Streaming:

OBS (Open Broadcaster Software) also offer GPU-based game capture for high performance game streaming to video and compatible with multiple game streaming protocols
https://obsproject.com
https://github.com/jp9000/OBS

GamingAnywhere looks very promising at first glance
http://gaminganywhere.org
https://github.com/chunying/gaminganywhere

Limelight which is suppose to be an open source implementation of NVIDIA's GameStream protocol, downside is that its written in Java and looks only to be compatible with Nvidia GPUs
http://limelight-stream.com
https://github.com/limelight-stream


In addition, maybe RakNet comprehensive C++ networking engine can also be good to hbe part of the the implementation of Cloud Gaming / Game Streaming here too regarless which backend engine is choose as it can be used for other stuff as well that would also be very interesting for RetsroPlayer and Kodi?

http://www.jenkinssoftware.com/features.html
https://github.com/OculusVR/RakNet

RakNet is already being discussed here for the other stuff that it can do related to networked gaming http://forum.kodi.tv/showthread.php?tid=201868
More on RakNet middleware enabling parts for Cloud Gaming
http://www.jenkinssoftware.com/raknet/ma...uting.html

Bit old videos but here is RakNet middleware enabling parts for Cloud Gaming four years ago


RakNet apparently even support cloud hosting services via Rackspace Cloud.
http://www.jenkinssoftware.com/raknet/ma...sting.html
Before we go choosing a networking engine, we should decide on what we want. If 99% of XBMC installs can run most emulators, or are on a LAN with a computer that can, what do we gain by moving emulation into the cloud? The ability to stream media is definitely not something that xbmc lacks, but if xbmc could easily encode video, it would have already been implemented for UPnP transcoding.

There's a lot of interest in multiplayer (or maybe it's all just you Wink ) so I'm thinking of bumping up the priority of this feature. After i conquer input, rebase on Helix and assist airwulf with GL (whew), I'll consider focusing on network gaming. Tool selection, of course, comes *after* we've nailed down the features we want.
Although I initially was very interested, another post by garbear actually made me doubt whether this would be useful in a retroplayer situation. The reason is Moore's law and the systems that retroplayer is focused on. I'd think any modern x86 system would have no trouble running any of the emulators, and ARM is catching up fast as well.

Can someone provide an overview of the emulators that will not work on a ARM (e.g.RPi) system?
The older consoles (NES SNES GBA Sega etc) will run without trouble on the raspberry pi.
But the "newer" consoles n64 and psx will be harder, but ive seen youtube clips of ppl who got it working.
(With retroarch that is, i don't know if there will be performance diiffrence between kodi-retroplayer and retroarchHuh)

Libretro is working on a psp core (based on ppsspp emulator), this core asks for a lot of performance.
Some are compiling it for the raspberry, but without any success. They are strugling with opengles 2.0 and the low CPU freq.

So a cloud hosting feature wouldn't be that necessary imo.
(Although it's cool :-p)
Although remote gaming is a nice to have feature, lets get a solid implementation of local gaming working and into mainline first IMO. Even the Rasberry PI can run some emulators fairly well and the next release of retroarch should be bringing with it a bunch of additional lightweight emulators as the PSP is now supported as a target and is less powerful than the PI.
Personally I'd be more interested in the save games being "streamable" from a network share so I can stop my game on one system and resume on another like I do videos with a the mysql database.
Now there's a cool idea. Although it's true that i'm not keen on moving emulation into the cloud, the cloud is a perfect place to store SRAM files and save states. Maybe OwnCloud and Dropbox integration for saving games?
Personally I'm actually not really interested in Game Streaming / Cloud Gaming at all myself, I just thought of it as another use for RakNet when garbear mentioned in, as personally I'm really only interested in multi-player across both local-network and the internet, as described here http://forum.kodi.tv/showthread.php?tid=201868

I just think that it would be extremely cool and fun to play old retro two-player games like Double Dragon over the internet, similar to new game consoles.

The multi-player concept described in that other thread is where the idea of using RakNet came from originally, then I just though that maybe RakNet could also be re-purposed for other network functions too where the main need to to share information between multiple clients using multiple personal accounts.

If implemented support for decentralized multi-player then you also re-purposed RakNet for other non-game related network functions as well, like stop video playback on one machine one one machine and restart that video playback bookmark on a other machine without the need for your own centralized server at home.
Just wanted to say that I have used this here https://github.com/limelight-stream with great success. When I want to game a PC game but not sit in front of my desktop computer.
Sure, PVR add-ons can stream AV to XBMC from PVR backends. Why can't game add-ons stream AV/input using limelight? I'll make sure the Game API allows for this, and just like how people came together to write our many PVR clients, someone will surely come along and write a limelight client.
(2014-12-12, 13:39)garbear Wrote: [ -> ]There's a lot of interest in multiplayer (or maybe it's all just you Wink ) so I'm thinking of bumping up the priority of this feature.

Add myself to the list of interested parties! Being able to play Super Mario Bros and Contra III with my remote buddies?! *drools*

Then we would just need bluetooth and Opus/VOIP support so we can trash talk too Rofl
Bumping this thread because of the GSOC project discussion here

http://forum.kodi.tv/showthread.php?tid=220421