Lost Chapter
This Community Hub is marked as 'Adult Only'. You are seeing this hub because you have set your preferences to allow this content.

Lost Chapter

View Stats:
Tried everything
This game just straight up doesn't work on linux, which is surprising because at this point I've gotten used to stuff just working without even having to check. I tried GE, regular proton, experiment, and hotfix. I tried just running the exe by itself, I looked at the command line to see if anything stood out but couldn't find anything.

Steam says the game is running, and I honestly think it is, but for some reason the window manager just isn't fetching it? idk

Unless someone can come up with anything else the game runs just fine on a vm, it's not exactly resource intensive.
Originally posted by LyPpad:
Here's a convenience script that takes all steps to make the game natively playable on linux.
(Downloading nw; editing the src; creating copies of the relevant img files) With this there should be no loading errors. The main menu is also fixed. the script is structured so you can grab whatever step you want and do the rest manually if you want. Execute it in the game directory or it will not behave correctly.

# Lost Chapter Linux Patch # Place this in the games root and run it. # The game can be started via the "nw" binary afterwards #!/bin/bash set -e # Download NW.js SDK echo "Downloading NW.js SDK v0.99.1…" curl -L -o nwjs-v0.99.1-linux-x64.tar.gz \ https://dl.nwjs.io/v0.99.1/nwjs-v0.99.1-linux-x64.tar.gz # Unpack and overwrite nw.js related game files echo "Unpacking and overwriting game dir…" tar --strip-components=1 -xzf nwjs-v0.99.1-linux-x64.tar.gz # Clean up rm nwjs-v0.99.1-linux-x64.tar.gz # Patch Steam plugin PLUGIN="./js/plugins/Cyclone-Steam.js" echo "Patching $PLUGIN…" sed -i \ -e 's/^\(\s*\)return this\.greenworks\.getAuthSessionTicket(this\.AuthSuccess, this\.AuthFailed);/\1return null;/' \ -e 's/^\(\s*\)return this\.greenworks\.setRichPresence(pchKey, pchValue);/\1return null;/' \ "$PLUGIN" # Double-naming on img/pictures echo "Creating flipped-case copies in ./img/pictures…" DIR="./img/pictures" for f in "$DIR"/*; do [ -f "$f" ] || continue # skip non-files base=$(basename "$f") [[ "$base" == .* ]] && continue # skip hidden first="${base:0:1}" rest="${base:1}" if [[ "$first" =~ [A-Z] ]]; then flipped=$(echo "$first" | tr 'A-Z' 'a-z') elif [[ "$first" =~ [a-z] ]]; then flipped=$(echo "$first" | tr 'a-z' 'A-Z') else continue fi newbase="$flipped$rest" newpath="$DIR/$newbase" if [[ "$f" != "$newpath" && ! -e "$newpath" ]]; then cp "$f" "$newpath" echo "$base → $newbase" else echo "Skipped $newbase (exists or same)" fi done echo "Making the nw binary executable" chmod +x nw echo "Everything run successfully."
< >
Showing 1-15 of 18 comments
It appears someone did get the game working. It has issues with the steam integration it seems. I tried to apply the patch as instructed but it gives me a different line ending failure every time, despite the .diff patch being fresh text written in vim. If anyone else has better luck please let me know, and what you did to make it work.

https://lemmy.max-p.me/post/lemmy.max-p.me/1246253
LyPpad Mar 15 @ 8:15am 
The lines changed in some update. Currently its lines 321 and 329. I suggest you go into the file and replace them manually. If you don't have a nice editor to skip to lines, just scroll to the bottom and you should spot them. It's 2 lines and both have to be replaced with "return null;" so not a big deal.
Note: The game works fine, but there might be issues with animations. When starting the game the options are not visible (at least for me), so you'll have to use the arrow keys and space to guess.
Last edited by LyPpad; Mar 15 @ 3:04pm
I'll stick with vm for now if it's having menu issues. It's so strange this one game doesn't work. Usually rpg maker games are a given.

