Sunday, September 19, 2021

Playing Snailiad on Debian Linux in 2021

Flash is dead. It's still a bummer that Adobe hasn't just released the source code for public maintenance.
There are still some flash games around which should be preserved for future generations. Snailiad is one of them.

I've joined the official discord server of Snailiad to check for the currently accepted way of playing it. It turns out that newer versions of Flash are playing Snailiad at a wrong speed and the recommended way is using Flash 11.3 for it.

The old Flash binaries can be grabbed on archive.org.
Disclaimer: Download this program at your own risk. It's an old preserved linux binary and I can't assure its authenticity!
Please check the md5sum before installing: 11b83aafdd4de9b64590b2ed43c6cb08
https://archive.org/download/standaloneflashplayers/fp/fp_11/11.2.202.644/

As this is a 32 bit application, some libs need to be installed in their 32 bit version.
sudo apt-get install libxt6:i386 libgtk2.0-0:i386 libasound2-plugins:i386
Then you should be fine with:
./flashplayer Snailiad.swf
Happy Snailing around!

Tuesday, March 16, 2021

100% disk usage on SSD and system freezes on Windows 10

I'm no ordinary Windows user. I boot the system, I play some Doom Eternal, play some VR and then I'm rebooting to Linux.
When I bought my current PC last year in March I haven't noticed it really but everytime I install something, my computer freezed. Not even Discord is reacting on keystrokes. It's weird and only occured under Windows.

At the moment I'm booting Windows more often as I'm playing around with development for VR and my headset is not supported on Linux. (Not a lot are anyway...)

And it keeped getting onto my nerves so I investigated with procexp64.exe and the task manager. The disk usage of my system was pretty much always at 100% during the freezes. But why is the I/O that high If no actual data is requested?

TL;DR

Then I finally found the solution here. It turned out that the Microsoft driver StorAHCI.sys has an issue with some SATA controllers if MSI is enabled. It can be disabled with regedit.

If you suffer from the same issue, maybe the provided link will also help you. I'm writing these lines to increase the odds that the next stranger will find this faster than me.


Thursday, January 28, 2021

How to play Half Life: Alyx with an HP Reverb G2 and an RTX 2070 Super - My story

Why all this?

It feels kinda awkward to write this. I mean... duh... you just buy an VR Headset, buy the game and play it. It runs on Windows so how difficult can it be?

I had no idea and this is my story.

Until 2020 I didn't had lots of experience with VR. Back when the Oculus Rift DK2 was available I borrowed it from a friend and played some Minecrift (The spelling is correct) with it. It was a mod to make the Java Edition usable with this particular VR headset. It was the early age when Motion controlls were not availabe. It was a horrible experience. I felt sick after it and the view inside was like looking through a screen door as the pixels had some distance in between. I also played a Half Life 2 mod but it looked worse than Minecraft as all textures were washed out. The resolution of the headset was just not high enough.

Then it went quiet for me concerning VR. Someday a friend showed me his PSVR for his PS4. I didn't like it as well. The resolution was again not high enough. The games were boring and uninspired. At least that's what I thought at that time.

In August 2020 I've visited a friend during a vacation and he showed me his Oculus Quest. The time has passed and so did the technology. Motion Controls are now the norm and more creative games were available. For the first time I've played Beat Saber and I loved it. We also played "Keep talking and nobody explodes" together and as we both are quite Retro when it comes to gaming, he also showed me the VirtualBoy emulator VirtualBoyGo. It was a nice experience and I wanted more. His brother owned the Valve Index and was so kind to let me compare it to the Quest. I could play Beat Saber as well. At the time I was overwhelmed so I didn't noticed much resolution difference. Everthing was new: Inside Out Tracking? Lighthouses? Knuckles with Fingertracking? Guardians?

At that day I knew that I wanted this as well. VR has matured into a state I believed I could now have fun with. And so it started.

What Headset to get?

During the time I've made the decision to get into VR, there were quite some options for headsets to buy. I wanted to go for PC VR as I just bought a new PC and wanted to have the best graphics for my VR experience. Also I really wanted to play Half Life: Alyx which was already known as one of the first AAA VR games. So it was either the Valve Index, or the just announced HP Reverb G2, which was advertised as having a higher resolution and therefore being less prone to the - so called - screen door effect. Some YouTubers already got hold of some early samples and made in-lense videos to show the resolution differences between Oculus Rift S, Valve Index and the HP Reverb G2. I was hooked onto the G2, even so this meant that I had to wait some weeks until I can get my hands on one of them. But that was ok. No need to rush. I've already missed like 4 years of VR and some weeks wouldn't hurt.

Waiting times for the Headset to arrive...

November came, no G2.... issues with the shipment.

