ValveSoftware / Proton

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

Planet Coaster (493340) #1538

Open NoaHimesaka1873 opened 5 years ago

NoaHimesaka1873 commented 5 years ago

Compatibility Report

System Information

I confirm:

steam-493340.log

Symptoms

Start the game and immediate crash

Reproduction

start the game

KorinFlakes commented 5 years ago

This may actually be due to the Denuvo anti-tamper DRM the game uses. This game doesn't work through WINE or bootcamp due to it.

reissecup commented 4 years ago

same here

JWolvers commented 4 years ago

The game now starts. But money, dates, percentages, etc. are displayed as "jd" instead of their actual values. crop-1 crop

Log file: steam-493340.tar.gz

thomhoess commented 4 years ago

Same here, it starts and plays pretty fine, performance is better than expected but career is unplayable without seeing any numbers.

reissecup commented 4 years ago

Still doesn't start for me

thomhoess commented 4 years ago

Did you change Proton Version in Steam Settings to 4.11-2?

reissecup commented 4 years ago

I have not, I'll try that now

reissecup commented 4 years ago

ok yeah that made me able to play the game, but i still have that jd value problem

jlsalvador commented 4 years ago

Copy the file ucrtbase.dll into the game folder to fix the jd value problem. You can find this file in C:\Windows\System32\

# sha1sum ucrtbase.dll
2aa3349f94703158c36214cac32b8cb0101dd98c  ucrtbase.dll
thomhoess commented 4 years ago

Copy the file ucrtbase.dll into the game folder to fix the jd value problem. You can find this file in C:\Windows\System32\

# sha1sum ucrtbase.dll
2aa3349f94703158c36214cac32b8cb0101dd98c  ucrtbase.dll

Where exactly should I put it? I copied the ucrtbase.dll from a local Wine Install into /home/thomas/.local/share/Steam/steamapps/common/Planet Coaster/ But it still doesn't work sadly.

jlsalvador commented 4 years ago

Copy the file ucrtbase.dll into the game folder to fix the jd value problem. You can find this file in C:\Windows\System32\

# sha1sum ucrtbase.dll
2aa3349f94703158c36214cac32b8cb0101dd98c  ucrtbase.dll

Where exactly should I put it? I copied the ucrtbase.dll from a local Wine Install into /home/thomas/.local/share/Steam/steamapps/common/Planet Coaster/ But it still doesn't work sadly.

Please, review the checksum of the ucrtbase.dll file.

https://imgur.com/a/8gIUKCT

thomhoess commented 4 years ago
[thomas@this-pc Planet Coaster]$ sha1sum ucrtbase.dll 
a55aa6ab28b4ff6ca472e33c3d0d6474907e1372  ucrtbase.dll

Where have you got your dll from? Could you upload it anywhere so that I could check if it works with yours? Would be super nice, thank you!

jlsalvador commented 4 years ago

I copied the ucrtbase.dll file from my local Windows 10. I'm not sure that I could distribute closed-software without authorization.

thomhoess commented 4 years ago

I copied the ucrtbase.dll file from my local Windows 10. I'm not sure that I could distribute closed-software without authorization.

Helped me though, my gf has Windows 10 on her Desktop, I'll try that and give feedback! Thanks!

jlsalvador commented 4 years ago

I found you can extract the ucrtbase.dll with the cabextract program from this official link.

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

This one has a different checksum, but maybe works...

thomhoess commented 4 years ago

I found you can extract the ucrtbase.dll with the cabextract program from this official link.

This one has a different checksum, but maybe works...

It works!

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

and then I just moved the dll from my home-dir to the install-folder of Planet Coaster. Thanks!

skumpusch commented 4 years ago

Still doesn't start here. Only get a BalckScreen after that I get the CrashReporter :(

scuba10steve commented 4 years ago

I noticed a crazy performance improvement when I followed the steps mentioned by @thomhoess. Otherwise I didn't experience any issues, just some performance problems as well as money not rendering correctly in the game.

TBleader commented 4 years ago

