Age of Empires II: Definitive Edition

Age of Empires II: Definitive Edition

View Stats:
D00mdaddy951 Nov 19, 2023 @ 12:10pm
Again, out of sync on linux
Unfortunately, against the things that arkanosis say (https://aoe2.arkanosis.net/linux/) the game is currently unplayable on Linux for multiplayer. Again it's out of sync and the fixes and workarounds not working anymore. I'm currently running Fedora 39, anyone has an idea?
< >
Showing 1-11 of 11 comments
DrCR Nov 21, 2023 @ 7:37pm 
I just bought the game and am in the same boat. Subscribing in case other *nixers have any solutions.
CMDR Sweeper Nov 24, 2023 @ 3:29am 
Well then you get further than me, under Arch this game unlike the 1st Age of Empires Definitive Edition, doesn't run at all.
It hangs before loading the main menu currently, annoyances of the proprietary libraries used when developing this game.
scamar Nov 25, 2023 @ 9:14am 
The out of sync right after starting (or spectating) an online game depends on ucrtbase.dll file. You need to overwrite it.
Some where on the net i found this script:
```
#!/bin/bash
set -e # Fail fast

# Check if jq is installed, then fetch the App ID if it is
if command -v jq &> /dev/null
then
APPID=$(wget -qO- https://api.steampowered.com/ISteamApps/GetAppList/v2/ | jq '.applist.apps[] | select(.name=="Age of Empires II: Definitive Edition")' | jq ".appid")
else
APPID=813780 # The most recent App ID when this was written
fi


STEAM_LOCATION="/home/$USER/.steam"

# check if arguments are not empty
if [ ! $# -eq 0 ]; then
# set STEAM_LOCATION to the provided argument
STEAM_LOCATION=$1
fi

SYSTEM32_LOCATION=$STEAM_LOCATION/steam/steamapps/compatdata/$APPID/pfx/drive_c/windows/system32

# Check if the dll already exists and is not a symlink
if [ -f "$SYSTEM32_LOCATION/ucrtbase.dll" ] && [ ! -L "$SYSTEM32_LOCATION/ucrtbase.dll" ]; then
echo "ucrtbase.dll is already installed"
exit 0
fi

rm -f $SYSTEM32_LOCATION/ucrtbase.dll # There might be a simlink to the "default" ucrtbase.dll, it needs to be deleted

TEMP_FOLDER=$(mktemp --directory)
cd $TEMP_FOLDER
echo "Fetching vc_redist.x64.exe"
wget https://download.microsoft.com/download/0/6/4/064F84EA-D1DB-4EAA-9A5C-CC2F0FF6A638/vc_redist.x64.exe
cabextract vc_redist.x64.exe --filter a10
cabextract a10 --filter ucrtbase.dll
cp ucrtbase.dll $SYSTEM32_LOCATION
echo "Copied ucrtbase.dll"
rm -f vc_redist.x64.exe a10 ucrtbase.dll
rmdir $TEMP_FOLDER

exit 0
```
This script fixed the error for me.
To execute it successfully you need jq and cabextract.
DrCR Jan 1, 2024 @ 11:07am 
wget https://download.microsoft.com/download/0/6/4/064F84EA-D1DB-4EAA-9A5C-CC2F0FF6A638/vc_redist.x64.exe
cabextract vc_redist.x64.exe --filter a10
cabextract a10 --filter ucrtbase.dll

$ cabextract a10 --filter ucrtbase.dll
a10: no valid cabinets found
grraf Jan 1, 2024 @ 11:30am 
https://ufile.io/calaidon mauybe try using this one, its what i'm using and works fine...
DrCR Jan 1, 2024 @ 12:23pm 
scamar Jan 2, 2024 @ 8:56am 
Don't know about the error.
I just deleted the file and executed the script in "debug".
It works as expected on my workstation:
``` sh -x ./run.sh
+ set -e
+ command -v jq
++ wget -qO- https://api.steampowered.com/ISteamApps/GetAppList/v2/
++ jq '.applist.apps[] | select(.name=="Age of Empires II: Definitive Edition")'
++ jq .appid
+ APPID=813780
+ STEAM_LOCATION=/home/utente/.steam
+ '[]'
./run.sh: line 16: []: command not found
+ SYSTEM32_LOCATION=/home/utente/.steam/steam/steamapps/compatdata/813780/pfx/drive_c/windows/system32
+ '[]'
./run.sh: line 24: []: command not found
+ rm -f /home/utente/.steam/steam/steamapps/compatdata/813780/pfx/drive_c/windows/system32/ucrtbase.dll
++ mktemp --directory
+ TEMP_FOLDER=/tmp/tmp.GGIaodjJir
+ cd /tmp/tmp.GGIaodjJir
+ echo 'Fetching vc_redist.x64.exe'
Fetching vc_redist.x64.exe
+ wget https://download.microsoft.com/download/0/6/4/064F84EA-D1DB-4EAA-9A5C-CC2F0FF6A638/vc_redist.x64.exe
--2024-01-02 17:57:02-- https://download.microsoft.com/download/0/6/4/064F84EA-D1DB-4EAA-9A5C-CC2F0FF6A638/vc_redist.x64.exe
Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'
Resolving download.microsoft.com (download.microsoft.com)... 23.214.205.201, 2a02:26f0:b600:1aa::317f, 2a02:26f0:b600:1b0::317f
Connecting to download.microsoft.com (download.microsoft.com)|23.214.205.201|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14990824 (14M) [application/octet-stream]
Saving to: ‘vc_redist.x64.exe’

vc_redist.x64.exe 100%[] 14,30M 10,8MB/s in 1,3s

2024-01-02 17:57:04 (10,8 MB/s) - ‘vc_redist.x64.exe’ saved [14990824/14990824]

+ cabextract vc_redist.x64.exe --filter a10
Extracting cabinet: vc_redist.x64.exe
extracting a10

All done, no errors.
+ cabextract a10 --filter ucrtbase.dll
a10: WARNING; possible 16128 extra bytes at end of file.
Extracting cabinet: a10
extracting ucrtbase.dll

All done, no errors.
+ cp ucrtbase.dll /home/utente/.steam/steam/steamapps/compatdata/813780/pfx/drive_c/windows/system32
+ echo 'Copied ucrtbase.dll'
Copied ucrtbase.dll
+ rm -f vc_redist.x64.exe a10 ucrtbase.dll
+ rmdir /tmp/tmp.GGIaodjJir
+ exit 0

```
Last edited by scamar; Jan 2, 2024 @ 8:57am
ezlydistracted Jan 14, 2024 @ 1:32pm 
Originally posted by scamar:
The out of sync right after starting (or spectating) an online game depends on ucrtbase.dll file. You need to overwrite it.
Some where on the net i found this script:
```
#!/bin/bash
set -e # Fail fast

# Check if jq is installed, then fetch the App ID if it is
if command -v jq &> /dev/null
then
APPID=$(wget -qO- https://api.steampowered.com/ISteamApps/GetAppList/v2/ | jq '.applist.apps[] | select(.name=="Age of Empires II: Definitive Edition")' | jq ".appid")
else
APPID=813780 # The most recent App ID when this was written
fi


STEAM_LOCATION="/home/$USER/.steam"

# check if arguments are not empty
if [ ! $# -eq 0 ]; then
# set STEAM_LOCATION to the provided argument
STEAM_LOCATION=$1
fi

SYSTEM32_LOCATION=$STEAM_LOCATION/steam/steamapps/compatdata/$APPID/pfx/drive_c/windows/system32

# Check if the dll already exists and is not a symlink
if [ -f "$SYSTEM32_LOCATION/ucrtbase.dll" ] && [ ! -L "$SYSTEM32_LOCATION/ucrtbase.dll" ]; then
echo "ucrtbase.dll is already installed"
exit 0
fi

rm -f $SYSTEM32_LOCATION/ucrtbase.dll # There might be a simlink to the "default" ucrtbase.dll, it needs to be deleted

TEMP_FOLDER=$(mktemp --directory)
cd $TEMP_FOLDER
echo "Fetching vc_redist.x64.exe"
wget https://download.microsoft.com/download/0/6/4/064F84EA-D1DB-4EAA-9A5C-CC2F0FF6A638/vc_redist.x64.exe
cabextract vc_redist.x64.exe --filter a10
cabextract a10 --filter ucrtbase.dll
cp ucrtbase.dll $SYSTEM32_LOCATION
echo "Copied ucrtbase.dll"
rm -f vc_redist.x64.exe a10 ucrtbase.dll
rmdir $TEMP_FOLDER

exit 0
```
This script fixed the error for me.
To execute it successfully you need jq and cabextract.


this worked for me
juagicre Feb 22, 2024 @ 1:50am 
Originally posted by scamar:
The out of sync right after starting (or spectating) an online game depends on ucrtbase.dll file. You need to overwrite it.
Some where on the net i found this script:
```
#!/bin/bash
set -e # Fail fast

# Check if jq is installed, then fetch the App ID if it is
if command -v jq &> /dev/null
then
APPID=$(wget -qO- https://api.steampowered.com/ISteamApps/GetAppList/v2/ | jq '.applist.apps[] | select(.name=="Age of Empires II: Definitive Edition")' | jq ".appid")
else
APPID=813780 # The most recent App ID when this was written
fi


STEAM_LOCATION="/home/$USER/.steam"

# check if arguments are not empty
if [ ! $# -eq 0 ]; then
# set STEAM_LOCATION to the provided argument
STEAM_LOCATION=$1
fi

SYSTEM32_LOCATION=$STEAM_LOCATION/steam/steamapps/compatdata/$APPID/pfx/drive_c/windows/system32

# Check if the dll already exists and is not a symlink
if [ -f "$SYSTEM32_LOCATION/ucrtbase.dll" ] && [ ! -L "$SYSTEM32_LOCATION/ucrtbase.dll" ]; then
echo "ucrtbase.dll is already installed"
exit 0
fi

rm -f $SYSTEM32_LOCATION/ucrtbase.dll # There might be a simlink to the "default" ucrtbase.dll, it needs to be deleted

TEMP_FOLDER=$(mktemp --directory)
cd $TEMP_FOLDER
echo "Fetching vc_redist.x64.exe"
wget https://download.microsoft.com/download/0/6/4/064F84EA-D1DB-4EAA-9A5C-CC2F0FF6A638/vc_redist.x64.exe
cabextract vc_redist.x64.exe --filter a10
cabextract a10 --filter ucrtbase.dll
cp ucrtbase.dll $SYSTEM32_LOCATION
echo "Copied ucrtbase.dll"
rm -f vc_redist.x64.exe a10 ucrtbase.dll
rmdir $TEMP_FOLDER

exit 0
```
This script fixed the error for me.
To execute it successfully you need jq and cabextract.


Many thanks for this!
I was running some of those steps one by one but did not work fully, but seems script did something on top which really did the trick, after almost 1 year unable to play in multiplayer i could do a fast game (terribly lost it but very happy about it :))
Linkin Park Feb 22, 2024 @ 2:05am 
Originally posted by ezlydistracted:
Originally posted by scamar:
The out of sync right after starting (or spectating) an online game depends on ucrtbase.dll file. You need to overwrite it.
Some where on the net i found this script:
```
#!/bin/bash
set -e # Fail fast

# Check if jq is installed, then fetch the App ID if it is
if command -v jq &> /dev/null
then
APPID=$(wget -qO- https://api.steampowered.com/ISteamApps/GetAppList/v2/ | jq '.applist.apps[] | select(.name=="Age of Empires II: Definitive Edition")' | jq ".appid")
else
APPID=813780 # The most recent App ID when this was written
fi


STEAM_LOCATION="/home/$USER/.steam"

# check if arguments are not empty
if [ ! $# -eq 0 ]; then
# set STEAM_LOCATION to the provided argument
STEAM_LOCATION=$1
fi

SYSTEM32_LOCATION=$STEAM_LOCATION/steam/steamapps/compatdata/$APPID/pfx/drive_c/windows/system32

# Check if the dll already exists and is not a symlink
if [ -f "$SYSTEM32_LOCATION/ucrtbase.dll" ] && [ ! -L "$SYSTEM32_LOCATION/ucrtbase.dll" ]; then
echo "ucrtbase.dll is already installed"
exit 0
fi

rm -f $SYSTEM32_LOCATION/ucrtbase.dll # There might be a simlink to the "default" ucrtbase.dll, it needs to be deleted

TEMP_FOLDER=$(mktemp --directory)
cd $TEMP_FOLDER
echo "Fetching vc_redist.x64.exe"
wget https://download.microsoft.com/download/0/6/4/064F84EA-D1DB-4EAA-9A5C-CC2F0FF6A638/vc_redist.x64.exe
cabextract vc_redist.x64.exe --filter a10
cabextract a10 --filter ucrtbase.dll
cp ucrtbase.dll $SYSTEM32_LOCATION
echo "Copied ucrtbase.dll"
rm -f vc_redist.x64.exe a10 ucrtbase.dll
rmdir $TEMP_FOLDER

exit 0
```
This script fixed the error for me.
To execute it successfully you need jq and cabextract.


this worked for me
Window 11 indider how to fix . plz?
juagicre Feb 22, 2024 @ 7:13am 
Originally posted by Song Kiên:
Originally posted by ezlydistracted:


this worked for me
Window 11 indider how to fix . plz?

Well, that's a thread discussion for linux... being a MS game, it's a bit strange this does not work on your system...
:wololo:just install linux and go for it:wololo:
Otherwise worth trying updating all: steam, drivers, reinstall aoeIIDE, this is the only thing I can say, sorry!
< >
Showing 1-11 of 11 comments
Per page: 1530 50

Date Posted: Nov 19, 2023 @ 12:10pm
Posts: 11