ValveSoftware / Proton

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

Age of Empires: Definitive Edition (1017900) #2995

Open gcavalcante8808 opened 5 years ago

gcavalcante8808 commented 5 years ago

Compatibility Report

System Information

I confirm:

====================== Proton: 1561645030 proton-4.2-9 SteamGameId: 1017900

Errors (I cant paste here because of the "Comment is too long (maximum is 65536 characters) Error": https://gist.github.com/gcavalcante8808/46146866096ba70d56a9607cc1a7c77e

Symptoms

The gamejust Crahes and wont open.

Reproduction

Install and try to run the game.

thiagozanetti commented 4 years ago

I still have no sound and intro even with latest updates and Proton 5.0.3.

Sparika commented 4 years ago

Hi, I have no sound and intro, running Proton 5.0.4. But the game works. I tried replacing the xaudio2_8 and xaudio2_9 in both system32 and syswow64 but it did not have any effect. Also the script talked about on ProtonDB make the game immediately crash after the poster screen.

captn3m0 commented 4 years ago

Game runs, but I keep hitting the autoscroll bug. I attempted running the patch from https://github.com/kukkerman/aoe2-scroll-bugfix/ against Definitive Edition, but it fails

python patch.py  AoE2DE_s.exe
Reading file...
done.

Searching for patch signatures...
failed! Some signatures are not found!

The only solution seems to be to disable scrolling entirely in the game. Anyone has an alternative?

Evpok commented 4 years ago

No audio in Proton 5.0-5 either: the game works perfectly except for that. xaudio2_9 and 2_8 dlls are both here but are both placeholders.

carlos-mg89 commented 4 years ago

Still no sound not working on 5.0.6 :( Haven't tried multiplayer though.

carlos-mg89 commented 4 years ago

<Workaround removed by moderator>

Tested on last proton 5.0.6. Asides, multiplayer works fine.

kisak-valve commented 4 years ago

Hello @carlos-mg89, the workaround you linked is legally problematic and has been removed.

carlos-mg89 commented 4 years ago

Could you @kisak-valve specifically point at the legal problem please? Perhaps we could all work out a non-legal fix.

It's sad to have to bear all this in mind, when we're in fact all doing a favour to the developers of this game.

kisak-valve commented 4 years ago

To rehash this yet again, we can not condone the redistribution of copyrighted libraries by third parties. There's ongoing work to bring up support for Media Foundation upstream, and that's the correct way forward in resolving the issue. This is being discussed in general at #1464.

mribeirodantas commented 4 years ago

Age of Empires Definitive Edition on Steam on Play (Linux) with no sound :-(.

jelofsson commented 4 years ago

No sound, did anyone find a fix? =(

morktsvammel commented 3 years ago

game starts without a problem but no intro sound and everything works fine. but when i start a game the campaign or custom map the game crashes without any error poping up. weirdly tho it worked once and the game itself was running smoothly.

bradgy commented 2 years ago

Game CTD after splash screen today after a lot of arch updates. Was previously working perfectly with Proton Experimental for at least a month or so.

steam-1017900.log

sulix commented 2 years ago

Huh… I can reproduce the crash with Proton Experimental on (K)Ubuntu 21.10 (under nVidia/Wayland), and it seems to be related to mf, as using the "nostartup" command line parameter fixes it.

Maybe it's an issue with a Proton Experimental update?

bradgy commented 2 years ago

Could be, I just switched to 6.3.8 from experimental and it worked again.

(R7 3700X, 5700XT EndeavourOS)

alasky17 commented 2 years ago

@bradgy @sulix Thank you reporting this! We switched some stub logic for MFCreateDXGIDeviceManager around so its "off by default" instead of "on by default". We'll add this game to the stubbed list for now, so it should be working again with the next experimental release, and get to work on the "real fix" - this is exactly the type of thing we were hoping to catch :D

alasky17 commented 2 years ago

@bradgy @sulix Fix shipped last night - should be working again in experimental :+1:

sulix commented 2 years ago

Cheers — I can see the workaround here, and confirm it's working again under Proton Experimental on my machine, without the nostartup option.

carlos-mg89 commented 2 years ago

The game works pretty well for me, in general, in Proton 6.3.8. However, it has happened to me already a few times that when I try to save a game, but renaming a previous save game, the game crashes while loosing all my progress on that game. Saving works perfectly fine, as loading previous saved games. The issue is only when renaming a game at the moment of saving it again.

Deleting previous saved games works too.

This is my setup:

bradgy commented 2 years ago

Ah yeah, thanks for reminding me, I noticed this too. Finished the game now, but from memory it only crashed at the save screen when I hit my arrow keys? If I just started typing the new save game name file while it was highlighted in the text entry field, I could avoid a crash. EndeavourOS, R7 3700X, RX5700XT, 32GB, proton experimental

carlos-mg89 commented 2 years ago

Thanks for the tip! I hope to remember it the next time. It was sad to lose an hour of campaign game.

LysirisMalven commented 2 years ago

Hello all,

I'm trying to run Age of Empires : Definitive Edition under Linux (Debian Bookworm Sid). I've two GCUs:

Device-1: Intel HD Graphics 530 driver: i915 v: kernel Device-2: NVIDIA GM206M [GeForce GTX 965M] driver: nvidia v: 470.103.01 Display: x11 server: X.Org v: 1.21.1.3 driver: X: loaded: modesetting unloaded: vesa gpu: i915 resolution: 1920x1080~60Hz OpenGL: renderer: Mesa Intel HD Graphics 530 (SKL GT2) v: 4.6 Mesa 21.3.8

and start from console via primusrun steam.

I've tried several proton versions, so far without success. The game doesn't start. I attached the output of my console as txt file (how can I create a full system information report?). Apparently libGL.so.1 isn't found. However, there is a /usr/lib/x86_64-linux-gnu/libGL.so.1 ! Does ELFCLASS32 mean this is a bit 64 <-> bit 32 problem?

What can I do? Thank you in advance! konsole_log.txt

kisak-valve commented 2 years ago

Hello @LysirisMalven, primus is known to be unreliable when used with the Steam Linux Runtime - Soldier container environment (https://github.com/ValveSoftware/steam-runtime/blob/master/doc/steamlinuxruntime-known-issues.md#-multiple-gpu-systems). It might be worthwhile to look at setting up NVIDIA's PRIME Render Offload (https://download.nvidia.com/XFree86/Linux-x86_64/470.103.01/README/primerenderoffload.html).

LysirisMalven commented 2 years ago

Oh, that is interesting, thanks! If I open steam with __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0 __GLX_VENDOR_LIBRARY_NAME=nvidia steam the splash screen of AOE opens and I get two error messages:

1) This system is low on video memory, you may experience low performance issues. 2) DirectX rendering could not be initialized, check if GPU supports DirectX11 and drivers are up to date.

I've a NVIDIA GeForce GTX 965M/PCIe/SSE2 and found the tip that starting with PROTON_USE_WINED3D=1 %command% might solve this issue. And indeed: The error messages don't show up any more, and the game starts... kind of... I can hear the AoE soundtrack. If I click around, I also can hear the menu buttons being pressed. But I cannot see anything, the screen is completely black. I found another tip: this could be fixed by (re)moving the start videos in steamapps/common/AoEDE/Assets/Video. I did so but that didn't help, the game stays black.

LysirisMalven commented 2 years ago

Hello all,

I now changed to proton version 5.13-6 and now it works!! Thank you!

Alexander-Wilms commented 1 year ago

I sometimes encounter this error after starting AoE DE with Proton Experimental. In the past, this error didn't occurr:

Assertion failed!

Program: Z:\home\alexander\.local\share\Steam\steamapps\common\AoeDE_s.exe
File: ../src-wine/dlls/winevulkan/loader_thunks.c
Line: 5275

Expression: "!status"

Press OK to exit the program, or Cancel to start the Wine debugger.

image

Steam Runtime System Information: https://gist.github.com/Alexander-Wilms/5736e76e8f995dd3337c1483dc770154

I'll add a log the next time it happens.

Identical error message while running World of Tanks: https://steamcommunity.com/app/1407200/discussions/0/6717729343877189458/

Similar error message with Doom Eternal: https://github.com/ValveSoftware/Proton/issues/6782#issuecomment-1564381456

sulix commented 1 year ago

Finished the game now, but from memory it only crashed at the save screen when I hit my arrow keys? If I just started typing the new save game name file while it was highlighted in the text entry field, I could avoid a crash

This is definitely still happening. There's a crash somewhere deep in InputSystem_w32.dll (+0xcc3c), which appears to be due to some msctf issue: the game is poking around in some returned object, and hits something which it expects being NULL.

It's a pain to debug because InputSystem_w32.dll is obfuscated to hell and back, and seems to be packed/encrypted somehow. It's a bit more readable when loaded (i.e, under gdb), though.

Here's a Proton log w/ +msctf. It crashes just after:

111941.590:012c:0130:trace:msctf:ThreadMgr_SetFocus (000000001216D680) 0000000012140190
111941.590:012c:0130:trace:msctf:ThreadMgrEventSink_OnSetFocus (000000001216D680) 0000000012140190 0000000000000000

Hacking ThreadMgrEventSink_OnSetFocus to be a no-op pushes the crash a few instructions later, but doesn't solve the issue.

sulix commented 9 months ago

I may have found a possible fix for the LAN multiplayer issues here: at the very least, the LAN button now shows up and seems to work.

It looks like the issue is that the UDP socket being used (which, at least on my version, isn't a dup() of the TCP one) is failing to connect() to a broadcast address because SO_BROADCAST isn't set on the socket. BattleServer.exe does seem to set this, but only after the connect() call, which fails, causing a crash. This seems to be the correct behaviour, according to MSDN (see the comment on WSAEACCES), but doesn't match reality.

In any case, a hack to make all UDP sockets SO_BROADCAST by default makes the LAN option show up in both this and AOE2DE.

From 40c02c4fc48836b00d207e4467f541758c1e12f2 Mon Sep 17 00:00:00 2001
From: David Gow <david@ingeniumdigital.com>
Date: Thu, 23 Nov 2023 15:00:24 +0800
Subject: [PATCH] server: UDP sockets should be SO_BROADCAST by default

Windows seems to allow UDP sockets to connect() to a broadcast address
without SO_BROADCAST having been set beforehand. Whether this is because
SO_BROADCAST is the default, or just a difference in semantics with
connect(), I'm not sure.

MSDN calls out this behaviour as invalid, and says that connect() ought
to WSAEACCES in exactly this situation, which matches wine's current
behaviour:
https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect

However, the 'Relic BattleServer' used for LAN multiplayer in the
'Definitive Edition' Age of Empires games crashes on start, due to
receiving this error. The game does set SO_BROADCAST, but only _after_
connect() has been called, which is too late.

It's possible this is because BattleServer.exe makes this a non-blocking
socket, and the error hasn't been generated until after the socket
option is changed, but that's just a random guess.
---
 server/sock.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/server/sock.c b/server/sock.c
index 16769fc2b4b..aefac6c8916 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -1910,6 +1910,13 @@ static int init_socket( struct sock *sock, int family, int type, int protocol )
     }
 #endif

+    if (unix_type == SOCK_DGRAM)
+    {
+        /* Windows enables SO_BROADCAST by default for datagram sockets? */
+        static const int enable = 1;
+        setsockopt( sockfd, SOL_SOCKET, SO_BROADCAST, &enable, sizeof(enable) );
+    }
+
     len = sizeof(value);
     if (!getsockopt( sockfd, SOL_SOCKET, SO_RCVBUF, &value, &len ))
         sock->rcvbuf = value;
-- 
2.42.1
Saxtr0 commented 8 months ago

@sulix i'm really glad you love this game. You are the best issues solver! Everytime i have an issue with this game, it popup your solution! Amazing!

brucetheelephant commented 8 months ago

Hello! Is anyone still looking into this?

The game doesn't launch for me.

I tried various versions of Proton from Experimental down to 6.3. I also tried starting the game with or without PROTON_USE_WINED3D=1 %command% and with or without NoStartup.

My System Information is: Operating System: Solus 4.4 KDE Plasma Version: 5.27.8 KDE Frameworks Version: 5.110.0 Qt Version: 5.15.11 Kernel Version: 6.6.4-265.current (64-bit) Graphics Platform: X11 Processors: 8 × Intel® Core™ i5-10300H CPU @ 2.50GHz Memory: 7.6 GiB of RAM Graphics Processor: NVIDIA GeForce GTX 1660 Ti/PCIe/SSE2 Manufacturer: Micro-Star International Co., Ltd. Product Name: GF65 Thin 10SDR System Version: REV:1.0

sulix commented 8 months ago

Still works fine here (with nostartup) on both Proton Experimental bleeding-edge and Proton 8.0 with the battleserver hack above on my desktop (openSUSE, KDE Wayland, Intel ARC), as well as with the default setup on Steam Deck.

Is there any error message / something suspicious in the logs / issues with other games?

brucetheelephant commented 8 months ago

I have tried using Proton Experimental bleeding-edge (with NoStartup) as well and I'm getting the same result. At the moment I have no issues with other games.

How can I check logs?

sulix commented 8 months ago
  1. Add PROTON_LOG=1 %command% to the game command-line options.
  2. Look at steam-1017900.log in your home directory.

Note that this file is often very big, so you'll definitely want to upload it elsewhere (as a GitHub gist, for example), or (carefully) edit it down if you're confident you've found the cause.

Age of Empires DE also stores its own logs in: ~/.steam/root/steamapps/compatdata/1017900/pfx/drive_c/users/steamuser/Games/Age of Empires DE/Logs/

These are often less useful than the wine logs, but can be helpful for some issues.

(You can create a user_settings.py file in the appropriate Proton directory (copy user_settings.sample.py and rename it) instead to enable logging for all games, but I'd not advise it if this is the only game causing problems.)

brucetheelephant commented 8 months ago

Wow! Thank you @sulix for these detailed instructions.

I added PROTON_LOG=1 %command% to the game's launch options and a log appeared in my Home directory. I created a Github Gist where I copy/pasted the contents of the log file. Here's a link to the Gist file! Does it work? Can you see it? Unfortunately the text is not color-coded.

Lines 919 to 922, 1167, 1169, 1170, 1174, 1400 and 1401 are colored red to me. I hope it helps if I'm pointing this out, maybe it's easier to track the issue(s).

sulix commented 8 months ago

Thanks — it looks to me like Steam failed to load properly:

[S_API FAIL] SteamAPI_Init() failed; no appID found

Make sure you're running the game from Steam — ideally using the Steam link, not one added via the 'Add a non-steam game' option, and that Steam is logged into the account which owns the game.

Also, there's a crash with CODEX64.dll, which doesn't appear in my copy of the game. I'd try 'verifying the integrity of the game files' to make sure you've got the latest updates and that no files are corrupted. If you've got the game from some source other than Steam (like the Windows Store), then you're out of luck — only the Steam version works on Linux.

brucetheelephant commented 8 months ago

Yes I am running the game as a non-Steam game. Hmm.. so it's my fault from not getting it from Steam. Damn it! : ) I'll either get it from Steam or maybe try running it with Lutris.. I don't know.

Thank you for the assistance! : )

DekosAnjo commented 6 months ago

Replying to https://github.com/ValveSoftware/Proton/issues/2995#issuecomment-1596197099

Same here. A workaround is to use PROTON_USE_WINED3D=1 %command%, but it's weird because this only happens on my notebook, not on my main desktop. Maybe it's a bug with DXVK and PRIME?

LysirisMalven commented 3 months ago

Replying to https://github.com/ValveSoftware/Proton/issues/2995#issuecomment-1823909936

Sounds interesting, but where can I find the file I have to edit, please?

Saxtr0 commented 3 months ago

@LysirisMalven every info you need is there. The file to modify is: server/sock.c (https://github.com/ValveSoftware/wine/blob/a8514f9606ee3fdc3d912c988f651edc5d7d0d55/server/sock.c) After you modify it, you need to build it.

ahjolinna commented 4 weeks ago

Replying to https://github.com/ValveSoftware/Proton/issues/2995#issuecomment-1596197099

I also have this issue on openSUSE tumbleweed (KDE) using proton-9, the PROTON_USE_WINED3D=1 %command% workaround did fix it


Operating System: openSUSE Tumbleweed 20240722 KDE Plasma Version: 6.1.80 KDE Frameworks Version: 6.5.0 Qt Version: 6.7.2 Kernel Version: 6.9.9-1-default (64-bit) Graphics Platform: Wayland Processors: 16 × AMD Ryzen 7 5700G with Radeon Graphics Memory: 46.8 GiB of RAM Graphics Processor: NVIDIA GeForce RTX 3060 Ti/PCIe/SSE2 Driver: v555.58.02