Invite via Email
Valve has launched the initial phase of beta testing for their new Steam In-Home Streaming service. I have no clue how many people go into this first phase, but I was lucky enough to get invited. I was at work today and casually checked email from my phone. To my excitement, this popped up in my inbox.
If you got invited, then you will likely receive a similar email. It comes from the address “email@example.com” if you’re curious. It doesn’t ask for any usernames, passwords, or any other Steam information, so don’t fall for any scams that people try to send you.
The email will have links to a Steam Support article with answers to some common questions, how to get setup, and how to get additional help. I highly suggest reading the support article and visiting the main streaming page.
All my tests are going to be with mouse, keyboard, and touchpad (on the laptop). I don’t have a proper controller to test controller input.
Router: Linksys WRT54GL (10/100M ethernet / 54Mbps wireless)
||Intel i5-2500K @ 3.3GHz
||Intel i3-2310M @ 2.1 GHz
||NVIDIA GTX 560 Ti
||Integrated Intel HD
||ASRock Z68 Extreme3 Gen3
||Windows 8.1 64-bit
||Xubuntu 13.04 64-bit
Honestly, reading the support article linked above would probably suffice, but that’s so boring. Don’t you want to follow along with someone who is in the beta? Sure you do! Here’s what I did to get setup.
- Get two computers capable of launching the Steam client. In my case, I have a desktop which will host all of the games and a laptop which will connect to the host as a streaming client. The host and client operating system doesn’t seem to matter. My desktop is running Windows 8.1, but my laptop is running Xubuntu 13.04. The connections worked perfectly fine.
- Make sure both computers are on the same local network so they can see each other. I’m using a relatively dated router (see The Gear section above), so my latency results are going to be on the low end if I’m going up against people with gigabit networks. Both computers are connected to the router via CAT5e cable.
- Login to Steam on each computer, go to Steam –> Settings and opt-in to the Steam Beta Client. Restart Steam, and you should see the following pop-up in the lower right (once both of your computers are connected to Steam). The pop-up actually shows up on both computers indicating who it is connected to. In fact, there is a separate pop-up for disconnection as well.
- Confirm the connection by going to Steam –> Settings –> In-Home Streaming. You’ll see the devices that you can connect to along with a bunch of streaming settings (see below).
Limit bandwidth: Auto/5/10/15/20/Unlimited Mbit/s
Limit framerate: Auto/30/60 FPS
Limit resolution: Desktop/1080p/720p
Disable hardware encoding: I’ve heard that the beta only uses software encoding, so I’m not sure if this option does anything.
OK all the boring setup is done. I just left all the options at automatic, because I felt that Steam knew better than I did about when to adjust accordingly, but we’ll see how that actually plays out. When I used the client computer (laptop), I noticed that all the games installed on the host (desktop) were available (highlighted) to play in the “Installed Games” list even though the games weren’t installed! There was also a new option on the games that weren’t installed which was titled, “STREAM”. The drop down on the button gave me the option to install the game or stream it from the computer that was hosting the game on my network.
Well, right off the bat, I noticed that even though I’m on Linux, there is the option to play non-Linux games like Deus Ex: Human Revolution and Mass Effect 2. I have no idea if they’ll work, but let’s find out. I’m going to try a Valve game, a non-Valve game, and a non-Steam game. By non-Steam, I mean a game that isn’t even registered on Steam but is launched through steam.
First, let’s check out Dota 2. Clicking the “STREAM” button launched the game on my desktop first and was followed up by viewing it on my laptop. Why is music from my desktop playing through the streaming client? Oh, I guess it captures all of the operating system audio and sends it along to the client. I had a media player going when I launched the game, and the audio was made available on the streaming client. Other than that, the first thing I noticed is that there’s a text overlay along the bottom with instructions.
Press F6 or GUIDE+Y to toggle stats display
Pressing F6 expanded some diagnostics and a graph that look eerily similar to the “netgraph” command in the Source engine. I’m going to assume that negraph is built into this streaming client. The diagnostics output were something like:
Capture 1366x768 @ 58.88
Latency: 57.94ms (0.55.s input, 29.51ms game, 30.80ms display)
Ping time: 0.76ms
Incoming bitrate: 6871 kbit/s video: 6731 kbit/s
Outgoing bitrate: 88 kbit/s
Link utilization: 9% of estimated 71Mbps
Packet loss: 0.00% (0.00% frame loss)
Press F8 or GUIDE+X to save snapshot on remote computer
I assume that the number after the capture resolution is the frame rate. Dota 2 seems to be OK with streaming at 60 FPS at this resolution.
For some reason, the mouse cursor wasn’t showing up on the client, but I could see my movements being made on the host. In fact, the movements worked on the client (I could see buttons hovering, and I could click on buttons). However, the cursor was just invisible. Eventually it showed up, but I’m not sure what I did to make it appear. I launched a game with bots and played the game exactly as I would on my desktop; only this time it was on my laptop! I can barely play Osmos on this laptop, and here I am running Dota 2 at max settings with no lag.
I should note that when I got into the game, the diagnostics showed that my incoming bitrate and link utilization both increased dramatically (to 15000 kbit/s and 20% of 100Mbps, respectively). OK, next game.
Mass Effect 2
I know for a fact that this game does not work on its own on Linux. Not to mention it wasn’t developed by Valve, so I was skeptical about streaming working very well. I thought there was an error launching the game at first, but it was just a message indicating that the remote desktop was doing some setup. It’s impressive that the streaming takes into account the first time setup of all the annoying C++ Redistributables required to launch the game. My laptop patiently waited while everything installed and off I went. It’s worth noting that any Windows UAC prompts will need to be resolved on the host as those are not streamed to the client!
Once I was in the game, I can say confidently that I was blown away by the seamless input, game play, and display on my aging laptop. Honestly, there was no performance loss in the stream, and I’m not even using a gigabit network setup.
The diagnostics showed that I peaked around 15000 kbit/s, which seems to be my maximum (this was the max in Dota 2 as well). However, unlike Dota 2, the diagnostics showed that my “Capture” was set to 1280×720. Dissatisfied that this was lower than Dota 2, I went to the Mass Effect 2 settings to change the resolution. Sure enough, the resolution in-game was set to 1280×720. I bumped it up to 1920×1080 (the size on my desktop). After some brief flickering, the “Capture” then indicated 1366×768.
At first, I thought that I was limited by my laptop’s max resolution, but then I remembered the Steam setting, “Limit resolution to”. I bumped that value up to 1920×1080, relaunched Mass Effect 2, and saw that the “Capture” was now at 1920×1080. The frame rate was pegged at 30 FPS (which I’m assuming Steam has decided is appropriate since that setting was set to “Automatic”). I imagine that some die-hard folks will be upset that Steam has decided to degrade them by subjecting them to a 30 FPS gaming experience. You can always force the option to stream at 60 FPS, though I have no idea if the performance will suffer as a consequence.
I was curious to see what would happen if I alt-tabbed out of the game on the host, so that’s what I did. Checking back to my client, I saw that I was viewing my host’s desktop. I had full control of the desktop as long as the game was running (even though the game was minimized). I clicked around for a bit, moved a few icons, eventually got bored, and then closed the game on the host. It’s interesting that the host responds to all input and streams all displays as long as the streaming service is active and connected.
I was excited to try a non-Steam game to see if Steam could be used to stream any game from my desktop. I was unfortunately met with sadness. This experiment was a complete and utter failure. It seems that because Starcraft II has an intermediate step of using its own Battle.net launcher, Steam can’t properly host the process in the streaming service. Any time I tried to stream, the client would get an error saying “Could not connect to host.” and the host simply never launched anything. I was upset, so I decided to try another one.
The original Fallout can be fun while simultaneously frustrating. I guess that’s its main appeal. Anyway, I added the game to my Steam shortcut list. It immediately appeared as playable on my client’s Steam games library. So, I launched it. The game miraculously started up; the video came through; the audio came through. I delicately touched the mouse to select a new game. The sound of my excitement coming to a complete halt was quite loud at that moment.
I guess older games used a different API for input (and older DirectInput library perhaps). The streaming service was failing to detect the input on the client. Curiously, any movements I made on the host were displayed on the client (even input). It simply seemed that client to host input was a no-go for Fallout.
For being a completely new beta, the service is phenomenally good. The setup process is largely automated once you get the correct version of the Steam client installed. As long as the games you want to play are sold through Steam, you probably won’t have a problem playing it. I realize that my sample size is small and my anecdotal evidence doesn’t count for much, but the tests that I’ve performed so far have been successful (disregarding the non-Steam game failures).
- Play Steam game on any Steam-capable device with little to no lag even if the device has awful specs
- Stream to your living room, bedroom, or whatever room you want to play in instead of being forced to play at your desk
- Play every Steam game from any operating system even if the host and client don’t match operating systems (Windows -> Linux works fine)
- Share your desktop inadvertently by alt-tabbing to the desktop while the streaming service is running in a game
- Stream audio that isn’t in the game to other devices (music, videos)
- It’s still beta, and not everyone can try it yet
- Doesn’t work with non-Steam games (and to be fair, this might happen in a future update, but I doubt Valve is even advertising that it can stream older games). Also their FAQ states that older games may not work well.
- Doesn’t work as well over wireless (especially if you have a spotty connection or are across the house from the access point). This might require you to run cables where you don’t want to.
Here’s two pictures from the menus of Dota 2 and Mass Effect 2. Note the the diagnostics print outs that I mentioned before. (click for larger)