Wednesday 27 April 2016

Jam Enslaver Plays...Shadow of the Colossus Episode 01

Hello again! I'm very excited to start my new video series in which I will be playing Team Ico's masterpiece Shadow of the Colossus. I'll be posting all the episodes here as they go live (I'm hoping to get the next one up early next week since I'm in New York right now!)

Since they will all be using a very similar recording setup I might not have much new to say about each one for this blog, but here are a couple of interesting notes about getting everything organised for a different style of video. See you next time!

Recording Setup

This was a slightly more complex recording setup than usual simply because I was going to be recording the game footage and myself talking at the same time. I wanted to avoid using multiple computers as the area I use for making my videos is pretty small; even a laptop would have to sit on the floor if I wanted to use it for recording the voice-over. I also wanted to use my headset mic rather than the Snowball. The audio quality is much better with the Snowball but when I'm recording the voice-over for my reviews I tend to hold it in my hand because the stand is quite small so the mic sits low on the desk. Whilst it picks up my voice perfectly well like that there is a lot of echo, so I hold it directly in front of my mouth. When I've got a controller in my hand and need to see the screen in front of me that doesn't really work!

Recording the video footage wasn't a problem: I have a Roxio Gamecapture HD Pro that I first used for my Beatles: Rock Band review, I just needed to get a PS3 component cable to use with it since there's no way of recording the HDMI output of the PS3 because of its always-on HDCP. The Roxio then plugged by USB into my computer to record the footage, and via HDMI into the TV so I could play the game without any input delay (see below).

