Multi Seat Gaming PC for LANs Part 0

Background

A couple of years ago I mucked around with something called PCI-E passthrough.
The idea is to let a Virtual Machine (VM) use an physical GPU.
This lets me, who almost exclusively run Linux, run some Windows only games in a Windows VM. I think I was first exposed to this idea through a reddit post on r/linux_gaming, possibly this one:

GPU Passthrough – Or How To Play Any Game At Near Native Performance In A Virtual Machine (xpost /r/pcmasterrace) from linux_gaming

Thing is, that guide was really only a jumping off point into an endless sea of configuration and testing, and eventual success. But it was really only a toy for me, to see if I could.

The secondary GPU was an AMD 4850HD, which was pretty elderly, and I wasn’t going to be able to use it for everything I wanted. After the initial success, I shelved the project.

And then…

A few months ago, Matt came to me with a suggestion that we attempt to follow this procedure:

We both attend the Skynet Wales LAN , and he thought it’d be cool to be able to do all our gaming from a single rig instead of both of us having to take our entire setups.

NO, THIS CANNOT BE

The unRAID solution, on paper, looked like the easiest way to do this, but two things made me disagree
1. I had already set up something similar a while back
2. Why do it the easy way when yo can do it the hard way.

Later on it turned out I made the correct call here for a couple of reasons. I’ll go into why later on.

The next few posts will go through the Hardware we used, the software / VM setup, the various tweaks we’ve applied, and some benchmarking results. Then finally how it performed in a real world event.

Steamleft II

A while ago I discovered Steamleft, and decided to use it to try and track my progress in finishing my backlog of Steam games. There are some major flaws with it, such as it counting games I’ve played but not on Steam (eg, Half-life: Blue Shift). It also has really really high estimates for how long it should take me to “complete” Dota 2, a game I got for free and despise (because I suck at it).

Every now and then I run GNUplot over my logging file of hours left in Steam. Here’s a sample:

test2

The data points between between May 9th and May 16th are probably when my estimated hour to completetion were modified by a free trial, or something.

The sudden drop off in the back end of April, I’ve no idea what caused that one.

Here’s a newer graph:

chart

 

The sudden drop off is again probably from a game I had for a weekend or something. I have bought a few games since I started this, but not too many.

Steamleft

Somebody sent me to this tool.

If your Steam Profile is public, it will show you how long you’d need to play for to “complete” all games in your steam library.

My own entry is here.

It relies on average game length statistics from www.howlongtobeat.com , which will obviously be a bit hit and miss with games like Kerbal Space Program. For open ended sandbox games, like KSP, what counts as beating it?

Actually, I’ll go and look it up:

howlongtobeatKSP

 

Well.

I suppose KSP does have a Career mode these days, and maybe that’s what’s been submitted for the Main Story stat? Even so, I could play this game for literally the rest of my life and I’d still probably find stuff to do.

So SteamLeft won’t be perfect, by a long shot. I’ve got whole sections of my library dedicated to multiplayer games that I’ll never “beat”, and I’ve got a load of duplicate games as well, for when things have a separate beta branch entry in my games list.

However, I wrote myself a little script to scrape my steamleft entry daily, and log the results to a file.

The script is here:

#!/bin/sh
 wget -O - http://steamleft.com/span/76561197973314452 | echo $(date +"%d-%m-%Y") $(xmllint --html --xpath "/html/body/main/div/div/section[1]/div[4]/text()" - 2>/dev/null) >> /home/anorak/steamleft/bob

I’ll break down what it’s doing:

wget -O - http://steamleft.com/span/76561197973314452

Wget grabs whatever content exists at the URL you give it. In this case, the URL is the steamleft page for my steam account. This information is looked up in realtime when you visit the page (presumably).

The “-O -” argument redirect the downloaded contents to standard in, rather than writing the results to disk. This is useful because we don’t need to then look up the contents of disk afterwards, and the next part of the command can read directly from standard input.

| echo $(date +"%d-%m-%Y") $(xmllint --html --xpath "/html/body/main/div/div/section[1]/div[4]/text()" - 2>/dev/null) >> /home/anorak/steamleft/bob

The “|” character is a pipe, and it’s used for directing the output of the command before it to the input of the command after it.

echo $(date +”%d-%m-%Y”)

This outputs the date in the format “dd-mm-yyyy”.

xmllint --html --xpath "/html/body/main/div/div/section[1]/div[4]/text()

xmllint I had to install myself, it wasn’t part of my standard ubuntu install. It’s a program for parsing XML. The “–html” option allows parsing of HTML (HTML is often not XML compliant).

The “–xpath” option  lets me grab the actual element I want from the page.  I found the xpath by looking through the steamleft page in Google Chrome:

steamleftxpath

