Midnight Pub

Moonlight and Sunshine

~tetris

This a brief continuation of my previous post about internet over Coaxial.

(BTW: One thing I forgot to mention in that last post, is that even though the internet that enters my apartment is already restricted to 0-1000MHz, my router was still getting frequencies of above 1000MHz due to the MOCA active device on my network. It tried to interpret these as signals from my ISP and so spent literal hours trying to connect based on the assumption that it should use these frequencies.

The solution was to buy a MOCA PoE filter[0] just before the cable enters the router. That way only 0-1000MHz frequencies were reaching the router and the MOCA devices would only interact with each other¹. After that the router communicated with ISP within seconds.)

I now have a very stable very fast connection between the work room and the living room.

Streaming Media

This naturally facilitates one to stream video from one end of the house to the other with little latency. In this specific case: Gaming.

My SO is not a heavy gamer, but she watches enough YouTube videos where she develops at least somewhat of an interest in some games.

The work room has a decent desktop PC with a decent-ish graphics card, and so I decided to install the Sims4 on it and let her play it remotely in the living room (where the WiFi router is) via a tablet.

Nvidia's Gamestream

Nvidia invented a GameStream protocol that allows you record and stream your games as video to another device, another device that could use its own input devices to control the video game at the source.

That is, my Desktop would stream the video game using the GameStream protocol, and the tablet would receive the stream via another Nvidia app that would display the stream and allow one to control the game.

This protocol was relatively open and very easy to implement, so somebody wrote an open-source app called Moonlight[2], which could decode the GameStream protocol and provide input back to the source machine.

Moonlight

In the past, this worked really well. You could start your game on your Desktop, tell GameStream to start on the machine, and then you could play the game on your Android phone somewhere else in the apartment.

Android being a highly dressed up Linux, would support whatever input devices Linux would, so you could plus a mouse or a keyboard or even a gamepad to your smartphone using a small USB adapter, and you could actually play games that way on your phone. It was awesome.

Nvidia...

Then Nvidia, being Nvidia, decided to be dicks as usual[3]. They've decided to End-of-Life the GameStream protocol, and locked down any remaining stream access to the "Nvidia Geforce Experience", meaning you have to go through an external entity to negotiate a streaming protocol on your own LAN, and if you update your driver you might not even be able to stream anymore.

The reason being that they are really trying to push people only to their Shield devices, and can only really justify it if they offer streaming as an exclusive service[4], with the idea that you rent one of their cloud machines to play your games and then stream it to a Shield table or TV you bought from them.

This made the future of Moonlight less certain, and made game streaming almost an exclusively proprietary service.

Sunshine

Thankfully, open source saves the day again. Someone wrote their own GameStream implementation called Sunshine[5], which allows you to setup your own streaming server, and stream Games or even your entire Desktop with very little latency, and it will be picked up by Moonlight as a valid stream. Sunshine is not Windows-exclusive either, and works well⁶ on Linux and Mac too.

You can their pair Sunshine with your Moonlight device as previously and flawlessly play games as you normally would.

Summary

Moonlight and Sunshine are fantastic game streaming partners. My SO was able to play the Sims4 on the tablet in the living room without another machine in sight. The strong internet connection as enabled by the MOCA network made all of this possible.

Better yet, she can play this on the TV if she wants to since I have my Raspberry Pi hooked up to it, and moonlight have a client for embedded devices[8].

It's truly starting to feel like gaming is moving further and further away from these big tech giants, and I am happy to raise a middle finger to them in salute.

Footnotes

0: "Point of Entry" filter

1: Small footnote. The MOCA devices are quite noisy on the line, so if your neighbors are having issues watching Satellite TV, you might need to add another filter just before your apartment so that the MOCA signals just stay on your side of the cable. I wasn't able to do this because I could not locate the splitter for my apartment (it's buried in a wall somewhere).

2: Moonlight Stream

3: Linus Says FU to NVidia

4: GameStream is dead

5: Sunshine Server

6: Better even, as it supports input natively. For Windows, you need to install ViGemBus[7] to allow Moonlight to control the Windows input devices.

7: ViGemBus input library for Windows

8: Moonlight embedded

Write a reply

Replies

~inquiry wrote (thread):

Playing cards win again! ;-)