I have the same issue as skumpusch. I have added the dll as per thomhoess suggestion. I am using proton 4.11-6. Black screen on launch with crash reporter. If I try to use any options suggested on proton db such as Disable D3D11 or Disable Esync it results in an immediate crash, no even black screen. Just goes from running to syncing (as it crashed right away).

skumpusch commented 4 years ago

@TBleader now i have at least the Main Menu working i unplugged my Corsair Void Pro Wireless Headset Dongle and now my mainmenu is working i also copied the ucrtbase.dll an my numbers show correctly in Display Settings (Resolution) but i can´t load a Park first it starts loading but after 1-2 seconds it freezes sometimes get a crash report.

TBleader commented 4 years ago

@skumpusch That's good that you got it working a bit, unfortunately the only USB devices I have plugged in are my keyboard and mouse. Both essential to play, so there is nothing I can unplug to test with.

ptkato commented 4 years ago

I noticed a strange behaviour with this game, whenever I quit Planet Coaster, Steam crashes. The output from the terminal when I exit the game:

Exiting app 493340
No cached sticky mapping in ActivateActionSet.double free or corruption (!prev)
assert_20191028160444_1.dmp[16025]: Uploading dump (out-of-process)
/tmp/dumps/assert_20191028160444_1.dmp
/home/ptkato/.local/share/Steam/steam.sh: line 720: 14765 Aborted                 (core dumped) $STEAM_DEBUGGER "$STEAMROOT/$STEAMEXEPATH" "$@"
assert_20191028160444_1.dmp[16025]: Finished uploading minidump (out-of-process): success = yes
assert_20191028160444_1.dmp[16025]: response: CrashID=bp-6e3be626-d9a1-4f3a-ac08-546bc2191028
assert_20191028160444_1.dmp[16025]: file ''/tmp/dumps/assert_20191028160444_1.dmp'', upload yes: ''CrashID=bp-6e3be626-d9a1-4f3a-ac08-546bc2191028''
../common/pipes.cpp (766) : CClientPipe::BWriteAndReadResult: BWaitResult failed, disconnected
Installing breakpad exception handler for appid(gameoverlayui)/version(1.0)
steamclient.cpp (792) : Assertion Failed: bufRet.TellPut() == sizeof(uint8)
crash_20191028160615_6.dmp[16039]: Uploading dump (out-of-process)
/tmp/dumps/crash_20191028160615_6.dmp
../common/processpipe_posix.cpp (507) : Assertion Failed: CCrossProcessPipe::BWrite: 32 (Broken pipe)
../common/pipes.cpp (766) : CClientPipe::BWriteAndReadResult: BWaitResult failed, disconnected
steamclient.cpp (792) : Assertion Failed: bufRet.TellPut() == sizeof(uint8)
../common/processpipe_posix.cpp (507) : Assertion Failed: CCrossProcessPipe::BWrite: 32 (Broken pipe)
../common/pipes.cpp (766) : CClientPipe::BWriteAndReadResult: BWaitResult failed, disconnected
steamclient.cpp (792) : Assertion Failed: bufRet.TellPut() == sizeof(uint8)
../common/processpipe_posix.cpp (507) : Assertion Failed: CCrossProcessPipe::BWrite: 32 (Broken pipe)
crash_20191028160615_6.dmp[16039]: Finished uploading minidump (out-of-process): success = yes
crash_20191028160615_6.dmp[16039]: response: Discarded=1
crash_20191028160615_6.dmp[16039]: file ''/tmp/dumps/crash_20191028160615_6.dmp'', upload yes: ''Discarded=1''
StraToN commented 4 years ago

@ptkato I confirm the behaviour you describe. This also happens when the game crashes during loading: I then have to kill the "Main" process from a terminal, and Steam crashes right after Planet Coaster was killed.

galkinvv commented 4 years ago

The game now starts. But money, dates, percentages, etc. are displayed as "jd" instead of their actual values. crop-1 crop

Log file: steam-493340.tar.gz

Looking to source code It seems that this problem is fixed in just-released upstream wine 4.19:

Commit "ucrtbase: Implement t and j printf length modifiers." https://source.winehq.org/git/wine.git/commit/3b6b28bce5f2f05ba21d6ca5399517c22300aeeb

