Windows Multiseat Gaming

I have two computers which are capable of running 3D video games on Windows. The two towers are a quite a few years apart. The older tower is from 2008 and has an Intel Core 2 Duo dual-core CPU (E4400). Although it is a 64-Bit CPU and a 64-Bit Windows 10, it can only address 3.5 GB of RAM because the memory controller is only 32-Bit. I'd really like to ask the guy at HP who decided to specify this mainboard why he did that. Anyway, the GPU in that system has been exchanged a lot of times:

  • ATI Radeon X1650 (initial setting)
  • NVIDIA GeForce 9500 GT (upgrade for EUR 130)
  • NVIDIA GeForce 9800 GTX (upgrade for EUR 30)
  • AMD Radeon HD 4750 (replacement for EUR 17)

I am back to the NVIDIA GeForce 9500 GT because the 300 Watt power supply cannot really handle the NVIDIA GeForce 9800 GTX under load and the AMD Radeon HD 4750 seems to have a hardware defect.

This system is easily dwarfed by any more recent gaming setup. My new mid-range setup has an AMD FX-8320 eight-core CPU, 16 GB of RAM and an AMD Radeon R9 380. None of those are particularly fancy, at the time you could have gotten yourself an Intel i5-6600 with an NVIDIA GeForce GTX 970 with 150% or 200% the power.

Most strikingly, games which I could not play on the old tower now run fluently on the new one. And not only that, I could not play them in 1080p before, now they run fluently in triple 1080p. So I thought:

If the new computer has more than three times the gaming performance, why not just let two or three players play on it?

Running multiple instances of the same game is a different thing for the GPU than running a single instance with three times the pixels to compute. So I was not expecting to get three powerful instances out of there. But at least two instances which are faster than the old computer, each. From the CPU and RAM, there would be four cores and 8 GB of RAM for each player. That is a doubling from the old machine. The GPU would have 2 GB of VRAM for each player, that is fourfold.

The "only" problem now is the software to do this. On desktop Linux you can do this with a bit of tinkering but you do not need any special software. Since Linux is a true multi-user system from the beginning, it is actually not an architectural problem to have multiple graphical sessions on one computer. On Windows, this is quite different. I remember Windows 98 where you could just click "Cancel" on the login screen and got to the default user. From there you could still somehow read the files or at least play some games. There are software packages like Aster, BeTwin and SoftXpand. All websites make the impression that they stem from a past century.

I first tried Aster and actually got it to work with Windows 10 1511:

Two seats with Aster on Windows 10 1511. You see my session on the left, the right screen shows my guest's session. The little thing on the left monitor is my brightness sensor.

Then I proceeded to start Sains Row 3 via Steam on my account, asking my guest to do the same on their session. Since that games does neither run very well on the old tower nor on her laptop (Intel i5-2420M, NVIDIA GeForce 620M), I hoped to play it without much lag and latency at last. As soon as they opened Steam, my whole game just disappeared without any notification. In the systray I could see that Steam has just disappeared. When I tried to start Steam again, her instance of it would just disappear.

Apparently, Steam has some sort of global state that can propagate between the two sessions. Perhaps a file lock somewhere or a socket that gets opened. Either way, no way to run two instances of Steam on the same machine. One idea to try which I only found later is to copy the Steam folder into a second location and therefore have two installations. Sadly the demo time in Aster has run out, so I cannot try that without buying the software.

SoftXpand only runs with Windows 7, it just does not work with Windows 10. I did not want to downgrade my machine to test this, so I just skipped this. Then BeTwin works on Windows 10. However, I was not able to set it up. I probably did something wrong. First the other screens were just inactive. Then I assigned the screens, keyboards, and mice to the other stations. After a reboot the other two screens were still black. Both keyboards were dead, though. Since Windows 8 there is a hybrid startup scheme used such that one cannot go into safe mode with a keyboard button any more. Therefore the safe mode of my Windows 10 installation was only accessible via the booted system which I could not interact with. Plugging in a third keyboard got me sufficient access such that I could at least uninstall BeTwin again. A couple reboots later I had normal control over the system again.

So all in all there has not been any satisfactorily multiseat for Windows 10. This means that I have no way of sharing the excess power of my CPU, RAM, and GPU with my guest. There is only one solution left that I can think of: Virtualization.

Using Linux and its KVM virtualization, one supposedly can pass a GPU to a virtual machine. I would have to install two instances of Windows 10 in virtual machines and assign the correct keyboard, mouse and GPU (with a screen attached) to a virtual machine. The caveat is that I would have to add a second GPU. In principle my mainboard would be capable of this, I would need another power supply with more PCIe ports. Otherwise I would be stuck with a GPU which is powered purely from the PCIe lane and that would limit me to an AMD Radeon R7 350 (source) or the AMD Radeon RX 460 (source). The largest card from the competition that does not seem to need additional power is the NVIDIA Geforce GTX 750 Ti (source). So I would need another GPU and a new power supply with around 100 Watt more power.

Then I would also need another Windows 10 license. I could take the one from the old tower and just stop playing games on that one. The interesting thing is that the licenses for the multiseat software usually is in the order of a Windows 10 student license. So the KVM route needs another GPU but otherwise is cheaper and seems more fruitful as the two Windows instances will be independent; I trust KVM that much.

The folks at Linustechtips have done exactly that with a slightly larger budget. So I guess it works, I am not sure how much effort it is to configure.

Either way I am not going to do this with my new tower any time soon. Every time I just want to use the tower for work on Linux, I would have a second GPU idling around for no real good. The drive storing the second instance of Windows has to go somewhere. If I would build something like that for two-person gaming, it would be just fine. But since I want it to be a bit more modular, I guess I will just upgrade the old tower at some point.

I'm a bit sad that it did not work with a reasonable priced software solution on Windows. I ended up buying a used gaming laptop as a replacement for the tower. This way I can attend LAN parties easily and have a second machine at home for guests.

Update: Three people independently have told me that using Sandboxie they managed to isolate the two instances of Steam such that they could actually play simultaneously.