Edit: For anyone else that wants to do this, all you have to do is go to the Lost Chapter game folder, open up the js, then the plugins folder. You're looking for the Cyclone-Steam.js file. Open that in a text editor, scroll all the way to the bottom. The last two script trees handle the steam interaction that's causing the problem. On these last two script blocks replace the "return" lines with "return null;".

Once you do that go to nwjs.io and download the release. Put it into Lost Chapter's game folder, then open up the console and navigate to the game folder in the console using cd. Once there extract the tar using:

tar xzvf nwjs-v0.97.0-linux-x64.tar.gz --strip-components=1

Then you can run the game using ./nw in the command line while inside Lost Chapter's folder. Note that disabling the steam interface also disables achievements and trading cards, so if you care about those play on windows. Or wait for a better fix.

I'll copy paste this to the game's protondb in case anyone else wants these instructions.
Last edited by Kyonko802; Mar 17 @ 10:23am
Originally posted by Kyonko802:
I'll copy paste this to the game's protondb in case anyone else wants these instructions.
I use an alternative setup and am able to play without the previously mentioned issues and with achievements enabled. I submitted the information to ProtonDB a few minutes ago thinking I'd copy it here after, but apparently first time submitters aren't able to see their pending reports. I'll copy the full info I provided here once it's approved (and visible to me). In the meantime, here are the summarized steps: see my post below
Last edited by SkaterPenguin7; May 2 @ 2:21pm
Originally posted by Kyonko802:
Then you can run the game using ./nw in the command line while inside Lost Chapter's folder. Note that disabling the steam interface also disables achievements and trading cards, so if you care about those play on windows. Or wait for a better fix.

I'm running into a peculiar problem. I can get it working, but after beating Ruin and walking to the end it fails to load /img/pictures/Loading000.png. I've tried various things, but nothing is working. Is there a solution for this?
Originally posted by SkaterPenguin7:
I'll copy the full info I provided here once it's approved (and visible to me)
Tinker Steps: Custom Proton: Kawariki, Set launch options, Changed configuration

Launch options:
LC_ALL=ja_JP.utf8 %command%

Change configuration:
edit data/CommonEvents.json and data/Map010.json:
  1. ctrl-F CycloneSteam.getAuthSessionTicket();
  2. delete that text (so you should end up with "parameters":[""])

Additional notes
I'm playing with the DLC and the official content patch provided by the publisher. It took me a bit to get everything solved, but the game has seemingly run perfectly since. I'll break down the compatibility steps a bit for clarity:
  • Kawariki is available on GitHub. It's a compatibility tool for RPGMaker (and some other) games. It requires installation similar to custom Protons, but will allow the game to launch properly through Steam.
  • The launch arg will fix some errors for resources with Japanese filenames.
  • Removing the mentioned function call from CommonEvents.json will stop crashes from occuring when looking at the "Items", "Titles", and "Deck" screens. Removing from Map010.json will prevent crashes in the recollection room. If left alone it rapidly fires while these screens are open until the game crashes. Removing it doesn't seem to have any impact on achievements or rich presence, as authentication is called properly at other points.
Last edited by SkaterPenguin7; May 2 @ 10:05pm
Originally posted by SkaterPenguin7:
Originally posted by SkaterPenguin7:
I'll copy the full info I provided here once it's approved (and visible to me)
Tinker Steps: Custom Proton: Kawariki, Set launch options, Changed configuration

Launch options:
LC_ALL=ja_JP.utf8 %command%

Change configuration:
edit data/CommonEvents.json and data/Map010.json:
  1. ctrl-F CycloneSteam.getAuthSessionTicket();
  2. delete that text (so you should end up with "parameters":[""])

Additional notes
I'm playing with the DLC and the official content patch provided by the publisher. It took me a bit to get everything solved, but the game has seemingly run perfectly since. I'll break down the compatibility steps a bit for clarity:
  • Kawariki is available on GitHub. It's a compatibility tool for RPGMaker (and some other) games. It requires installation similar to custom Protons, but will allow the game to launch properly through Steam.
  • The launch arg will fix some errors for resources with Japanese filenames.
  • Removing the mentioned function call from CommonEvents.json will stop crashes from occuring when looking at the "Items", "Titles", and "Deck" screens. Removing from Map010.json will prevent crashes in the recollection room. If left alone it rapidly fires while these screens are open until the game crashes. Removing it doesn't seem to have any impact on achievements or rich presence, as authentication is called properly at other points.
