ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.59k stars 1.07k forks source link

Age of Empires II: Definitive Edition (813780) #3189

Open ThaChillera opened 5 years ago

ThaChillera commented 5 years ago

Compatibility Report

System Information

I confirm:

Proton Log

Symptoms

When it starts, I get a splash screen and a popup: Title: "Wine C++ Runtime Library". Text: "A Program: Z F Press OK to exit program, or Cancel to start the Wine debugger."

Reproduction

Just boot the game normally

aeikum commented 5 years ago

Possibly due to missing SpVoice object. From your log:

2901.866:0039:003a:err:ole:CoGetClassObject no class object {96749377-3391-11d2-9ee3-00c04f797396} could be created for context 0x17
2909.925:0039:003a:trace:seh:NtRaiseException code=80000003 flags=0 addr=0x7bcaf638 ip=7bcaf639 tid=003a
ThaChillera commented 5 years ago

How can I solve this?

aeikum commented 5 years ago

If you want to get into Wine development, implement the SpVoice class and whatever interfaces the app requests (probably ISpeechVoice, possibly more) in dlls/sapi, and see if that is enough to get the game running or if it needs more work past that.

Marroja commented 5 years ago

I have tried installing several versions of VC Runtime, both using Winetricks and with normal prefix installation and none of them worked. I also tried using DotNet but I haven't got past that same error you're telling us @ThaChillera

I tried installing SpVoice dll with winetricks today but still nothing. @aeikum I tried sweeping all the error's on Chillera's log and on mine but still nothing.

In case it helps in any way:

https://gist.github.com/Marroja/2c9b6a118c7d6b19359839b92a3fd7c3

Marroja commented 5 years ago

At the moment I understand the main problem is regarding an unwinding problem. I'm not sure how to deal with it.

ozyman42 commented 5 years ago

Seeing this issue on a new install of the officially released game.

Mte90 commented 5 years ago

I think that the problem is related also to https://github.com/ValveSoftware/Proton/issues/2995 so probably in this other ticket there are info to fix this one.

krisives commented 5 years ago

AFAIK this is actually a problem related to sapi.dll not existing?

busyboredom commented 5 years ago

As a workaround, how hard would it be to kill the speech recognition functionality? I don't think sapi would be needed for anything other than speech recognition, right?

nawaik commented 5 years ago

Has anyone tried this yet?

https://www.reddit.com/r/aoe2/comments/dwuplr/how_to_run_age_of_empires_2_definitive_edition_on/

Mte90 commented 5 years ago

