CodeBlocks

Thursday, 22 May 2014

Steam In-Home Streaming

A few hours ago Valve released the once beta only Steam In-Home Streaming to everyone. Steam In-Home Streaming allows one to remotely play a game via any machine that supports the steam client. That it and it is really that simple.

How it works
Now you might think there is some magic at play with this but in reality the implementation is very simple. What In-Home Streaming does is create a Client Host setup the host being the machine that does the heavy lifting and the client receives the end result of said heavy lifting.

In-Home Streaming will launch the game on the host machine as if someone is physically going to play on it, it then capture the monitor view(not the end product of the GFX), then compresses it with H264 and video streams it to the client. This means that if you alt-tab the Host machine the desktop will still be streamed to the client. So really the client machine becomes a duplicate display of the host machine. 

This does have some drawbacks.

How to setup
Setting it up is really simple
  1. First install steam on both host and client devices make sure both are running the latest version.
  2. Run steam client on both machines
  3. Log into the same account on both steam clients
  4. On the client machine select the game and click stream.
Note the host machine HAS to be logged into a user account.

How well does it work
Now this will all depend on various factors. Since there are 4 bottlenecks at play
  1. Rending time - The time it takes for the host machine to render a frame
  2. Encoding time - Time it takes to compress frame to H264
  3. Network - The time it will take to correctly send the Frame data
  4. Decode time - The time it takes to decode a Frame
Now I tested this on both a wired and wireless machine that  would in no way be capable of running the game. The performance does depend on the games some games stream better than others, I'm sure CPU intense games will suffer more due to the H264 encoding overhead.

The games I tested were NFS Hot Pursuit and HL2, on average the wireless connection did appear to drop frames from time to time which in NFS was kinda annoying, it did perform well it could just... be better. The wired connection performed better dropping less frames due to network issues and overall performed really well and very playable. You do from time to time notice a latency issue but overall it worked really well and very very simple. 

Conclusion 
The approach Valve went for is a very simple but limited implementation of game streaming that for advance user might be a bit of a crux as you can't really create a server to host games to the level some would want to. 

You also can't change the codec settings which for me at least is a very lame, I'd love to be able to play around and see how influences the gameplay.

In-Home Streaming does what it says and it works very easily with very few hickups which is great for quickly setting up a home entertainment system, but it lacks advance options and the ability to scale beyond a mere slave for the client, the client essentially renders the host machine unusable.