-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Age of Empires II: Definitive Edition (813780) #3189
Comments
Possibly due to missing SpVoice object. From your log:
|
How can I solve this? |
If you want to get into Wine development, implement the SpVoice class and whatever interfaces the app requests (probably ISpeechVoice, possibly more) in |
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 |
At the moment I understand the main problem is regarding an unwinding problem. I'm not sure how to deal with it. |
Seeing this issue on a new install of the officially released game. |
I think that the problem is related also to #2995 so probably in this other ticket there are info to fix this one. |
AFAIK this is actually a problem related to |
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? |
Has anyone tried this yet? https://www.reddit.com/r/aoe2/comments/dwuplr/how_to_run_age_of_empires_2_definitive_edition_on/ |
I am trying this but with the last proton (waiting to download the game). 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. |
Following the instructions from reddit: |
I installed the game in steam with proton 4.11-8 and get the already known error. |
After
|
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:
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. |
Uhm I said to quickly, enabling D9VK (PROTON_USE_D9VK=1) I got an error finally:
|
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. The error Message where you can click on ignore appears right now, when clicked on ignore it goes on like this: 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. |
Here's the log with Wine-Staging 4.19: |
Have you tried to run |
Yes I did. It doesn't change nothing :( |
I was actually asking Georg, but nevermind, |
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 |
:) 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 :) |
Has anybody tried online functionality? |
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... |
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? |
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. |
I just installed the game and had an out of sync issue playing multiplayer. It was fixed by using protontricks and installing ucrtbase2019:
|
I'm having some freezes after finishing a game and returning to the ranked screen, when I click on "Find Match", the colors become slightly darker and the game freezes, I have to force it to close. Somebody else? I use Arch Linux with xfce and Proton GE always on the latest version, currently 8.30. |
I've found a regression for Proton 9.0 (Beta 11). The intro videos are not displayed (there is only sound): Specs
|
I can also reproduce the missing intro videos on Proton 9.0, on different hardware. There are a few suspicious messages in the logs:
…
But most particularly, a lot of spam of:
That looks to be the result of wine's EVR implementation not supporting the NV12 format. Wine recently added support for YUY2, which is similar, though that's not been backported into Proton. If the rest of the stack supports it, something similar for NV12 should be possible. |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This patch seems to fix the missing intro video in Proton 9.0 for me:
It's based on top of the YUY2 patch upstream, though, to be honest, I suspect it'd work with just the one I'm still not 100% sure why this works — I spent quite a while trying to work out where the conversion from NV12 → RGB32 was happening, and calculating the right sizes and strides, but it all seems to work behind the scenes somewhere. |
Hello @sulix, this looks like something to be sent upstream first. Can you make a pull request upstream? |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
@RokeJulianLockhart I just ran into the same issue that you had and might have found one potential root cause. Do you also have any internal GPU enabled? I had the issue that it runs flawlessly with all Proton versions on my Thinkpad with AMD Ryzen and AMD GPU but starting with Proton 6 the performance on my Desktop system with Ryzen 7950X3D and AMD Radeon 7900 XT was near a frozen screen. I couldn't find any diff between the two systems, same kernel, driver version etc. So the slower GPU had no issues but the big 7900 XT had, but only on AoE2 (Other games run perfect with Proton Experimental) and Proton after 6, since Proton 5.13 was also fine. Maybe you can try this as well (I know it has been some time), so we could report this to the developers, that this could be a potential issue. |
@norg, I'm also using solely AMD hardware — a 12-thread Ryzen 5 7600X 6-Core CPU and Radeon RX 5700, but on a self-built desktop system, rather than a laptop. I'm not sure that my ASRock X670E Taichi MB even allows its iGPU to operate simultaneously, but I'll try to verify that it's disabled. Do you have Resizable BAR enabled? Considering we're both using AMD stuff, could you verify whether your Thinkpad has that enabled? It might be worth checking, since NVIDIA & Intel systems won't be able to use that. I also recall Ao2DE working on an older Proton version, so thanks for verifying that I'm not going insane — that it is v6. Many thanks. I'll corroborate any report you file. |
Game does not launch. I click to Play, then it turns into Launching, and then it turns into Stop and that's all. Then it is again in the beginning, Play. I am using Ubuntu 20.04, I have Nvidia RTX 2080. I am using nvidia driver-535 proprietary, tested. I installed Wine, WineTricks, PlayonLinux. I tried all Proton's 7.0, 8.0, 9.0, Experimental. I tried all betas from Experimental. The result is the same. However, I should mention something weird. A few months ago I figured out to play the game in such a strange way. When I was trying to launch the game, nothings were happening. Then I was installing Wine by using Ubuntu Software, then it started to work. The next day or when I restart the computer, it did not start again, and then I just uninstall the Wine which was installed before. And surprisingly the game worked again. I was able to play the game for a long time with this trick. But then something did happen or I mess with somethings. Now this does not work anymore. Can you guys please help me? I am desperately looking forward to play this game |
You shouldn't have to try all of this to get the game to work on Ubuntu 20.04 + RTX 2080: Steam + latest stable version of Proton should be enough. Proton 7.0 does not work with AoE2:DE version 87863 (June 2023) or higher. With all the attempts you've described, you might now have a version of Proton which is different from what is shipped with Steam. I'd suggest you uninstall both Proton 9 and AoE2:DE, then reinstall AoE2:DE (Proton 9 should be reinstalled automatically — just make sure you've not forced the usage of an older version of Proton). If you have (or have had) multiple GPUs, check this troubleshooting section to make sure the game is not using the wrong GPU or driver (a better approach has been suggested, if you want to try it as well). |
I have investigated further the issue of the Battle Server and these are my conclusions:
As you can see wine needs some fixes for this two interrelated issues (I've tested with latest wine development branch 9.15 and stills happens). BTW this is the code I used in Visual Studio 2022 mimicking the reverse engineered Battle server calls in order to test: #include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment(lib, "ws2_32.lib")
int main() {
WSADATA wsa;
SOCKET s;
struct sockaddr_in server {};
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
std::cerr << "WSAStartup error. Error Code: " << WSAGetLastError() << std::endl;
return 1;
}
if ((s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET) {
std::cerr << "Socket error. Error Code: " << WSAGetLastError() << std::endl;
WSACleanup();
return 1;
}
memset((char*)&server, 0, sizeof(server));
server.sin_family = AF_INET;
if (inet_pton(AF_INET, "255.255.255.255", &server.sin_addr) <= 0) {
std::cerr << "inet_pton error. Error Code: " << WSAGetLastError() << std::endl;
closesocket(s);
WSACleanup();
return 1;
}
server.sin_port = htons(9999);
if (connect(s, (struct sockaddr*)&server, sizeof(server)) < 0) {
std::cerr << "Connect error. Error Code: " << WSAGetLastError() << std::endl;
closesocket(s);
WSACleanup();
return 1;
}
BOOL broadcast = TRUE;
if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char*)&broadcast, sizeof(broadcast)) < 0) {
std::cerr << "Cannot configure socket for broadcast. Error Code: " << WSAGetLastError() << std::endl;
closesocket(s);
WSACleanup();
return 1;
}
const char* message = "\x21\x24\x00\x35\x34\x36\x66\x35\x30\x66\x61\x2d\x33\x63\x63\x31"
"\x2d\x34\x32\x64\x33\x2d\x38\x37\x64\x35\x2d\x36\x39\x64\x66\x36"
"\x65\x35\x61\x61\x33\x65\x65\x09\x00\x4d\x79\x20\x53\x65\x72\x76"
"\x65\x72\x84\x69\x00\x00\x4c\x6a";
int messageLen = 56;
int bytesSent = send(s, message, messageLen, 0);
if (bytesSent == SOCKET_ERROR) {
std::cerr << "Send error. Error Code: " << WSAGetLastError() << std::endl;
closesocket(s);
WSACleanup();
return 1;
}
closesocket(s);
WSACleanup();
return 0;
} If you simply moved the connect after setting the broadcast option, then it works perfectly in wine. |
@luskaner Thanks for substantial analysis and the test case! I didn't check anything with the game (in fact don't know how to repro the issue, some instructions on that would be helpful for testing), but I confirmed that the difference between Windows and Wine behaviour illustrated by the test exists and did a bit of more unit testing around that. The just updated Proton Experimental ([bleeding-edge] branch, available to select in Proton Experimenal tool properties, Beta tab), experimental-bleeding-edge-9.0-113941-20240822-p95282c-w94c64a-dd89e32-vc97ec3, has the tentative fix for that (I also sent it Wine upstream: https://gitlab.winehq.org/wine/wine/-/merge_requests/6335/). That should be fixing the test case, wonder if it also fixes the issue with the game? |
No problem :) so how it works is the game itself (AoE2DE_s.exe) spawns the |
Replying to #3189 (comment)
thanks for the info, but I was asking not about technical but user visible
part, how exactly to reproduce the issue from user perspective (given it is
apparently not something you can reproduce just starting the game?) The
technical part, how to debug network communication issues in games, is
something more apparent to me :)
|
@gofman Ah got it, start the game, go to multiplayer and try to make a new lobby, in the server dropdown the server "Use Local Lan Server" must appear (before it did not appear) as the game now should be able to 'discover' the BattleServer =) |
Replying to #3189 (comment)
thanks a lot
|
Thanks! I've applied the patch and done some quick tests, and this explanation and patch do seem to fix the BattleServer connection here, for both Age of Empires 1 and 2 DE. It also doesn't seem to have the disconnection issue we had with the earlier patch, though that may be due to a separate wine/game update which fixes the encryption issues. I haven't managed to actually play a game over the LAN yet, but that's just due to only having one copy of the game: I ran a "LAN game" with only one player (which is possible in AoE2 DE, but not the first game), and it ran fine for quite a while, with encouraging network activity in wireshark. I commented on the upstream patch as well. |
@sulix If you don't have multiple PC's and licenses the easiest way is probably testing with someone (ask me if you want =) over the internet using a VPN and testing it works the 3 combinations:
|
I got a slight impression that Proton GE version 9.20 improved the game's performance. Even if it doesn't result in more points in the benchmark, it seems to be more fluid. I was using 9.11 (07/28/2024) since the release (07/28/2024), I only switched to 9.20 yesterday. |
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
The text was updated successfully, but these errors were encountered: