Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: I wrote an open source cloud gaming service by WebRTC and Golang (webrtchacks.com)
81 points by giongto35 on April 16, 2020 | hide | past | favorite | 30 comments


I recently had the unfortunate situation of watching my girlfriend struggle with doing her job (QC for a AAA game publisher) via RDP (and over a VPN).

I looked at Parsec as a solution and it.. didn't work.

Although watching her do normal things over the RDP/VPN combo was still painful, writing emails or using internal chat applications was incredibly latency ridden..

But it made me think very seriously about cloud resources and how we interact with them, especially when it comes to writing text...

Does anyone know of any IDE that is purely remote? as in you type locally and it's automatically syncing in the background on save?

The idea of running your unit tests and compile jobs in the cloud is really appealing, and you don't incur the latency of rendering the UI remotely.


Visual Studio (including Code) have live share, never tried it but seems to be what you're looking for: https://visualstudio.microsoft.com/fr/services/live-share/


> In VS Code, your browser will launch while a notification will appear launch asking you to sign in.

Sign into what? I was assuming this was a peer to peer solution and that I wouldn't be giving my code to a third party.


Here are a couple of more suggestions I’ve noticed the comments seem to have miss,

Eclipse Theia: https://theia-ide.org/ Basically, they repurposed VSCode and made it able to run from a web browser (and remotely).

Codeanywhere: https://www.codeanywhere.com/ AWS Cloud9 clone but not tied to AWS.


Going further are there any web Linux desktops? Like whole UI, text rendering and input is on a client's side browser. So also graphics with caching and video playback is just sending already encoded data through the wire. Video may need reencoding in case of non-web codecs though. It does not need to do any HTTPS, there is SSH, VPN, WireGuard and Zerotier.

WIP projects are also interesting for me.

Also I was thinking - would it be possible to at least have a virtual VAAPI driver that would send the encoded video straight over the connection and integrate it with something like Xpra? Because I had done some VPN/RDP like sessions via Xpra and videos are the biggest pain really.


Like Apache Guacamole? It sits between your client and server and turns the RDP/VNC connection to the server into a webapp for the client: https://guacamole.apache.org/

I tried it a few years ago and found it cumbersome to set up though.


No. Not desktop streaming in web browser. Btw Xpra also has an HTML5 backend.

More like gtk's broadway backend, but for the whole desktop with fully browser side rendering.


I don't know about purely remote, but I use Emacs, and I've been doing most of my work through TRAMP mode (which uses SSH to access a remote shell and load/save/list files).

I'm working with Clojure mainly right now, so I TRAMP into my large dev machine, and CIDER will automatically connect the interactive REPL, debugger, etc. through SSH rather than locally. All of the editor functionality; syntax highlighting, keys, extra modes etc.; is running on the local machine, but the running instance and the filesystem are remote. It's a good way to go.

The other thing I've done in the past is use Syncthing to sync the working directory between a remote and a local machine; but this can have some latency issues (it generally takes about a second for a saved file to sync, probably because of internal anti-thrashing timers in Syncthing), so TRAMP is much better.


"Visual Studio Online - Cloud-powered dev environments accessible from anywhere"

https://visualstudio.microsoft.com/services/visual-studio-on...

Is that what you mean?


What's the difference between a purely remote IDE vs ssh-ing into a server with VSCode? The latter is my current setup for a homework that requires multi-cpus.


How's the latency on that? - I'm considering doing the same. Any drawbacks?


When editing files, there's no really perceived latency because the files are cached locally. Only drawbacks is having pre-installed programs (on a shared server) and navigating through folders via a terminal.


> Does anyone know of any IDE that is purely remote? as in you type locally and it's automatically syncing in the background on save?

Googlers use such an IDE internally. Externally Amazon Cloud9 and gitpod.io are similar options.


In terms of IDEs, I think all of IntelliJ's have support for this kind of remote work. Or something close.

There's all sorts of ways to configure vim and a remote terminal to work like this, of you consider that an IDE.


I discovered Eclipse Che at the last DevNexus and thought it was fairly neat. https://www.eclipse.org/che/


AWS Cloud9 sounds like exactly what you're describing.

https://aws.amazon.com/cloud9/



"Last year, Google announced Stadia, and It blew my mind. That idea is so unique and innovative."

How is it unique and innovative if such services existed for over a decade (OnLive)?


There are quite a few attempts to that topic (Parsec Gaming, Shadow Gaming, ..)

I tried a few of them but as for latency relevant online gaming current solutions are rather meh.

For an old laptop I guess its alright and price for casual gaming is probably hard to beat (if renewing every 3-4 years hardware). But as with any cloud/rental after paying its gone.


Most of the initial innovations seem to be in the hardware, e.g. controllers that hop over your PC/console, game servers in edge nodes, etc. They're incremental improvements, but my latency on Stadia gets down to single-digits at times (though is usually low-mid double-digits), which is something I never saw with OnLive (not a direct comparison since I have better Internet now).

There's some interesting software innovations that may or may not be implemented (I'm not sure?), but I haven't heard of other streaming platforms doing things like running games at significantly higher framerates (to minimize the time between player input and game response) and predicting button presses to buffer a stream before they happen. Those seem like innovations in the space, even if they're under a terrible umbrella of a name ("negative latency").


> predicting button presses to buffer a stream before they happen

That sounds a lot like the server and client-side prediction (or p2p 'rollback') netcode that is in a lot of online games.


AWS Appstream has been around for many years and its pretty good. This presentation is from 2013.

https://www.gdcvault.com/play/1021482/Amazon-AppStream-New-G...


This is a really interesting technical write-up, but please no.

Adding more streaming to the cloud bullshit only adds dependencies, points of failure, costs and energy consumption. Especially when it's for playing games that can easily be emulated on any phone today.

Humanity's first goal should be to reduce its energy consumption! This is the opposite of the way forward.


In my view, it is to share and save hardware resources and hence reduce energy + material cost. It is the same as the way cloud provider optimizes resource by virtualization.


This is great, you may want to look at getting this to run on retro gaming handheld consoles such as r/Bittboy r/RG350/ r/SBCGaming.. I could definitely see me playing with a friend on a retro console with the multiplayer feature. Not sure if they have wireless capabilities, yet an interesting project nonetheless, thanks for the write up.


Those handheld consoles are different ecology. But with cloudretro you can run it on mobile browser. It offers the same comfortability (Unless you like the feeling of button and widescreen :D )


Regarding Windows 10 in your browser, Azure Bastion rolled out recently and does exactly that: https://azure.microsoft.com/nl-nl/services/azure-bastion/


It's good that they're picky about which WebRTC implementation they use. I've found that Google's tree isn't necessarily the best sort of thing for streaming video games. I think Parsec's R&D into the situation is a good fit for the use case.


> the Golang garbage collector is uncontrollable, so sometimes there are some suspicious long pauses. This greatly hurts the realtime-ness of this streaming application.

That doesn't sound ... inspiring confidence?


I also don't know what that's referring to. There's usually quite a lot you can do to optimize for GC here. Depending on the root cause, you can create fewer allocations using buffers, arenas, etc and you can also trigger manual collections or disable collection for certain intervals. Hard to know what limits he ran into without more detail.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: