Scarlet Hollow

Scarlet Hollow

View Stats:
Lechuck Oct 23, 2022 @ 11:32am
Game is unplayable on the Steam Deck
I've seen a few other posts about this but this crashes a lot on the steam deck. I can't play for more than 10 minutes or so. Has anyone found a fix for this at all for the steam deck?
Originally posted by MissingToken:
Good news - I've developed a hotfix for the freezing issue that allow Steam Deck users to play Scarlet Hollow through Steam! I've played through for 5 hours without freezing.

To apply the fix, you need to do two things:
  1. Make sure you're running the game under the Steam Linux Runtime. Go to game Properties -> Compatibility -> check box for Force the use of a specific Steam Play compatibility tool and choose Steam Linux Runtime from the dropdown.
  2. Download this script[http//%EF%BB%BFhttps] and place it inside the game directory of the local files for Scarlet Hollow. You can do this through the Steam Deck Desktop mode terminal with the following command:
    curl -SsLo ~/.local/share/Steam/steamapps/common/ScarletHollow/game/01steam_deck_hotfix.rpy https://gist.githubusercontent.com/teekennedy/9b3c1bf21495eca2971fa9527080bb68/raw/
< >
Showing 16-30 of 35 comments
Stickwick Stapler Nov 27, 2022 @ 3:42pm 
Your fix inspired me to try an easier (kinda) way... i just added the script as a non-steam game, so I can launch it in game mode. Works great so far. Finished chapter one, where before I couldn't get to the diner. Thanks!


Originally posted by Cyphus:
So I've been playing around with this a bit, trying to get it to work on my Deck, and while I don't have a fix yet, I did figure out a workaround.

If I run the game through Steam, regardless of whether I'm using Game Mode or Desktop Mode, it always crashes 5-10 minutes in. However, if I run the game startup script directly (/home/deck/.local/share/Steam/steamapps/common/ScarletHollow/ScarletHollow.sh), it runs fine for hours.

To easily run it directly, go to Desktop Mode, open Steam, go to Scarlet Hollow in your Library, then click the gear icon -> Manage -> Add desktop shortcut. This will add an icon to the desktop that launches Scarlet Hollow through Steam. Right click the icon (mapped to L2 by default) then select Open with KWrite. Change the line starting with
Exec=
to the following:

Exec=/home/deck/.local/share/Steam/steamapps/common/ScarletHollow/ScarletHollow.sh

Save the file, close KWrite, and then tap/double click on the desktop shortcut and Scarlet Hollow will launch and stay running!

Caveats:

Since you're not running the game through steam with this workaround, you won't get any of the features and enhancements that steam provides, including achievements, Steam Overlay, Steam Cloud save syncing, and custom controller configuration support. I've found that the game is totally workable with the default controller config (minus the ability to hide the text window with Y, because it's mapped to something else in Desktop Mode), and you can manually trigger a cloud save sync and redeem achievements by launching the game through Steam and waiting a few seconds on the main menu.

I do want to spend some more time on this to see if I can help with a further fix, but in the meantime I hope this helps!
blacktabbygames  [developer] Nov 27, 2022 @ 3:57pm 
Originally posted by Cyphus:
So I've been playing around with this a bit, trying to get it to work on my Deck, and while I don't have a fix yet, I did figure out a workaround.

If I run the game through Steam, regardless of whether I'm using Game Mode or Desktop Mode, it always crashes 5-10 minutes in. However, if I run the game startup script directly (/home/deck/.local/share/Steam/steamapps/common/ScarletHollow/ScarletHollow.sh), it runs fine for hours.

To easily run it directly, go to Desktop Mode, open Steam, go to Scarlet Hollow in your Library, then click the gear icon -> Manage -> Add desktop shortcut. This will add an icon to the desktop that launches Scarlet Hollow through Steam. Right click the icon (mapped to L2 by default) then select Open with KWrite. Change the line starting with
Exec=
to the following:

Exec=/home/deck/.local/share/Steam/steamapps/common/ScarletHollow/ScarletHollow.sh

Save the file, close KWrite, and then tap/double click on the desktop shortcut and Scarlet Hollow will launch and stay running!

Caveats:

Since you're not running the game through steam with this workaround, you won't get any of the features and enhancements that steam provides, including achievements, Steam Overlay, Steam Cloud save syncing, and custom controller configuration support. I've found that the game is totally workable with the default controller config (minus the ability to hide the text window with Y, because it's mapped to something else in Desktop Mode), and you can manually trigger a cloud save sync and redeem achievements by launching the game through Steam and waiting a few seconds on the main menu.

I do want to spend some more time on this to see if I can help with a further fix, but in the meantime I hope this helps!

Unfortunate that folks are still running into issues, even after reverting to an earlier version of Ren'py. I'm going to mark this post as the answer for now, and try and see if I can come up with a better fix after Episode 4's release.
MissingToken Nov 28, 2022 @ 10:01am 
Thanks for all your hard work on this game @blacktabbygames! I'm glad I am able to help out somewhat while you focus on Episode 4's release :)

I did some more testing, and have narrowed things down further. I posted some technical details here[github.com], but the key takeaways are:
  1. This issue is not specific to Scarlet Hollow. Other games using the same engine are having the same issue.
  2. The issue has to do with the way SH's game engine detects whether the Steam Overlay is active and should be rendered. The Steam Overlay behaves differently on the Deck, and the detection method is not working as intended.
  3. Unfortunately, disabling the Steam Overlay doesn't fix the issue, because the game engine doesn't check for this. As mentioned in my other post, one must disable Steam entirely to avoid the issue.
Last edited by MissingToken; Nov 28, 2022 @ 10:11am
blacktabbygames  [developer] Nov 28, 2022 @ 10:22am 
Originally posted by Cyphus:
Thanks for all your hard work on this game @blacktabbygames! I'm glad I am able to help out somewhat while you focus on Episode 4's release :)

I did some more testing, and have narrowed things down further. I posted some technical details here[github.com], but the key takeaways are:
  1. This issue is not specific to Scarlet Hollow. Other games using the same engine are having the same issue.
  2. The issue has to do with the way SH's game engine detects whether the Steam Overlay is active and should be rendered. The Steam Overlay behaves differently on the Deck, and the detection method is not working as intended.
  3. Unfortunately, disabling the Steam Overlay doesn't fix the issue, because the game engine doesn't check for this. As mentioned in my other post, one must disable Steam entirely to avoid the issue.

Thank you so much for your sleuthing! Hopefully this means they'll be able to get a fix out soon for ren'py.

I remain bewildered by why this issue appears to be a problem for some deck users and not other. I've played through the whole thing on my own in one a sitting without an issues, which is very odd!
A developer of this app has indicated that this post answers the original topic.
MissingToken Dec 3, 2022 @ 9:17pm 
Good news - I've developed a hotfix for the freezing issue that allow Steam Deck users to play Scarlet Hollow through Steam! I've played through for 5 hours without freezing.