This posed the question: how do I set things up so that I can hear the game audio as I'm playing? The footage being piped into the PC by the Roxio is about 1 second behind what's actually happening in the game, which is why it's good that the Roxio also delivers a pass-through feed. The monitor I was using doesn't have built-in speakers (which I wouldn't want to use anyway to avoid the sound bleeding into my headset mic) but does have a 3.5mm audio jack*. So, I could just get an extension cable and run another pair of headphones into the back of the display.

 *I actually wasn't previously aware of this jack and was very glad to discover it; I usually play PS4 games on that monitor so for audio I always plug my headset into the controller itself.

Detecting Crashes

As I mentioned in my post on my 3D Movie Maker review, my computer has been having some troubles recently. Seemingly at random it would just shut off and need a hard reset. Since it tended to happen when I was playing a game I suspected that it had something to do with overheating. I was worried that it might also happen whilst I was recording the video footage I needed, since this is a very CPU-intensive thing to do.

One of the things I was particularly worried about regarding my computer crashing was not noticing when it happened. When the computer shuts itself down in this way the screen goes black but the fans keep running (another strong indicator that this issue is heat-related). Since I would be playing the game whilst watching the pass-through video feed, I wouldn't be able to tell that the computer had crashed and stopped recording until I switched back to it when I had finished. This is especially bad for a game like Shadow of the Colossus which offers no manual save functionality: if I played past one of the points where the game saves automatically, I wouldn't be able to go back and play the same sequence again if I lost the footage!

I needed some proof-of-life indicator for the PC. Unfortunately the Roxio doesn't seem to need the computer to be on for the pass-through to work, it just needs power going to the USB port it's plugged in to. So even if the computer died, the footage I was seeing of the game would be uninterrupted. Then I thought about audio, and a way of killing two birds with one stone.

As I mentioned above, I was getting gameplay audio for myself from an audio jack on the back of the monitor. This had always seemed like an inelegant solution since it would require me to wear a second set of headphones. Luckily, I had recently discovered what the line-in port does on the back of a computer whilst playing around with ways to record footage from Android devices (some ideas brewing there, watch this space). I had often wondered what that blue jack was next to the more familiar green (audio out) and pink (mic input), but never bothered to find out. Only now do I discover that it has the amazingly useful ability to take input from any device that plays audio! And this gave me an idea...

I used the extension cable I had been expecting to run from the monitor to a set of headphones and used it to run the audio output back into the computer. Then it was just a case of turning on the listen function for the audio input and I was able to hear the non-delayed game audio through the same headset I was using to record my voice as I played the game! Not only that, but if the computer died the line-in audio would go silent and I would immediately know that something had gone wrong.

Recovering from Crashes

To test this new crash-detection system I decided to do a practice run playing Uncharted, which I've been playing in my own time in anticipation of Uncharted 4 coming out this year. I didn't have to wait long; seven minutes into playing the game the audio went dead and I switched the input on the monitor to find that the PC had crashed.

Now I had a new problem: if the computer is going to crash sometimes whilst I'm playing, can I recover the footage and voice-over that was recording at the time? The gameplay footage recorded by the Roxio seemed to be fine, (not even the zero-length issue I had seen with Hypercam), except that it was an M2TS file which Sony Movie Maker doesn't support properly (for some reason it doesn't pick up the audio). Once again the solution was to re-render the file as an MP4, which is actually what Roxio does anyway when you finish recording properly.

A bigger issue was the voice-recording, which I always do using Audacity. I had hoped that I would be able to just re-open the application and it would do some kind of automatic recovery, which it tried to do before showing an error message. This had me very worried because I've seen Tweets from podcaster Travis McElroy complaining about having to reconstruct Audacity projects from hundreds of 6 second clips. I found the clips in question, buried in a temporary folder, and even found some instructions online for the best way of putting them back together by hand. Unfortunately, after doing this for a few minutes, I realised that the audio clips weren't in any sort of order in the folder, and short of listening to every single clip and trying to figure out where it belonged in the timeline, there was no way I was going to be able to reconstruct the entire file by hand.
Then I decided to do what I should have done to start with: find out if there was anything to do about the error message that Audacity had shown when it had tried to automatically reconstruct the file. It turns out this would have saved me a lot of time and worry, as the problem was pretty easy to solve. It turns out that if Audacity quits unexpectedly, it can sometimes print a line of garbage characters at the end of the automatic save file which keeps track of where all the audio clips belong. All I had to do was open the save file in a text editor and remove the broken characters. Hey presto, the audio recording was back!

Keeping Things Cool

Of course, the ideal situation would be if my computer didn't crash at all! Whilst it was annoying during the production of my 3D Movie Maker review it wasn't insurmountable; the nature of my reviews calls for short clips of the games I play, so if the recording happens to unexpectedly stop it doesn't matter as long as the file is still usable. However for a Let's Play where I need to record 30+ minutes of unbroken footage, it's a different matter! 

I knew that I would always be able to recover the recordings so I could just edit the clips together if I needed to, but if my maximum recording time was seven minutes I would have multiple breaks in each video and it wouldn't always be possible to disguise the transition. So I decided to try and find a way of actually fixing the problem, or at the very least figuring out a way of extending the recording time to something more like 30 minutes so I could rely on having at most one transition for a typical video.

My research online seemed to suggest that focusing on cooling was the right way to go, so I downloaded an application called HWInfo to check the temperatures of my CPU cores whilst doing different things (idling, running Roxio and Audacity simultaneously etc). From what I could tell they didn't seem to be particularly high (around 40 - 56°C depending on the load). I tried running the logger whilst I recorded Uncharted and was able to get the PC to crash again, but the results on the logger didn't seem abnormal, although I wasn't able to work out how close to the crash the logged data actually went. The only useful information I gleaned was that all four CPU cores were working at 100% during the recording.

Based on what I had read online I decided to poke around a bit in the BIOS of my computer to see if I could find any temperature settings. After a little digging I discovered some controls for regulating temperature, specifically controlling two schemas called TM1 and TM2 which reduce the amount of work the CPU does to prevent overheating. Both of these were turned off, presumably because when the computer was new it was bought from Alienware and they had dealt with heat management by having multiple different fans in the case rather than sacrificing performance. Turning TM1 and TM2 on seemed to help a bit and I was able to get a recording time closer to 15 minutes, but it still wasn't enough!

Next I paid attention to what exactly was causing the CPU to spike. Something strange I noticed is that Roxio caused all four CPUs to run at 100% for about 30 seconds when it first opened, and that the CPU usage actually dropped for a few seconds when I started recording. Then I noticed that if I had the Roxio window minimised CPU usage dropped to about 95%, presumably because the computer wasn't having to render the preview window. A small difference, but one that could potentially offset factors like running Audacity at the same time.

Since all my readings were showing temperatures in the mid 50s, I decided that maybe I should adjust the way the fans worked on my computer. When I first went into the BIOS I noticed that they were set up to reach full power when the temperature hit 65°C. Perhaps my aging CPU couldn't deal with that kind of temperature any more and should be allowed to spin up the fans to full power at a lower temperature? Working under the hypothesis that sustaining a temperature of 55°C for long periods was what was causing the trouble, I modified the fan settings to spin up to full power at 50°C and started recording again.

That seemed to do it. I was able to play through the remainder of Uncharted (about 45 minutes) without another crash. At some point I might take a look inside the computer to see if there's anything obviously wrong, but for now this fix seems to work.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.