Gaming over LAN, VNC alternative?

Okay, I've done more than a little homework about this and am starting to think that the world is somehow opposed to this idea.

I have a laptop in my house, SB Core i3 with a GMA HD GPU which is utterly terrible for everything visual, and I would like to stream video from my desktop rig of a 3D nature (ruling out RDP and other hook based protocols).

Most people's first answer to similar threads is either bandwidth or processing power related. I've been trying first and foremost over a Gigabit lan, and my desktop rig has an overclocked 3930k so I am of the opinion that there SHOULD be a balance between CPU grunt and bandwidth that would allow me to get at least 20FPS of fullscreen refresh. So far I cannot using TightVNC, testing by playing a video in fullscreen on the host machine.

So to sum things up, with over 30x the bandwidth of OnLive, how exactly do I create an even choppy level of video feed over LAN in my own home? Is it possible and how?


Solution 1:

A software solution will inherently contain lots of lag due to the following:

  • Reading data from the GPU's framebuffer is very slow.
  • Even with a target bitrate around 80% of gigabit ethernet (you don't want 100% utilization due to the impairments resulting from saturation), most video codecs will use up an enormous amount of CPU to encode 1080p in real-time. Even if you had GPU-assisted encoding, you'd then be sapping processing power away from the very device that is rendering your game, probably lowering your game's framerate by a lot, due to most GPUs' poor ability of multitasking between separate programs.
  • The sustained gigabit ethernet I/O itself -- just sending the finished data across the wire -- consumes significant CPU due to interrupts. At the expense of some latency, you could use interrupt moderation, a feature of newer server ethernet chipsets, to reduce CPU usage.

If you want it to be smooth and enjoyable you should use a capture card.

Here is an example of one such device: http://www.epiphan.com/products/frame-grabbers/vga2ethernet/

This device has the general concept of:

  • You plug the device into your graphics card
  • You plug your monitor into the device
  • You plug the device's ethernet output into a computer or router
  • You access the device's web interface over ethernet, and you have streaming video, lossless, fullscreen if you want

Because the device uses dedicated hardware to encode the frames and stream them over ethernet, it will be very smooth and high FPS and reliable. It also greatly simplifies your software setup, eliminating the need for expensive pipeline solutions on your gaming rig.

If you don't want to spend any money, and can live with extreme lag and very low FPS, you can try something like writing a pipeline in Gstreamer or VideoLAN (VLC) to capture the local framebuffer, encode it in some video codec, and stream it via Shout or RTP or RTSP or similar streaming protocol, then download/stream it from your slower computer. But as I warned you, this will be slow.

Solution 2:

You can use the in home streaming from steam. Mine works VERY well with my desktop connected via Gigabit LAN, and the laptop on 5Ghz AC. Just remember to go through the settings and check the box to prioritize the steam traffic while streaming.

Solution 3:

Steam Remote Play is definitively an option. Been playing a lot of times to e.g. Rocket League. If you have good LAN connection on both sides, you are good to go. Even can plug the gamepad on laptop.