December came, no G2.... a little bit of frustration.

On the 21.12.2020, just before Christmas, the package arrived. So by accident I've just made myself a present for the holiday season. Luckily, one day after that I even got my lenses from VROptiker. I was ready!

I even started Windows after half a year as it was booted to play Doom Eternal when it came out.
Yes, I'm a Linux user....

So, I plugged it in and after some Windows updates and installation routines of the Windows Mixed Reality portal I got this:

Error Code 7-14, indicating an USB 3.0 issue


Huh. Whats, this? Omg. Please don't tell me that the Headset is broken. That would be awful.

I searched about this 7-14 error code on the internet and it turned out that a lot of people have this issue. It was related to bad USB 3.0 ports on AM4 socket AMD boards. With my B450 I'm also into the party. What could I do? Would my VR experience end here? Just days before christmas?

At that time I've stumbled onto quite some websites. I've found the german website vr-legion, which gave some tips and tricks about this issue. I gave it a shot and bought the USB 3.0 Vivanco USB Hub 36663 at a local electronics store. It was Corona time but I was lucky that I could order online and grab it at the store.

Back home I was full of hope. I've connected the USB hub and there we go. The headset worked and I was standing at the Cliffhouse of Windows Mixed Reality. I even was able to play some Beat Saber.

But something was off. The tracking stuttered and sometimes the Audio was gone and came back. I could hear from my monitor that the USB plug-in and plug-out sounds were played. Sometimes the view in my headset stopped and locked me in place, even so I was moving in reality. Sometimes the view rotated 180° and I could see like I had eyes on my back. It was an awful experience.

I've then ordered the vr-legion suggested USB 3.0 PCIe card from Inateck. But it had the same issue as the Hub. A friend and neighbor was so kind and bought a second hand Inateck card one day before christmas so I won't be so sad about it. It was an older Inateck card which I couldn't find online any more. But it had the same issues. Both Inateck cards had in common that they used the Fresco chipsets for USB3.0 implementation. They don't seem to be so realiable for VR.

Was the headset really broken then? I've searched online and found the german Youtuber Zitronenarzt VR wo had similar issues as well. After Christmas was over, I didn't really knew what to do. My neighbor suggested to get a PCIe USB 3.0 card from CSL which is supposed to use an NEC chipset. This chipset was one of the two which were also suggested by Zitronenarzt. I got it again second hand from a former Oculus Rift player, a headset which shares these USB issues as well. And? It worked! The audio dropouts were gone and also the full tracking losses were a thing of the past.

One note though. It has a Renesas chipset. Not NEC. But it works as well. 

CSL PCIe USB 3.0 Card with a Renesas Chipset, which was more reliable

Tracking Stutter issues, glitches in the flashlight

So what to do now? Playing some Beat Saber was the best option. And also buying and downloading Half Life: Alyx. During that time, a christmas steam sale was still active and I also went for Superhot VR and Moss, so I had some VR titles to play.

Beat Saber worked quite well. Quite some fast paced action. I've played the Campaign to get into it. Parallel to that I've also started to play Half Life: Alyx (now shortened to HL:A) as I really loved Half Life 2 and thought this must be the best experience to get with current VR technology.

The game itself worked kinda sorta. But something was still off. I could see it in the Cliff house. I could see it in the Menu of Beat Saber. And I could see it in HL:A all the time while standing still. My head tracking had stutter issues. It was very subtle but it was always there. It was almost like the tracking was one frame behind my real movement. It's difficult to describe.

I've searched online about this but couldn't find answers. I've contacted the HP customer support but they weren't able to reproduce the issue. At that time I've also experienced that the image shown by my flashlights (Microsoft's name for looking through the headsets inside-out tracking cameras) had some pixel issues now and then. I really thought that this was the culprit of the stutter and told the support that. But they never answered this one question.

At that time I've thought that the situation improves when pressing the headset against my head. But boy, was I wrong. That only reduced the symptoms.

Windows 20H2

As you might know by now, I'm a full blooded linux user. I only boot Windows when I really need it. My current Windows 10 was build 1909. I always wondered why the settings menu of the Mixed Reality portal looked different on pictures I've found online. I also didn't knew that an update to 20H2 must be manually activated. Previously I just grabbed the normal updates and thought this was enough. And so I updated to 20H2.

Did it fix the issue? I don't know anymore. Maybe it did and you should update as well.

The Nvidia driver 446.14

I don't know how I got this information in the first place, but I've notived an ongoing discussion about Nvidia drivers and VR compatiblity. It was on various forums, reddit and also the offical support forum of Nvidia. With a certain Nvidia driver, frame drops seem to occur more likely in VR.

