Building a Windows Gaming VM for Steam Link: 2016 Edition

In 2016, I bought a Steam Link, allowing me to play games on my TV
without having to lug a whole physical machine over. The main
requirement of Steam Link is the link and the PC on the same network:
this allows encoded streaming from the PC to the link, and the link
sending back input it is receiving from various bluetooth and USB
devices (controllers, keyboards, mice).

The Steam Link combined with Steam and it’s Big Picture UI is a very
decent replacement for a console: a large game selection, decent UI
for navigating the catalogue and purchasing / installing new games.

Unfortunately for those running Linux: Steam is most valuable on Windows: the game
selection for Linux doesn’t come close to the catalogue on Windows.

You can dual boot to solve this issue, but it then prevents someone
else from playing the Steam Link when the Linux partition is in
use. Thus, a project was born:

Implementation

I was able to accomplish this by:

It’s left as an excersize as a reader to learn more about how those work. The only real caveat
was networking

VM Networking

The VM networking was the trickiest aspect. This is due to an uncommon
requiremental combination of:

  • the VM being available on the local network (via some IP)
  • the VM being able to communicate to the host machine

The two can be accomplished separately. Using KVM, macvtap with a bridged configuration
worked great for exposing the VM, but it can not resolve the IP to the host. I was able to
find a stackoverflow article

The Results

The results are pretty good. With a native Windows OS,
I was getting roughly 12ms latency from the Steam Link.
With the VM, I’m getting roughly the same.

For other reasons, I had to add another switch in between my Steam
Link and PC. That had a much larger negative impact: 22ms now vs 12ms
before.

Some resources for XACT

XACT is a audio application used to manage audio for games using the XNA
framework. Here are some resources to help you get started.

Installing XNA 4.0

you may need Visual Studio 2010 express to use it:

Visual Studio 2010 install links

Make sure to install the C# express version.

After that, try following this tutorial to build XACT projects.

Installing Paint.net 3.5 and testing sprite animations

After doing some searching online, it looks like paint.net is a common
tool people use to create and animate sprites. Here’s a small tutorial
on how to get some basic sprite sheet testing running.

Installing paint.net

To install it, simply go to http://www.getpaint.net/ (be careful about
others sites you go to, I end up at a couple of malware sites before I
arrived at the proper one).

The direct download URL
is http://www.dotpdn.com/files/Paint.NET.3.5.10.Install.zip. If that
doesn’t exist, try to navigate to getpaint.net and click download, and
then “download paint.net 3.5”. Be careful! There’s a lot of adword links
that look like download pages.

Downloading sprite animation plugins

Next, you need to download the plugin! There’s a couple of sprite sheet
plugins out there. I chose the spritesheet animation plugin:

Spritesheet animation plugin

Just download the “PDNSpriteSheetAnimation.zip“, which will contain
a dll file. Drag and drop that into C:\Program
Files\Paint.Net\Effects. C: is of course, interchangeable with
whatever drive you installed paint.net on.

After you’ve installed the plugin, restart paint.net. It is now
available via:

Effects > Animations > SpriteSheetAnim :

Image

And there you go! The plugin opens up and you can test various
animations with it.

Credit for the sprite sheet in the picture goes to 10firstgame’s
wordpress blog
.