The Steam release of Lost Chapter, an NSFW roguelike deckbuilder, doesn’t seem to work out-of-box on under Proton on Linux as of this writing (surprisingly, since Proton compatibility is very good these days, and a game not running is quite unusual for me).

https://store.steampowered.com/app/2356470/Lost_Chapter/

I’ve seen some people on the Steam forums asking if anyone has a way to get it working. I took a look, and got it working, and wanted to post it on the Threadiverse so that search engines would index the solution it for anyone who’s off trying to get it functioning.

The game is authored using RPGMaker MZ.

It looks like the Steam integration isn’t functioning for some reason; this causes it to fail at start. What I did was simply to disable that, and then run it directly outside of Steam in Linux, using NW.js.

Apply this patch to disable the Steam integration:

--- "Lost Chapter-orig/js/plugins/Cyclone-Steam.js"	2024-06-05 23:58:45.082129776 -0700
+++ "Lost Chapter/js/plugins/Cyclone-Steam.js"	2024-06-06 00:45:13.582833008 -0700
@@ -318,7 +318,8 @@
   /////////////////
   static setRichPresence(pchKey, pchValue)
   {
-    return this.greenworks.setRichPresence(pchKey, pchValue);
+      //    return this.greenworks.setRichPresence(pchKey, pchValue);
+      return null;
   }
 
   /////////////////
@@ -326,7 +327,8 @@
   /////////////////
   static getAuthSessionTicket()
   {
-    return this.greenworks.getAuthSessionTicket(this.AuthSuccess, this.AuthFailed);
+      //    return this.greenworks.getAuthSessionTicket(this.AuthSuccess, this.AuthFailed);
+      return null;
   }
 
   static AuthSuccess()

On the off chance that the above doesn’t copy cleanly, including a gzipped, base64-encoded version:

begin-base64 644 lost-chapter.diff.gz
H4sICOBpYWYAA2xvc3QtY2hhcHRlci5kaWZmAK2QUUvDMBSFny30P1z2NGnT
Zunaxu6lMvBFH2QT30u8tNlqWpIUGeJ/twtDVBwW9D7kwMnNR84hhMDsrjMW
1k3VW9Sk07KOdybu26GWysTrg2g7hWRrsXqOdmZ2wShbEpoRmgJLipQXyzSi
nC3YVZ5nQGhOqRcEwVfuRGQGlI68YpFEKWc8SSjlJ2RZAkkWPMwhOAqHsvQA
IP4+/tE1trJSgEG7kaK512hQCZz3ornFQwijPlbtgJdu+dX3yCig0Q5agW2k
iWqNqF46vTfRr5CV7wXgJo7/h3MiqKFtV+6Lb+Ppn4nrimGZK4bl04qp0V4P
ttmiMbJTD1Ls0c4ntfHjS7fk7EGI8SaED+emki0+Te3oz/TzzZ2Sf+IcA78D
IonX8wEDAAA=
====

You can extract that as follows:

$ uudecode lost-chapter.diff.gz.base64
$ gunzip lost-chapter.diff.gz
$ mv lost-chapter.diff "Lost Chapter/"

So apply the patch:

$ cd "Lost Chapter"
$ patch -p1 <lost-chapter.diff

Then you’re going to need the current Linux release of NW.js:

https://nwjs.io/

unpack that tarball into the Lost Chapter game directory:

$ cd "Lost Chapter"
$ tar xzvf nwjs-v0.88.0-linux-x64.tar.gz --strip-components=1 

And then just run the NW.js binary to launch the game:

$ ./nw

That’s good-enough to just run the game directly from the command line and have it work.

The game doesn’t – as best I can tell – appear to need to be run from within the Steam environment if invoked like this, but if you’d like to be able to launch it from Steam, you can do so as follows:

Go to Lost Chapter’s properties in Steam. Then General->Launch Options. In that field, insert the following text:

echo %command%; ./nw

This convoluted “Launch Options” syntax is because Steam treats anything in this field as a series of environment variables unless the string “%command%” is present, in which case it treats the whole thing as a command line to execute. We don’t actually want to use the original binary at all, in this case, but need to have it in the “Launch Options” text to specify the new binary name.

    • tal@lemmy.todayOP
      link
      fedilink
      English
      arrow-up
      3
      arrow-down
      4
      ·
      edit-2
      5 months ago

      They don’t have any existing solutions on ProtonDB, and I don’t want to set up pseudonymous accounts on ProtonDB. This’ll be enough for someone to find it with Google or Kagi or the like, and if someone wants to go do a ProtonDB entry, be my guest.

    • bionicjoey@lemmy.ca
      link
      fedilink
      English
      arrow-up
      11
      ·
      5 months ago

      I always respect people who are willing to do a ton of technical work and troubleshooting just for the chance to be horny.

      • Brewchin@lemmy.world
        link
        fedilink
        English
        arrow-up
        3
        ·
        5 months ago

        I mean… what kind of person tells another that they’re having fun the wrong way? 🤷🏻‍♂️

  • JTskulk@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    5 months ago

    Have you tried just adding your tweaked version as a non-steam game and then running that in Proton?

    • tal@lemmy.todayOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      5 months ago

      No. I did briefly try running it under vanilla WINE, and don’t believe that it ran successfully. If it weren’t able to run under a Linux-native NW.js, I might have spent more time looking at WINE compatibility routes, but at least from my standpoint, a Linux-native binary route was a preferable path.

      If it is or becomes common for RPGMaker MZ games to be distributed with game-specific Windows DLLs or something, that might be something to look into.

      • JTskulk@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        5 months ago

        Running it in Proton is so quick and easy, you might as well try it once. You’ve got nothing to lose. All you do is add non-steam game, then force it to use proton if you don’t force proton on all games by default like I do.

        • tal@lemmy.todayOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          5 months ago

          I don’t stand to gain by working on running a game in Proton if I can just run it natively in Linux, but if someone else wants to try and get it working and post their results, I suppose that’d be one more data point.

          For me, the value in Proton is just the ability to run stuff that I can’t run natively in Linux.