Tried this and the game just instacrashes instead of hanging on "playing" now
LyPpad May 15 @ 11:46am 
I have encountered the issues with images not loading as well. With very little investigation I found that many of the images are named incorrectly (lowercase instead of uppercase and vice versa). Renaming the affected files when the message pops up and clicking retry fixes the issues.
During trial and error of fixing this I also found that these incorrectly named files are the reason for the missing Menu entries. It's possible there are other things in the game that simply will not be visible, because the files do not load.
A feasible fix for this would be to either check the source for all references and correct them, correct them as you encounter issues or simply have 2 versions of each image file with the names starting with both upper- and lowercase.
Last edited by LyPpad; May 15 @ 11:47am
The author of this thread has indicated that this post answers the original topic.
LyPpad May 15 @ 1:48pm 
Here's a convenience script that takes all steps to make the game natively playable on linux.
(Downloading nw; editing the src; creating copies of the relevant img files) With this there should be no loading errors. The main menu is also fixed. the script is structured so you can grab whatever step you want and do the rest manually if you want. Execute it in the game directory or it will not behave correctly.

# Lost Chapter Linux Patch # Place this in the games root and run it. # The game can be started via the "nw" binary afterwards #!/bin/bash set -e # Download NW.js SDK echo "Downloading NW.js SDK v0.99.1…" curl -L -o nwjs-v0.99.1-linux-x64.tar.gz \ https://dl.nwjs.io/v0.99.1/nwjs-v0.99.1-linux-x64.tar.gz # Unpack and overwrite nw.js related game files echo "Unpacking and overwriting game dir…" tar --strip-components=1 -xzf nwjs-v0.99.1-linux-x64.tar.gz # Clean up rm nwjs-v0.99.1-linux-x64.tar.gz # Patch Steam plugin PLUGIN="./js/plugins/Cyclone-Steam.js" echo "Patching $PLUGIN…" sed -i \ -e 's/^\(\s*\)return this\.greenworks\.getAuthSessionTicket(this\.AuthSuccess, this\.AuthFailed);/\1return null;/' \ -e 's/^\(\s*\)return this\.greenworks\.setRichPresence(pchKey, pchValue);/\1return null;/' \ "$PLUGIN" # Double-naming on img/pictures echo "Creating flipped-case copies in ./img/pictures…" DIR="./img/pictures" for f in "$DIR"/*; do [ -f "$f" ] || continue # skip non-files base=$(basename "$f") [[ "$base" == .* ]] && continue # skip hidden first="${base:0:1}" rest="${base:1}" if [[ "$first" =~ [A-Z] ]]; then flipped=$(echo "$first" | tr 'A-Z' 'a-z') elif [[ "$first" =~ [a-z] ]]; then flipped=$(echo "$first" | tr 'a-z' 'A-Z') else continue fi newbase="$flipped$rest" newpath="$DIR/$newbase" if [[ "$f" != "$newpath" && ! -e "$newpath" ]]; then cp "$f" "$newpath" echo "$base → $newbase" else echo "Skipped $newbase (exists or same)" fi done echo "Making the nw binary executable" chmod +x nw echo "Everything run successfully."
Last edited by LyPpad; May 15 @ 1:50pm
Originally posted by LyPpad:
Here's a convenience script that takes all steps to make the game natively playable on linux.
(Downloading nw; editing the src; creating copies of the relevant img files) With this there should be no loading errors. The main menu is also fixed. the script is structured so you can grab whatever step you want and do the rest manually if you want. Execute it in the game directory or it will not behave correctly.