$(xmllint --html --xpath "/html/body/main/div/div/section[1]/div[4]/text()" - 2>/dev/null) >> /home/anorak/steamleft/bob

The “-” reads the input from standard in.

the “2>/dev/null” redircects all errors to /dev/null. And there WILL be errors, because it’s HTML. And XML parsers do not like HTML very much.

>> /home/anorak/steamleft/bob

This adds the result to the end of the output file.

The output file looks like this:

30-03-2015 1768 continuous hours
31-03-2015 1768 continuous hours

Thrilling.
This script is set to execute once per day. I’ll leave it running for a few months, and see how I’m doing at beating my library. I’ll hook it up to GNUplot at some point too, for shits and giggles.

I’ve been fairly good at not buying new games, with the intention of beating my  back-catalog. This should give me an indication of how I’m doing. And it gave me an interesting little exercise. In fact it took me longer to write up how I did it than it took to actually do it.

 

I miss ‘puter games.

I haven’t played anything in weeks, if not months. I’ve been working away from home since mid May, and during that time I’ve barely touched anything.

Instead I’ve been reading about games, keeping up with releases, but over the last couple of weeks I’ve instead been caught up in DRAMA. Games Journalism DRAMA.

I’m sick of it, yet morbidly fascinated by it. But I’ve lost sight a bit of why this is my hobby in the first place. So I’ve gone down my steam list and installed things that:

a) Will run on my work laptop

b) I haven’t played before

Here’s what I’ve got installed at the moment:

Red Faction runs very poorly.

CoH won’t launch.

I’ve played KSP a lot already.

So a trip to 1998 is in order. I’m going to play SiN.

I’m still rubbish at Dark Souls

Since working out that I was trying to take on enemies that were FAR beyond my current character, I’ve been having an easier time of things.

I can actually progress through the Undead Burg, and kill a few enemies at a time before getting wasted.

There’s something very satisfying about progressing in this game, it’s the feeling that you are learning and mastering systems that you once found irredeemably hard.
My progress (when not trying to kill skeletons) followed this pattern:

1. Run up the hill, kill an enemy or two.
2. Make a stupid mistake and die.
3. Run up the hill, kill a few more enemies.
4. Progress a little further, find a new area, kill an enemy and die.

Each time I try again, I can get further into the unknown without dying. It’s not that I’m memorizing where enemies will come from (even though I am doing), it’s more that I’m getting better and better at combat, so even new, unknown areas don’t kill me quite as quickly as before.

I still make stupid mistakes often though.

Making it to a bonfire triggers such a sense of relief. The save system might be irritating sometimes, but it really does create a wonderful tension. I’m forced to play slowly, carefully, methodically. I can’t run in and slash enemies to death, even if I know how many there are and I’ve taken them on a while load of times already.

All that said, the Taurus Demon took some doing for me. All that tension the save system can create just turns to frustration for me, when dealing with a boss.

If I have to play for ten minutes to meet the boss, and get squashed flat in 30 seconds, it’s hard for me to learn it’s attack patterns.

The excruciating slowness of the “stand up” animation means that if I’ve been knocked over, I’ll rarely get up in time to dodge the next (completely lethal) attack. And then I have to trek all the way back up to the boss to try again, try a different strategy, or just try my luck again.

The video above shows me going through some of my failures with the Taurus Demon. Each time I got killed through what felt like luck, and when I did eventually succeed, it felt more like I was exploiting an AI weakness than outsmarting a massive Demon. I found a blind spot under his legs where he couldn’t hit me, and whacked him in the groin until he exploded. Even doing this I took damage because I got trodden on.

After this, it was back to the exploration and cautious fights, which are what I like most so far. Finding the ladder back down to the bonfire was a relief, especially since I’d narrowly avoided dying by dragon.

And then I climbed a staircase and got flattened by a big bastard black knight type bloke.

I’m rubbish at Dark Souls

I picked up Dark Souls: Prepare to Die edition in the autumn steam sale. I tried to play it with keyboard and mouse, and found the controls to be decidedly lacking.

I resolved to wait, until I could get a gamepad to play with instead. I’ve been wanting to get a gamepad for a while, preferably a wireless one, so I can play the more arcade type games I own from my sofa.

Having finally got a controller, I started Dark Souls again.

And I’m terrible at it.

In the tutorial level, the first weapon I picked up was a broken sword hilt. This was fine for taking care of the non-violent zombies that are scattered through the first level, and you’re supposed to pick up your real weapon the first time you meet an archer, just after you get your shield (I think).

I managed to miss this.

And forged ahead anyway.

I died.

A lot.

After meeting a dying knight, who gave me his Easter (Estus) flask, I had my first “real” fight with a zombie wielding a sword. I was only doing about 2 damage per hit, 3 if I did a heavy attack. It took a very long time to kill it.