I am trying this but with the last proton (waiting to download the game). Anyway this tutorial suggest to use DXVK 1.4.4 or newer and Proton 4.11-8 (https://github.com/ValveSoftware/Proton/releases/tag/proton-4.11-8) already include them.

So the big difference with proton is wine staging that they are at wine 4.20 (https://dl.winehq.org/wine/source/4.x/) and to execute the 2 commands of the tutorial to set win10 and reinstall vcrun2017.

So my doubt are more about proton that is using an old version of wine compared to this tutorial.

mozo78 commented 5 years ago

Following the instructions from reddit: https://i.imgur.com/zdleeea.png Using Wine-Staging 4.20.

Mte90 commented 5 years ago

I installed the game in steam with proton 4.11-8 and get the already known error. Using the reddit thread (after that installation in steam with all the dependence) I am trying with executing protontricks 813780 win10 vcrun2017. This didn't worked :-(

Mte90 commented 5 years ago

After protontricks 813780 speechsdk vcrun2017 win10 I am getting the same error but now the library sapi.dll is avalaible, I am trying to understand if it isn't registered.

"/home/myuser/.steam/steam/steamapps/common/Proton 4.11/dist/bin/wine" regsvr32 sapi.dll Says that is registered rightly.

Mte90 commented 5 years ago

Last insights about sapi.dll I don't think that is the problem because is a common issue in wine and everything worked (I searched on mailing lists and so on). So I think that is a fake positive, looking at my debug:

10919.688:002f:0030:err:ole:CoGetClassObject class {96749377-3391-11d2-9ee3-00c04f797396} not registered
10919.689:002f:0030:err:ole:CoGetClassObject class {96749377-3391-11d2-9ee3-00c04f797396} not registered
10919.689:002f:0030:err:ole:create_server class {96749377-3391-11d2-9ee3-00c04f797396} not registered
10919.690:002f:0030:fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported
10919.690:002f:0030:err:ole:CoGetClassObject no class object {96749377-3391-11d2-9ee3-00c04f797396} could be created for context 0x17
10956.011:002f:0030:trace:seh:MSVCRT_raise (22)
Setting breakpad minidump AppID = 813780
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198055726040 [API loaded no]
10957.051:0016:001a:trace:loaddll:free_modref Unloaded module L"C:\\windows\\system32\\drivers\\winebus.sys" : builtin
10957.051:0016:001a:trace:loaddll:free_modref Unloaded module L"C:\\windows\\system32\\setupapi.dll" : builtin
pid 64012 != 64011, skipping destruction (fork without exec?)

The real error is at MSVCRT_raise but doesn't include any hints about the error. I am not an expert of wine/proton but I finished all my ideas.

Mte90 commented 5 years ago

Uhm I said to quickly, enabling D9VK (PROTON_USE_D9VK=1) I got an error finally:

11342.603:002f:0030:trace:seh:MSVCRT_raise (22)
Unable to read VR Path Registry from C:\users\steamuser\Local Settings\Application Data\openvr\openvrpaths.vrpath
Setting breakpad minidump AppID = 813780
Steam_SetMinidumpSteamID:  Caching Steam ID:  76561198055726040 [API loaded no]
11343.640:0016:001a:trace:loaddll:free_modref Unloaded module L"C:\\windows\\system32\\drivers\\winebus.sys" : builtin
11343.640:0016:001a:trace:loaddll:free_modref Unloaded module L"C:\\windows\\system32\\setupapi.dll" : builtin
pid 64461 != 64460, skipping destruction (fork without exec?)
GSchuemann commented 5 years ago

Hello there, I am the creator of the tutorial and looking at your and mine output I discovered something which might be helpful for you. I also get this part: 010d:fixme:ntdll:EtwEventRegister ({4372afee-73b0-42ce-9821-7e134361b519}, 0x13f006fd0, 0x13f0595c0, 0x13f0595b8) stub. 010d:fixme:nls:get_dummy_preferred_ui_language (0x8 0x22e1cc 0x22e630 0x22e1c8) returning a dummy value (current locale) 010d:err:ole:CoGetClassObject class {96749377-3391-11d2-9ee3-00c04f797396} not registered 010d:err:ole:CoGetClassObject class {96749377-3391-11d2-9ee3-00c04f797396} not registered 010d:err:ole:create_server class {96749377-3391-11d2-9ee3-00c04f797396} not registered 010d:fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported 010d:err:ole:CoGetClassObject no class object {96749377-3391-11d2-9ee3-00c04f797396} could be created for context 0x17

The error Message where you can click on ignore appears right now, when clicked on ignore it goes on like this: 0142:fixme:shell:CustomDestinationList_QueryInterface not implemented for {00000003-0000-0000-c000-000000000046} (unknown) 0142:fixme:shell:CustomDestinationList_QueryInterface not implemented for {00000003-0000-0000-c000-000000000046} (unknown) 0142:fixme:shell:CustomDestinationList_QueryInterface not implemented for {00000019-0000-0000-c000-000000000046} (unknown) 0142:fixme:shell:CustomDestinationList_BeginList 0x5c3a678 (0x993fbcc {92ca9dcd-5622-4bba-a805-5e9f541bd8c9} 0x993fbd8): stub ...

So with wine-staging 4.19 I don't get the MSVCRT_raise error. In mozo78s output (wine-staging 4.20) this error is also missing there just isn't an ignore option for him (for some reason).

DXVK is needed to display buildings and units otherwise they are invisible it shouldn't have to do with this bug.

mozo78 commented 5 years ago

Here's the log with Wine-Staging 4.19: https://pastebin.com/DWdmJtZh

kubapet commented 5 years ago

Hello there, I am the creator of the tutorial and looking at your and mine output I discovered something which might be helpful for you. I also get this part: 010d:fixme:ntdll:EtwEventRegister ({4372afee-73b0-42ce-9821-7e134361b519}, 0x13f006fd0, 0x13f0595c0, 0x13f0595b8) stub. 010d:fixme:nls:get_dummy_preferred_ui_language (0x8 0x22e1cc 0x22e630 0x22e1c8) returning a dummy value (current locale) 010d:err:ole:CoGetClassObject class {96749377-3391-11d2-9ee3-00c04f797396} not registered 010d:err:ole:CoGetClassObject class {96749377-3391-11d2-9ee3-00c04f797396} not registered 010d:err:ole:create_server class {96749377-3391-11d2-9ee3-00c04f797396} not registered 010d:fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported 010d:err:ole:CoGetClassObject no class object {96749377-3391-11d2-9ee3-00c04f797396} could be created for context 0x17

The error Message where you can click on ignore appears right now, when clicked on ignore it goes on like this: 0142:fixme:shell:CustomDestinationList_QueryInterface not implemented for {00000003-0000-0000-c000-000000000046} (unknown) 0142:fixme:shell:CustomDestinationList_QueryInterface not implemented for {00000003-0000-0000-c000-000000000046} (unknown) 0142:fixme:shell:CustomDestinationList_QueryInterface not implemented for {00000019-0000-0000-c000-000000000046} (unknown) 0142:fixme:shell:CustomDestinationList_BeginList 0x5c3a678 (0x993fbcc {92ca9dcd-5622-4bba-a805-5e9f541bd8c9} 0x993fbd8): stub ...

So with wine-staging 4.19 I don't get the MSVCRT_raise error. In mozo78s output (wine-staging 4.20) this error is also missing there just isn't an ignore option for him (for some reason).

DXVK is needed to display buildings and units otherwise they are invisible it shouldn't have to do with this bug.

Have you tried to run winetricks -q vcrun2015 When using wine 4.19 staging?

mozo78 commented 5 years ago

Yes I did. It doesn't change nothing :( Here's the log with vcrun2015 and Wine-Staging 4.19: https://pastebin.com/Xk04auTH

kubapet commented 5 years ago

I was actually asking Georg, but nevermind, I GOT IT WORKING on pure wine 4.19 staging installation, I even though I got the "message where you can click ignore" (the same one as you reported you got on 4.20 https://i.imgur.com/zdleeea.png.. but as georg said on 4.19 staging you can click on ignore for some reason)..

GSchuemann commented 5 years ago

Great that it also worked on pure (wanted to test this in the next few days, but other people aren't as lazy as me ;))

The missing buildings are fixed with DXVK.

Interesting that the ignore button is missing in 4.20

kubapet commented 5 years ago

:) So where did you manage to run it before? or how did you know that DXVK is needed for buildings and units?

GSchuemann commented 5 years ago

:) So where did you manage to run it before? or how did you know that DXVK is needed for buildings and units?

I saw the game needed DirectX11 (looked at Systemrequirements) and I knew that it isn't yet fully implemented in wine, so I tried DXVK, which just worked.

I reinstalled vcrun, because I thought that a reinstalled vcrun would help. I hadn't the idea to click on ignore before I did that so I was unsure if it really runs on pure.

Have you also changed the Windowsversion or does it also run with "Windows 7" ?

kubapet commented 5 years ago

:) So where did you manage to run it before? or how did you know that DXVK is needed for buildings and units?

I saw the game needed DirectX11 (looked at Systemrequirements) and I knew that it isn't yet fully implemented in wine, so I tried DXVK, which just worked.

I reinstalled vcrun, because I thought that a reinstalled vcrun would help. I hadn't the idea to click on ignore before I did that so I was unsure if it really runs on pure.

Have you also changed the Windowsversion or does it also run with "Windows 7" ?

I am not sure we mean the same thing by "pure" .. I still ment the staging version, just not proton.. And yes, it runs with Windows 7 as well.. But now I have installed the DXVK and it doesn't run anymore.. The game just doesn't pop up, only cursor changes and then nothing is rendered and mouse is not moving (looks like the screen is controllerd by the app but nothing is rendered) and I can get out of it only after I press alt+tab .. I am probably still missing some DX dependencies ?

EDIT: OK, now it runs, and buildings and units are rendered properly.. I just wasn't patient enough :)

EnriqueWood commented 5 years ago

Has anybody tried online functionality?

mozo78 commented 5 years ago

I was actually asking Georg, but nevermind, I GOT IT WORKING on pure wine 4.19 staging installation, I even though I got the "message where you can click ignore" (the same one as you reported you got on 4.20 https://i.imgur.com/zdleeea.png.. but as georg said on 4.19 staging you can click on ignore for some reason)..

What do you mean by pure? Without vcrun2017? It doesn't run both with or without vcrun 2017 installed and I have no "Ignore" button with Wine-Staging 4.19...

GSchuemann commented 5 years ago

Has anybody tried online functionality?

Spectating works flawlessly.

Haven't tried out a real match yet, but I am expecting it to work.

We mean by pure that no changes were made to the prefix.

Maybe the missing button is distribution related, I use ubuntu 19.10, which one do you use?

sulix commented 5 years ago

The reason people aren't getting the "Ignore" button on the assertion error is that when vcrun2017 is being installed, for some reason ucrtbase.dll isn't being installed properly.

Copying over a 64-bit ucrtbase.dll to c:\windows\system32 is sufficient to get the "Ignore" button to work, after which the game works fine in Proton.

Ideally, of course, either wine would support the SpApi speech API stuff properly, or the game would handle it not loading better, but this works for now.

Jabraco commented 5 years ago

Maybe the missing button is distribution related, I use ubuntu 19.10, which one do you use?

Not the guy you replied to, but I am using Manjaro 18.1.3 KDE and I also am not getting an "ignore" button on the error.

Edit: doing the above fix makes the ignore button appear for me, but the game is hanging after that when using Proton

Edit 2: can get in game now

lcrippa commented 5 years ago

Edit 2: can get in game now

Did you just have to wait or did you do something specific? Proton hangs for me too

GSchuemann commented 5 years ago

Copying over a 64-bit ucrtbase.dll to c:\windows\system32 is sufficient to get the "Ignore" button to work, after which the game works fine in Proton.

Any idea why this is missing for some people ?

When I create a new wine prefix the ucrtbase.dll is automatically in system32 without doing anything else, so it should be unrelated to vcrun.

sulix commented 5 years ago

I'm not sure why this is happening, but I've not looked in detail.

The reason there's a ucrtbase.dll already in system32 is that wine provides one: the wine version will get you the Assertion error without the "Ignore" box though, so you want Microsoft's version, so you'll want to replace (or override) the wine ucrtbase.dll with the Microsoft one. I think the Microsoft one should be being installed by vcrun2017, but I could be wrong on that (I never got it to work, and had to copy the file from windows manually).

Jabraco commented 5 years ago

Edit 2: can get in game now

Did you just have to wait or did you do something specific? Proton hangs for me too

I decided to abandon proton and instead use the suggestions here and on the reddit thread. Here's exactly what I did:

Edit: bonus tips:

EnriqueWood commented 5 years ago

I finally could get in game! thank you all guys.

I also noticed that the game is having the same Infinite scroll issue as in Age of Empires: HD Edition when you hit alt+tab (sometimes just randomly).

The root of the problem may be the same than in HD, which, according to Sulix's reply was that

"The game is using the GetKeyboardState() function to read the arrow keys (and other keys), and is not checking the result correctly. The MSDN documentation for the function only defines the low bit (0x01, meaning that the key is "toggled" à la Caps Lock) and the high bit (0x80, meaning that the key is pressed). Age of Empires (both 1 and 2) check if the key is pressed by checking if the result is > 1. This works most of the time, as it does not depend on the low bit. However, the undefined "middle" bits are occasionally used by windows/wine internals, and are not guaranteed to be zero. The game should check only the high bit (by ANDing it with 0x80).

"

It's very likely that this is the very same issue happening in this version as well.

mozo78 commented 5 years ago

Has anybody tried online functionality?

Spectating works flawlessly.

Haven't tried out a real match yet, but I am expecting it to work.

We mean by pure that no changes were made to the prefix.

Maybe the missing button is distribution related, I use ubuntu 19.10, which one do you use?

I use Arch :) Thank you guys! Copying ucrtbase.dll did the trick!!!

Mte90 commented 5 years ago

It's not clear for me about how to get that working with Proton. I tried protontricks 813780 speechsdk vcrun2017 win10 and later downloaded ucrtbase.dll using https://github.com/ValveSoftware/Proton/issues/1538#issuecomment-529124095

cd $(mktemp -d)
wget "https://aka.ms/vs/16/release/vc_redist.x64.exe"
cabextract vc_redist.x64.exe
cabextract a10
ls ucrtbase.dll

And put on /home/my-user/.steam/steam/steamapps/compatdata/813780/pfx/drive_c/windows/system32/. Everyone talks about to uninstall vcrun2017 but is not clear for me that step but I think that reinstall should be enough. I get now the window with the ignore button but on pressing the game crash.

AoE2DE_s_d3d11.log inside the game folder contain this:

warn:  D3D11CoreCreateDevice: Adapter is not a DXVK adapter
info:  Game: AoE2DE_s.exe
info:  DXVK: v1.4.4-8-gb489f789
warn:  OpenVR: Failed to initialize OpenVR
info:  Enabled instance extensions:
info:    VK_KHR_get_physical_device_properties2
info:    VK_KHR_surface
info:    VK_KHR_win32_surface

PS: I get the ignore window also without speechsdk installed and without reinstall vcrun2017, it's just enough to replace the ucrtbase.dll file

EnriqueWood commented 5 years ago

I was actually asking Georg, but nevermind, I GOT IT WORKING on pure wine 4.19 staging installation, I even though I got the "message where you can click ignore" (the same one as you reported you got on 4.20 https://i.imgur.com/zdleeea.png.. but as georg said on 4.19 staging you can click on ignore for some reason)..

Having done that... can you install the UHD DLC? My wine steam library is shown black... Setting wine config to WinXP won't work as it is not supported anymore.

Mte90 commented 5 years ago

I got it working with Proton! Well not the official one anyway. Using a Proton fork that include the latest wine and stuff <Link removed by moderator>, installing as reported in the readme. Next closed and restart steam, change as say the readme of this fork and pick that Proton version. I removed the folder /home/myuser/.steam/steam/steamapps/compatdata/813780/ and executed in Steam the game with this new proton (so reinstall everything).

Got the usual error az etc, executed protontricks 813780 vcrun2017, after replace the ucrtbase.dll in /home/myuser/.steam/steam/steamapps/compatdata/813780/pfx/drive_c/windows/system32/.

In launch option of AGE2DE I put PROTON_NO_ESYNC=1 PROTON_USE_WINED3D=1 %command% and now is working! The big problem is that the units and buildings are invisible so I am trying to understand why. If I not use wined3d I get CreateDXGIFactory() failed error.

kisak-valve commented 5 years ago

Hello @Mte90, unfortunately, that build of Proton contains a legally problematic workaround which was integrated into it and can not be recommended here.

Mte90 commented 5 years ago

uh okay but shows that the big issues here is that proton is based on an old wine version to support this game.

tkamat commented 5 years ago

I am trying to follow the above steps, but I keep getting a black screen when trying to access the steam library or store through wine. Has anyone else experienced this?

kisak-valve commented 5 years ago

Hello @EnriqueWood, @tkamat, in general, Steam for Windows when run in Wine should be discussed on wine's forums/bug tracker.

That set aside, there's a good chance you've encountered the same issue that was reported at https://bugs.winehq.org/show_bug.cgi?id=39403 and you may have some luck launching steam.exe with -no-cef-sandbox.

Mte90 commented 5 years ago

Anyway on my laptop when I switch to use DXVK I get an alert about VRAM is not enough to play. In my case is because my laptop has 2 video cards intel/nvidia. So I am trying now with primus and primusvk to see if I can switch to the nvidia one that is more powerful.

sulix commented 5 years ago

As a quick status update, I've been playing this quite a bit under Proton 4.11, and while it's not exactly stable (or particularly performant), it's definitely playable.

So, my current steps for getting this to work with Proton 4.11 are to:

I've not needed to:

I've noticed:

Otherwise, it's working pretty well.

GSchuemann commented 5 years ago

There appear to be some performance problems, particularly with the higher graphics settings (resolution in particular). Don't know if that's the case on Windows as well, but it runs much worse than I expected, and much worse than Age of Empires 1 DE. (It's still very playable at low resolutions, though).

I've read a test on Windows where they tested the 4k DLC on a PC with an i7 4770k, 16gb RAM and a gtx 1660ti. They got sometimes less then 30FPS and they were still running the game on 1080p.

I will test this out in the next few days on a 1440p monitor and see what performance I can get there. But having read this test it looks like we don't ve such a bad performance on this game compared to Windows ;)

I can also confirm that the game is able to freeze the system, on an AMD GPU so this is nvidia unrelated.

OT (hope this is okay):

Anyway on my laptop when I switch to use DXVK I get an alert about VRAM is not enough to play. In my case is because my laptop has 2 video cards intel/nvidia. So I am trying now with primus and primusvk to see if I can switch to the nvidia one that is more powerful.

Why don't you switch permanently with prime-select nvidia or use nvidia on deman and then use the GPU with: __NV_PRIME_RENDER_OFFLOAD=1 Application If you select the nvidia via prime you might need to initialize vulkan with sudo vulkaninfo

tkamat commented 5 years ago

@sulix I can confirm that your Proton solution works perfectly, I am even getting relatively good performance.

mozo78 commented 5 years ago

Here's how it performs: https://youtu.be/NNFcSKum7CQ After ~15 min. it slows down.

mhsabbagh commented 5 years ago

The solution suggested by @sulix didn't work for me. However, going one stop further by enabling PROTON_USE_WINED3D enabled the game to work and start, but as others said, the units/buildings are not visible, so it's not playable.

AMD Ryzen 5 2500u with Vega 8, 8GB of RAM on Ubuntu 19.10.

busyboredom commented 5 years ago

On wine-staging 4.20:

-- Winetricks vcrun2017 -- Replace ucrtbase.dll -- Enable DXVK -- Click "ignore".

And then it was playable for me (with very poor performance). It would not give the "ignore" option until after adding both vcrun2017 and replacing ucrtbase.dll.

I'm on Ubuntu 19.10 with I7-6700k, 16GB RAM, GTX 1060 6GB.