# Lost Chapter Linux Patch # Place this in the games root and run it. # The game can be started via the "nw" binary afterwards #!/bin/bash set -e # Download NW.js SDK echo "Downloading NW.js SDK v0.99.1…" curl -L -o nwjs-v0.99.1-linux-x64.tar.gz \ https://dl.nwjs.io/v0.99.1/nwjs-v0.99.1-linux-x64.tar.gz # Unpack and overwrite nw.js related game files echo "Unpacking and overwriting game dir…" tar --strip-components=1 -xzf nwjs-v0.99.1-linux-x64.tar.gz # Clean up rm nwjs-v0.99.1-linux-x64.tar.gz # Patch Steam plugin PLUGIN="./js/plugins/Cyclone-Steam.js" echo "Patching $PLUGIN…" sed -i \ -e 's/^\(\s*\)return this\.greenworks\.getAuthSessionTicket(this\.AuthSuccess, this\.AuthFailed);/\1return null;/' \ -e 's/^\(\s*\)return this\.greenworks\.setRichPresence(pchKey, pchValue);/\1return null;/' \ "$PLUGIN" # Double-naming on img/pictures echo "Creating flipped-case copies in ./img/pictures…" DIR="./img/pictures" for f in "$DIR"/*; do [ -f "$f" ] || continue # skip non-files base=$(basename "$f") [[ "$base" == .* ]] && continue # skip hidden first="${base:0:1}" rest="${base:1}" if [[ "$first" =~ [A-Z] ]]; then flipped=$(echo "$first" | tr 'A-Z' 'a-z') elif [[ "$first" =~ [a-z] ]]; then flipped=$(echo "$first" | tr 'a-z' 'A-Z') else continue fi newbase="$flipped$rest" newpath="$DIR/$newbase" if [[ "$f" != "$newpath" && ! -e "$newpath" ]]; then cp "$f" "$newpath" echo "$base → $newbase" else echo "Skipped $newbase (exists or same)" fi done echo "Making the nw binary executable" chmod +x nw echo "Everything run successfully."
Thank you so much. I played the whole game and didn't notice any missing image files aside from the main menu, so perhaps it was small stuff like dialogue boxes or parts of the "liquids". Amazing you found that.
Reverie May 16 @ 3:35am 
Originally posted by LyPpad:
Here's a convenience script that takes all steps to make the game natively playable on linux.
(Downloading nw; editing the src; creating copies of the relevant img files) With this there should be no loading errors. The main menu is also fixed. the script is structured so you can grab whatever step you want and do the rest manually if you want. Execute it in the game directory or it will not behave correctly.

# Lost Chapter Linux Patch # Place this in the games root and run it. # The game can be started via the "nw" binary afterwards #!/bin/bash set -e # Download NW.js SDK echo "Downloading NW.js SDK v0.99.1…" curl -L -o nwjs-v0.99.1-linux-x64.tar.gz \ https://dl.nwjs.io/v0.99.1/nwjs-v0.99.1-linux-x64.tar.gz # Unpack and overwrite nw.js related game files echo "Unpacking and overwriting game dir…" tar --strip-components=1 -xzf nwjs-v0.99.1-linux-x64.tar.gz # Clean up rm nwjs-v0.99.1-linux-x64.tar.gz # Patch Steam plugin PLUGIN="./js/plugins/Cyclone-Steam.js" echo "Patching $PLUGIN…" sed -i \ -e 's/^\(\s*\)return this\.greenworks\.getAuthSessionTicket(this\.AuthSuccess, this\.AuthFailed);/\1return null;/' \ -e 's/^\(\s*\)return this\.greenworks\.setRichPresence(pchKey, pchValue);/\1return null;/' \ "$PLUGIN" # Double-naming on img/pictures echo "Creating flipped-case copies in ./img/pictures…" DIR="./img/pictures" for f in "$DIR"/*; do [ -f "$f" ] || continue # skip non-files base=$(basename "$f") [[ "$base" == .* ]] && continue # skip hidden first="${base:0:1}" rest="${base:1}" if [[ "$first" =~ [A-Z] ]]; then flipped=$(echo "$first" | tr 'A-Z' 'a-z') elif [[ "$first" =~ [a-z] ]]; then flipped=$(echo "$first" | tr 'a-z' 'A-Z') else continue fi newbase="$flipped$rest" newpath="$DIR/$newbase" if [[ "$f" != "$newpath" && ! -e "$newpath" ]]; then cp "$f" "$newpath" echo "$base → $newbase" else echo "Skipped $newbase (exists or same)" fi done echo "Making the nw binary executable" chmod +x nw echo "Everything run successfully."
As someone with very limited/basically no experiance with stuff like this can you make a step by step to help me understand this?

Also some questions:
1: Does this work on SteamDeck?
2: Is this with just the game and dlc from Steam? Or is it also with the publisher patch?
LyPpad May 16 @ 5:39am 
1: yes. I dont know what comes installed on SD, but when a command like curl is missing you can just install them
2:It should work with everything. I used it with the game + dlc + patch, so its the only thing I can give any sort of guarantee on.

Every line in the script that starts with # is a comment. Mostly everything is already explained there.

nw.js is the software that this rpg maker version uses as a base. Since the game comes with the windows version the script downloads the linux version and places it in the directory. This replaces some files; because we are changing versions; and makes the game unlaunchable via the original exe, not that it matters here.

After this some code is changed so the game doesnt check for steam (which would crash it)

Then all images in img/pictures are duplicated with the first letter either changed to upper or lowercase. This is necessary because the game fails to load some images because they are named incorrectly. I do this for all files because I dont know which ones are affected.

Finally the nw file we downloaded is set to be executable. After this you can start the game by running the nw file in the game's folder. It will remain unplayable via steam directly and you wont get achievements.

Note:
To install the official patch you will have to execute the patch via wine or proton and point it to the games files. You can do this by setting the patch's exe as a non steam game and setting proton compatibility. If you patch after running the script you might have to run it again.

The full install would be to install the game via steam, install the official patch, go to the games directory and run the script in console or create a file for it and execute it.
Last edited by LyPpad; May 16 @ 6:11am
Reverie May 16 @ 9:02am 
Thanks a bunch~
LyPpad May 16 @ 11:19am 
I have figured out how to get steam integration working, but for whatever reason most sounds don't play (some do) when the game is started through steam .-.
To make it short:
libsdkencryptedappticket64.so needs to be named libsdkencryptedappticket.so
libsteam_api64.so needs to be named libsteam_api.so
The existing files can be removed.
The game then must be launched via "./nw #%command%" in the launch options (you wont be able to launch it without steam anymore).
Last edited by LyPpad; May 16 @ 5:20pm
LyPpad May 18 @ 6:26pm 
Here is a different version of the script. This one keeps the steam integration intact, meaning that you can ONLY launch it from Steam, but you get achievements. After Running the script set the launch options in the games properties to "./nw #%command%".
This script is more unwieldy because I have embedded a python script in it that renames all audio files with japanese characters and renames references to those files accordingly. This is neccessary, because in steams runtime all the japanese characters in filepaths get borked, causing those sounds not to play, and those sounds are basically everything except the basic RPG Maker sound effects.
Technically I could change the launch options for the game in the script, but to do that I would have to edit the steam config. I wanted to avoid doing anything outside of the games directory.
The nwjs version needs to be this specific one.