To apply the fix, you need to do two things:
  1. Make sure you're running the game under the Steam Linux Runtime. Go to game Properties -> Compatibility -> check box for Force the use of a specific Steam Play compatibility tool and choose Steam Linux Runtime from the dropdown.
  2. Download this script[http//%EF%BB%BFhttps] and place it inside the game directory of the local files for Scarlet Hollow. You can do this through the Steam Deck Desktop mode terminal with the following command:
    curl -SsLo ~/.local/share/Steam/steamapps/common/ScarletHollow/game/01steam_deck_hotfix.rpy https://gist.githubusercontent.com/teekennedy/9b3c1bf21495eca2971fa9527080bb68/raw/
Last edited by MissingToken; Dec 3, 2022 @ 10:56pm
MissingToken Dec 3, 2022 @ 11:02pm 
Details on the above:

In my testing, the game would always freeze in the middle of calling a SteamWorks SDK function to check whether the Steam Overlay is active and should be rendered. Ren'Py runs this check every time it processes an event. When there are a lot of events to process, the check gets called a lot - sometimes over 8,000 times per second.

The problem is that the overlay check was not meant to be called so often. Valve's documentation for the function says "roughly 33hz is desirable." I added some logging on the event rate and sure enough, every time the game froze it was when the game was processing several hundreds or thousands of events per second.

While the permanent fix will involve patching Ren'Py itself, it will take some time for the patch to be released and incorporated into Scarlet Hollow. I wanted to provide something quick that players could use today. My script patches Ren'Py so that it calls the overlay check function a maximum of 33 times per second, regardless of the number of events processed.

I also noticed that how you control the game has a large effect on the number of events it has to process. Using the D-Pad to navigate produces a tiny number of input events, while using the analog sticks or the touch pads produce a ton. I believe this is the main reason that some people experienced freezing while others didn't. It took about 50 minutes for me to get the game to freeze using the D-pad alone, but I could reliably get a freeze in under a couple minutes by messing with the touch pads a lot.
cheesechick Dec 6, 2022 @ 11:37am 
Looks like the renpy bug[github.com] has been closed. Fingers crossed this means a fix soon!
MissingToken Dec 6, 2022 @ 9:12pm 
I'm hoping to submit a fix to Ren'Py myself but I already spent a lot of my free time getting the workaround script I posted above working and have to take a bit of a break for now.
chai Dec 10, 2022 @ 6:00am 
Hi does anyone know if the patch for this is coming?
blacktabbygames  [developer] Dec 10, 2022 @ 7:26am 
Originally posted by chai:
Hi does anyone know if the patch for this is coming?

I'm sure it's coming, but since this requires a patch to the engine itself, I'm reliant on Ren'py itself fixing a push live. I'll message the guy who runs it on Monday to see if he has a timeline!
blacktabbygames  [developer] Dec 10, 2022 @ 7:32am 
Originally posted by chai:
Hi does anyone know if the patch for this is coming?
Update: it's live in the nightly build of ren'py so I'm going to get an update out this morning alongside some other changes!
chai Dec 11, 2022 @ 11:30am 
Thanks!!
blacktabbygames  [developer] Dec 11, 2022 @ 11:58am 
Hey folks — the fix should be live, so please let me know if it's working for you!
DJFullTilt Dec 14, 2022 @ 12:05pm 
Originally posted by blacktabbygames:
Hey folks — the fix should be live, so please let me know if it's working for you!

Happy to report that I completed the entirety of Chapter 4 on my steam deck! :steamthumbsup:

(Side note: It was a little clunkier than I remember, but maybe it was always kind of wonky using Ren'py with sticks/dpad?)
blacktabbygames  [developer] Dec 14, 2022 @ 1:22pm 
Originally posted by dj_fults:
Originally posted by blacktabbygames:
Hey folks — the fix should be live, so please let me know if it's working for you!

Happy to report that I completed the entirety of Chapter 4 on my steam deck! :steamthumbsup:

(Side note: It was a little clunkier than I remember, but maybe it was always kind of wonky using Ren'py with sticks/dpad?)
Glad to hear it's running better!

re: clunkiness, I'd definitely recommend the dpad over the sticks — there's an annoying ui issue I'm trying to solve that boils down to this:

• We put our dialogue choices in a vbox so we can fit them in the dialogue box with a scrollbar.
• Ren'py's auto-focus seems broken specifically with vboxes so if you load a save with a controller that has an open dialogue menu, it cannot autofocus on an option in the vbox.
• We made *one* button on the quick menu focus-able to get around this, so you have *something* to autofocus on when you load (and therefore are able to focus on a dialogue option by flicking over)
• Aesthetically, the quick menu looks best on the side, so side presses on the d-pad or side-flicks on the analogue stick are how you get to that button, which is extra wonky on analog sticks.

Will probably try and move the quick menu to the bottom of the screen in the next update to get around it and see how that looks!
< >
Showing 16-30 of 35 comments
Per page: 1530 50