galkinvv commented 4 years ago

Just verified that wine's 4.19 ucrtbase work fine. I installed wine 4.19 package for my distro into /opt/wine-staging and copied ucrtbase near PlanetCoaster.exe (with renaming to drop .so suffix):

cp /opt/wine-staging/lib64/wine/ucrtbase.dll.so steamapps/common/Planet\ Coaster/ucrtbase.dll

@TBleader regarding usb devices. I have "gaming" mouse & keyboard from same vendor. PlanetCoaster doesn't start if any of them is plugged in during launch time. So unplug during launch and plug again:

So here what helps me:

ironicbadger commented 4 years ago

Can confirm on Arch tonight unplugging USB keyboard and mouse permitted the game to run!

joao-rafael commented 4 years ago

tried to run it on elementary OS juno today, not working. Not event black screen, just crash report(steam app also freezes)

JWolvers commented 4 years ago

What version of proton are you using to launch it?

TBleader commented 4 years ago

@galkinvv That did it! Very strange, but it would only work when both the mouse and keyboard were unplugged. Unplugging during the launch, and then replugging after it reaches the logo or further and the game is playable. The urctbase.dll from the previous suggestion (not the latest wine version, haven't tested that) worked and the values show up correctly. Only briefly played, but didn't run into any issues in the short 1 hour session.

joao-rafael commented 4 years ago

@MrWolvetech idk if your question was to me or not but anyway, using version 4.11-8

hlipka commented 4 years ago

I can confirm the issue with the USB devices (in our case, its a Logitech keyboard and mouse). my workaround is the following script (needs some tinkering because parts of it needs root permissions, see the comments):

#!/bin/sh
# get all USB HID devices, store the list in a variable
list=`find /sys/bus/usb/drivers/usbhid -regex ".*/[0-9]+-[0-9.]+:[0-9]+\.[0-9]+" -printf "%f\n"`
echo "unbind"
# send the list to the unbind script - this unbinds the USB devices
# for the script itself see below
echo "$list" | xargs -i sudo unbind.sh {}
echo "done"
# now start the game (this returns nearly instantly)
steam steam://run/493340
# wait for the game to start
sleep 30
# take the same list, and bind the USB devices again
echo "rebind"
echo "$list" | xargs -i sudo bind.sh {}
echo "done"

# the bind / unbind scripts needs root permissions. to avoid asking for the password,
# create /etc/sudoers.d/usb_devices with
# USERNAME ALL=NOPASSWD: PATH_TO/unbind.sh
# USERNAME ALL=NOPASSWD: PATH_TO/bind.sh
# bind.sh
# echo -n $1 > /sys/bus/usb/drivers/usbhid/bind
#unbind.sh
# echo -n $1 > /sys/bus/usb/drivers/usbhid/unbind

So far it works fine, if anything goes wrong there is no error handling, so you need to unplug your HID devices shortly.

ranisalt commented 4 years ago

Game does not start to me on Proton 5.0-3. It does work on Proton 4.11-12 though.

kisak-valve commented 4 years ago

Hello @ranisalt, please add PROTON_LOG=1 %command% to the game's launch options and drag and drop the generated $HOME/steam-$APPID.log into the comment box.

ranisalt commented 4 years ago

Weirdly enough after putting the launch option it did launch as expected. It takes a loooong time to close, though (button on Steam keeps spinning for over a minute) and the generated log is >150MB so I can't upload here.

kisak-valve commented 4 years ago

In general, Proton logs compress well in an archive, but if the game ran an expected, then there might not be a good hint in the log.

AwesamLinux commented 4 years ago

System Information

Compatibility Report

Playable without any problems,

✔ Great performance with no/minimal stuttering (tested with ACO) ✔ Alt+Tab switching between desktop/fullscreen works

The only issue I could spot is that the few seconds short logo intro video is missing sound (the logs mention mfplat.dll, however the video plays out of the box).

Codecs are: WebM, VP8 + Vorbis

system_info.txt media_info.txt steam-493340.log.zip