Playing AC Origins in a Windows VM

So for a while I had a Windows Server VM that had no problem running Skyrim and a couple of other games without issue. But for some reason it wouldn’t run Assassin’s Creed Origins. The splash screen would start up, then the game would just die w/o error.

I couldn’t figure it out at the time, but I’ve done some reasearch on the DRM in this game and it appears that it uses something called "VMProtect’ (in addition to Denuvo) that actually runs the game in a VM. Normally you can’t run a VM inside a VM, so I’m thinking this might explain why AC Origins wouldn’t run.

Do you think setting up a nested hypervisor would fix this? If it did, would performance be abysmal?

I’m rebuilding my Linux box, so I can’t play with it right now, but I’m planning to migrate from Proxmox to KVM+virt-manager. Is a nested hypervisor possible with virt-manager?

To solve this (hopefully), you need to enable the nested flag on your kvm module.

On intel, add this to /etc/modprobe.d/kvm-intel.conf:

options kvm-intel nested=Y

On AMD, add this to /etc/modprobe.d/kvm-amd.conf:

options kvm-amd nested=1

See if that helps.

2 Likes

Sadly, that did not work. With AC:Origins I get the uPlay login, then the splash screen, then a BSOD. I believe the error was a kernel mode exception. Any other suggestions?

On the positive side, using virt-manager instead of Proxmox eliminated the audio issues I was experiencing with Windows in a VM. 3DMark Timespy works, though I’m experiencing a fairly significant performance deficit (~15%), but that could well be because I’m using Windows Server.

Is there a reason for running windows server?

I wonder if AC Origins won’t run on the server edition.

Because I don’t have a spare consumer level Windows license, and it’s easy to get an evaluation copy of Windows Server. Other games seem to work fine, though as I mentioned there’s a performance penalty.

What’s your hardware setup? 15% could be due to some non-optimal CPU/memory configuration.

Dell Precision T5500, Xeon X5670 (6c/12t @ 2.9 GHz), 24GB ECC DDR3-1066, Samsung EVO 950 512GB, GTX 670 for host, 1050 Ti for Windows guest. Used Graywolf’s setup (Debian Stretch + KVM + virt-manager.)

I’m also having a slight A/V sync problem. Audio is ever so slightly out of sync with video, but it’s cumulative. After about 10 minutes they’re hopelessly out of sync.

Are you using HDMI audio or a virtual audio device to pass to host? I’ve never encountered a situation where they grew more out of sync as time goes on.

Are you married to Debian or would you be willing to consider Fedora? I’ve had nothing but trouble on Debian based distros.


As far as the 15%, there are a number of things that could do this. (this is just a single socket system, correct?)

For Dual-socket systems, you need to make sure you’re pinning properly to a single NUMA node, or that you’ve set up your guest to be NUMA aware. The second is complicated, so just make sure you’ve got everything on one NUMA node. From there, you also want to make sure that KVM only uses memory that’s attached to that NUMA node. (not sure how to do that, I’m hoping to get my hands on threadripper to write a guide on that)

The following applies to all systems:

  • Include the following patchsets:
    • ck, BFQ, BFS
  • use static hugepages for your memory backing
  • use the isolcpus kernel command line flag
  • make use of virtio for everything you can on the guest.

Using HDMI. I’ve tried a virtual ich6 but couldn’t get it to output any sound. I fixed the audio sync problem by enabling message signal interrupts on both the NVidia video and audio devices.

While the T5500 is capable of supporting a dual-socket config, I don’t have the necessary riser card, so I only have one processor at the moment, though I’m considering acquiring another. Westmere Xeons are currently dirt cheap, as is DDR3 ECC RAM.

I ran a few benchmark passes, and it seems the performance penalty is about 8%, not 15% - what I would consider tolerable. I still believe this is due to Windows Server - see this video benchmarking games under Server 2016.

Of your suggested tweaks, the only one I’ve implemented is running VirtIO drivers for storage and neworking. Are the patches you mention for the kernel or KVM? What does isolcpus do? And I’m not sure how to apply hugepages…

For years I’ve stuck with apt based distros because I ran into a number of issues with rpm database corruption. Also, I tried CentOS recently and was annoyed by the number of 3rd party repos I had to enable to get a fully functional desktop environment. Debian, OTOH, seems to have everything needed once you enable the contrib and non-free repos. ATM, Debian seems “good enough” and I’ve already sunk a few days into the system getting it operational.

By the way, thanks for sharing your experience with this. It is appreciated.

VMProtect/Denuvo = typical DRM shit that stops people who have purchased a game from playing it how they want.

I really can’t stand this stuff, in short it is going to force you to obtain and run a cracked copy of the game if you want to play it on your system of choice. This sucks and obviously isn’t something you should do. You could vote with your wallet and seek a refund. No game is that good that you should be forced to obtain a cracked copy.

Being realistic, I suggest you contact the publisher and explain the problem, you are doing nothing wrong in trying to run it on your setup so they should want to try and help their paying customers.

BTW - The VM in VMprotect is not really a proper VM in the sense that nested virtualisation will help it run. They may have also written code to detect if it is running on a virtualsied Windows machine to prevent that (I have no idea why).

Actually AC Origins hasn’t been cracked yet. And of course I’ve already played for a few hours on my laptop, so I can’t get a refund. I don’t think uPlay allows refunds anyway.

I could try contacting tech support, but i’m pretty sure they’d blow me off because I have an “unsupported config.”

It is playable on my Windows laptop, but obviously a desktop would offer a better experience.

I agree that this is a crappy situation, but should we blame the publisher or the pirates for this kind of BS?

Ditto.

Why not both?

I’d just tell them that it worked for a few hours and when you tried to play it the next day it stopped working. They’ll probably have you go through troubleshooting stuff, then once it’s proven that it won’t work, they may be able to refund you.

Agreed. The publisher is wrong for making these games only run in perfectly validated situations, but the pirates essentially forced their hands.

Newsflash, boys and girls. AC Origins works in a Windows 8.1 VM running under VMWare ESXi 6.0u2. So there should be some way to get this to work with KVM, shouldn’t there? I did have to hide virtualization from the NVidia driver in the ESXi config file, but haven’t done anything terribly unusual with the ESXi VM. Any thoughts?