Just after him, was a small courtyard where I had to deal with 2 at the same time. They trounced me over and over again, and then around the corner was an archer, and the entrance to the boss fight.

I played this section repeatedly for about 2 hours. I lost track of how many times I died.

When my sword hilt broke, I realised that no matter how hard this game was supposed to be, the tutorial probably shouldn’t be THIS hard. I backtracked a lot, and found my real sword. Which did 20x the damage of the hilt.

I AM SOMETIMES A MORON.

I managed to kill the Asylum Demon without too much trouble (in fact I think I got it on the first go).

I savored my victory for a short while, walked out of the room and was then startled when I walked into an airport (the giant crow picked me up).

Now that I’m in the next area, I’m trying to deal with these two skeleton chaps. I’ve been trying for about two hours now. I’m starting to wonder If I’ve done the same thing – did I miss something really obvious? Maybe. Anyway, here’s a video of me failing a lot. I recorded this using Nvidia shadowplay, which is a very neat tool. Much nicer than having to pay for fraps, and it doesn’t impact my framerate much.

I fail at parrying, I role the wrong way, I lock the wrong target, I get stuck on things.

I’m not very good at this game.

Storytelling in Spec Ops: The Line

Warning: This post contains spoilers for Spec Ops: The Line

In most games,  the designers have done all they can to try to disguise the rails. Rails in this case being a metaphor for linear storytelling. Linear storytelling is not inherently bad, but often seems that way when “you”, or more accurately the character you control, are forced into a decision that the player finds to be idiotic. This breaks immersion.

Good examples of rails can be seen during the Half-Life series, where there are few points that you might feel like you’ve been forced into making a stupid decision. (Well – maybe Gordon didn’t want to jump blindly into a teleporter and go to  hostile alien Zen. But he did anyway…because he was told to).
Every step of your journey is utterly predetermined, but often this goes unnoticed or seems like emergent behaviour. This makes it all the more jarring when you are forced to jump into a prisoner transport pod that immobilizes you and you can’t control it’s direction.

Hop in! It’ll take you to a fun place filled with lightning!

A bad example is Mass Effect 2, where you don’t ever get the option to tell Cerberus to go stick their idiocy where it hurts, but instead you bumble along following the orders of a guy who you have every reason to distrust and hate.

You can’t change anything. Whatever you choose will lead to the next fight scene or set piece. Mass Effect has the worst kind of railroading, because it offers you some choices about who lives, or who you shag, but you can’t make any choice about how your character behaves in-story. Image stolen from 3 panel Soul

Spec Ops: The Line works differently. As already mentioned, most games do their best to present you with the illusion of choice, the try to disguise the rails. Spec Ops instead gives  you the illusion of having no choice, and disguises your choices. The player thinks they are on a rail, but there are many places where this can be ignored.

The one that stood out for me was the point in the game that Lugo was hanged by angry locals (angry doesn’t really do their state of mind justice – the only remaining drinking water in Dubai has been destroyed, and it is all your fault).

Lugo is down, and Walker does his best to revive him. Useless. He’s dead. Adams is surrounded by the mob, who are shouting threats, throwing rocks, getting closer and closer. Adams wants vengeance. There’s no justice; he wants to open fire and gun down the civilians. He’s begging you to make a decision and I start to worry that he’ll just start shooting if I don’t do something.

At this point I was not thinking in terms of “Shooting civilians might be a fail state”, I wasn’t worrying about the game any more. The only thing going through my head was I WILL NOT DO THIS AGAIN. I fired in the air, hoping to drive them away. It worked, and Adams and Walker could continue.

I didn’t think anything of it until I spoke to a friend who finished the game after me.
He said that he’d had to put the game down at this point, he found it too depressing that the game forced you to gun down yet more civilians.

This works heavily in the game’s favour. By disguising the fact that you ever had a choice at all, you can do what feels natural, without ever having to break immersion.

Another example of this is how you deal with the “test” that Konrad sets up. This one more obviously had a choice involved, but even here you can go off the rails – (Konrad’s rails, anyway. Konrad is the GM at this point, in a game-within a game).

Konrad asks you to choose between two prisoners.

The man on the right is a civilian, who stole water. A capital offence, as Konrad remarks. The man on the left is one of Konrad’s own men, who was sent to bring in the civilian for punishment (we all know that soldiers are extremely good at civilian crowd control). During the arrest he killed five more people: the man’s family.

I shot the sheriff soldier (but I did not shoot the deputy)

Later I found out that there were ways around this – you could have attacked the snipers instead, or shot the ropes (triggering an attack by the snipers).

When I first got to this bit, I assumed that it was just the start of a long line of “tests” that Konrad would dream up, to try and persuade you that he was right, and it was the only way to ensure the survival of as many people as possible. I was surprised  then to find that this was it, really, Konrad didn’t have any more moralising to do (well, sort of. I’ll get to that in a separate post).