As a user of a RTX 2070 I was still able to downgrade. And so I did and it improved my experience. The Beat Saber menu no longer stuttered and also standing still I seem to have no issues any more.

I've played a few days and enjoyed HL:A while still being contact with the HP support.

Half Life: Alyx - Chapter 5: Northern Star

The first chapters were a blast to play. I liked the concept to have an option on how I would like to move in the game. As a VR newcomer I went for the "blink teleport": I point somewhere and by letting go the left stick, I teleport to that location. It was the same concept which is also used in the Mixed Reality Cliffhouse and SteamVR home as it reduces motion sickness. Everything was fine until chapter 5 of the game and then it went down again.

Everytime I used the teleport, the game dropped 8 frames. Extreme motion stutter was the result. So I've contacted the Steam support about this issue. Sadly they couldn't help me as this issue seems to be unknown to them.

The Nvidia hotfix driver 461.33

At this time I gave up on HL:A for a moment and started to play Superhot VR. The game worked without any flaws (apart from the stuttery menu room) and again was blast to play.
I've also observed the support forum of Nvidia about the stutter issue and suddenly it happened: On 20.01.2021 a hotfix was released. It didn't really took off for me at first. Beat Saber started to stutter and also HL:A stuttered extremly. But the 8 frame drops were gone and replaced by exactly 1 which was then filtered out by the motion reprojection of Windows Mixed Reality.

Tweaking Half Life: Alyx Launch Options

I've experimented a bit and also searched further about performance issues with HL:A. One of the sources which helped me with this issue was this website. It helped me to understand the dynamic scaling system of HL:A which was very important for the next part of the fix. I can also recommed reading this article about the differend fidelity levels and debug mode for better investigation.

With this knowledge I've applied these launch options:

-console -vconsole -novid -nowindow +vr_perf_hud 1

-console -vconsole allows to open the console by pressing ~ on an english keyboard layout. Might come in handy (It doesn't work with a germany keyboard layout)

-novid removes the Valve intro. For faster testing of settings.

-nowindow removes the spectator mirror window and increases performance.

+vr_perf_hud 1 activates a visualization of the dynamic scaling head room analysis. (say that 3 times fast)

You can read more about this visualization here. While doing so, I've noticed that my HL:A instance only has 4 levels of details to choose from while usually there should be 8. I was confused. But nontheless I've found a kinda sorta working solution.

I've decreased the application specific super sampling to about 50% which is then multiplicated with 76% which is my automatic super sampling setting of SteamVR and there I had a kinda sorta working solution. But the game didn't really look that sharp anymore. So something was still wrong. In the game itself you are capable of configuring the visual quality: Low, Medium, High, Ultra. The settings didn't had any effect on my performance though.

The last Fix - Don't use Vulcan

I've continued to play the game went for the later chapters. It didn't look really sharp but I still had my fun with it. And a few hours away from the end It kinda hit me.... Vulcan.... Direct X11.....

I remembered that at the start I went for Vulcan instead of DX11, which is the default of HL:A. I switched again to DX11 and.... wow. The 4 levels of detail again turned into 8 and the game looked much sharper. I've continued to play the end of the game and really had a good time with my settings.

I only felt a little bit sad, as it would have been better if I had known all this from the start. In the end I've resolved my issues and hopefully finally can enjoy my VR experiences.

TLDR or Conclusion

So you have performance issues with Half Life: Alyx? Try the following :

  • Apply launch options -console -vconsole -novid -nowindow
  • Reduce Application specific super sampling. Keep in mind that Half Life: Alyx is capable of a scaling factor bigger than 100% when possible. The Steam super sampling is only a reference for the game. It only defines the internal 100% as it seems.
  • Try Vulcan and DX11 and compare both performance wise.
  • Try the new hotfix driver from Nvidia with the version 461.33
  • Deactivate any GPU monitoring (exception is SteamVR performance graph)
  • Deactivate Stopsign VR, fpsVR or any Steam Overlay
  • Decrease Steam Overlay rendering quality to Low (if you really need overlays)
  • You won't see a difference and it performs better.
  • Optional: Deactivate Windows Mixed Reality Motion Reprojection for HL:A
  • Set from "Auto" to "Per Application"
  • Disable Motion Smoothing in Video settings for Application.
  • Launch the game with +vr_perf_hud 1 and observe the selected level of detail.
    • Alter the application specific super sampling according to the headroom.
  • Check the SteamVR performance graph
    • Pink spikes must be avoided on all costs as they are frame drops and cause stutter.
    • Orange should not occur often. It's more ok if Motion Reprojection / Smoothing is enabled.
Something I can't confirm. But maybe it works for you:
  • Deactivate RGB tools.
  • Discord can be a problem (I don't see this)