# Lost Chapter Linux Patch # Place this as a file in the games root and run it (AFTER INSTALLING THE OFFICIAL PATCH). # THE GAME WILL ONLY BE LAUNCHABLE FROM STEAM VIA LAUNCH OPTIONS "./nw #%command%" #!/bin/bash set -e # Download NW.js NW_JS_VERSION="0.74.0" echo "Downloading NW.js v$NW_JS_VERSION…" curl -L -o nwjs-v$NW_JS_VERSION-linux-x64.tar.gz \ https://dl.nwjs.io/v$NW_JS_VERSION/nwjs-v$NW_JS_VERSION-linux-x64.tar.gz # Unpack and overwrite nw.js related game files echo "Unpacking and overwriting game dir…" tar --strip-components=1 -xzf nwjs-v$NW_JS_VERSION-linux-x64.tar.gz # Clean up rm nwjs-v$NW_JS_VERSION-linux-x64.tar.gz # Double-naming on img/pictures echo "Creating flipped-case copies in ./img/pictures…" DIR="./img/pictures" for f in "$DIR"/*; do [ -f "$f" ] || continue # skip non-files base=$(basename "$f") [[ "$base" == .* ]] && continue # skip hidden first="${base:0:1}" rest="${base:1}" if [[ "$first" =~ [A-Z] ]]; then flipped=$(echo "$first" | tr 'A-Z' 'a-z') elif [[ "$first" =~ [a-z] ]]; then flipped=$(echo "$first" | tr 'a-z' 'A-Z') else continue fi newbase="$flipped$rest" newpath="$DIR/$newbase" if [[ "$f" != "$newpath" && ! -e "$newpath" ]]; then cp "$f" "$newpath" echo "$base → $newbase" else echo "Skipped $newbase (exists or same)" fi done python3 - <<'EOF' # ─── Begin Python ───────────────────────────────────────────────────────────── import os import re import json import shutil import random import string from pathlib import Path # Directories to process audio_dir = Path("audio") img_dir = Path("img") data_dir = Path("data") mapping_file = Path("mapping.json") random_name_length = 8 # Helper functions def has_non_ascii(s: str) -> bool: return any(ord(c) > 127 for c in s) def make_random_name(length: int = random_name_length) -> str: chars = string.ascii_letters + string.digits + '_' return ''.join(random.choice(chars) for _ in range(length)) # Prepare mapping and used names mapping = {} used_names = set() # Process both audio and img directories for media_dir in (audio_dir, img_dir): if not media_dir.exists(): continue for root, _, files in os.walk(media_dir): root = Path(root) for fn in files: base, ext = os.path.splitext(fn) # Only rename files with non-ASCII in base name if has_non_ascii(base): orig_path = root / fn # Generate unique random base name new_base = make_random_name() i = 1 # Ensure we don't collide with existing names or mapping while new_base in used_names or (root / f"{new_base}{ext}").exists(): new_base = f"{make_random_name()}_{i}" i += 1 new_fn = f"{new_base}{ext}" new_path = root / new_fn print(f"Copying from {media_dir.name}: {orig_path} -> {new_path}") shutil.copy2(orig_path, new_path) mapping[base] = new_base used_names.add(new_base) # Save mapping to JSON with open(mapping_file, "w", encoding="utf-8") as mf: json.dump(mapping, mf, ensure_ascii=False, indent=2) print(f"Mapping saved to {mapping_file}") # Prepare regex pattern for JSON replacements if mapping: sorted_orig = sorted(mapping.keys(), key=lambda k: -len(k)) pattern = re.compile(r'"(' + "|".join(re.escape(k) for k in sorted_orig) + r')"') # Update JSON files in data directory for root, _, files in os.walk(data_dir): for fn in files: if fn.lower().endswith('.json'): path = Path(root) / fn text = path.read_text(encoding='utf-8') new_text = pattern.sub(lambda m: f'"{mapping[m.group(1)]}"', text) if new_text != text: print(f"Updating JSON: {path}") path.write_text(new_text, encoding='utf-8') print("All done!") # ─── End Python ─────────────────────────────────────────────────────────────── EOF if [[ -f ./lib/libsteam_api64.so && -f ./lib/libsdkencryptedappticket64.so ]]; then mv -v ./lib/libsteam_api.so ./lib/libsteam_api1.so mv -v ./lib/libsdkencryptedappticket.so ./lib/libsdkencryptedappticket1.so mv -v ./lib/libsdkencryptedappticket64.so ./lib/libsdkencryptedappticket.so mv -v ./lib/libsteam_api64.so ./lib/libsteam_api.so else echo "64-bit files not found Skipping renaming..." fi echo "Making the nw binary executable" chmod +x nw echo "Everything run successfully."
Last edited by LyPpad; May 19 @ 10:00am
< >
Showing 1-15 of 18 comments
Per page: 1530 50