Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@Centzilius
Last active June 29, 2022 13:58
Show Gist options
  • Star 18 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save Centzilius/57892e5d1aaea51b3f389e6f1d587c97 to your computer and use it in GitHub Desktop.
Save Centzilius/57892e5d1aaea51b3f389e6f1d587c97 to your computer and use it in GitHub Desktop.
""" Game fix for FFXIV
"""
#pylint: disable=C0103
from protonfixes import util
import os
from subprocess import call
import sys
def main():
""" for FFXIV skip intro cutscene to allow game to work.
"""
util.protontricks('hidewineexports=enable')
# disable new character intro cutscene to prevent black screen loop
configpath = os.path.join(util.protonprefix(), 'drive_c/users/steamuser/Documents/My Games/FINAL FANTASY XIV - A Realm Reborn')
if not os.path.exists(configpath):
os.makedirs(configpath)
configgame = os.path.join(configpath, 'FFXIV.cfg')
if not os.path.isfile(configgame):
f = open(configgame,"w+")
f.write("<FINAL FANTASY XIV Config File>\n\n<Cutscene Settings>\nCutsceneMovieOpening 1")
f.close
configpath = os.path.join(util.protonprefix(), 'drive_c/users/steamuser/Documents/My Games/FINAL FANTASY XIV - A Realm Reborn')
if not os.path.exists(configpath):
os.makedirs(configpath)
configgame = os.path.join(configpath, 'FFXIV_BOOT.cfg')
if not os.path.isfile(configgame):
f = open(configgame,"w+")
f.write("<FINAL FANTASY XIV Boot Config File>\n\n<Version>\nBrowser 1\nStartupCompleted 1")
f.close
# Fixes the startup process.
if 'NOSTEAM' in os.environ:
util.replace_command('-issteam', '')
if 'XL_WINEONLINUX' in os.environ:
try:
util.install_dotnet('dotnet48')
except AttributeError:
util.protontricks_proton_5('dotnet48')
util.protontricks('vcrun2019')
util.replace_command('-issteam', '')
launcherpath = os.path.join(util.protonprefix(), 'drive_c/users/steamuser/AppData/Local/XIVLauncher/XIVLauncher.exe')
if not os.path.exists(launcherpath):
call(
[
"curl",
"https://kamori.goats.dev/Proxy/Update/Release/Setup.exe",
"-L",
"-o",
os.path.join(
util.get_game_install_path(),
"boot/Setup.exe"
)
]
)
util.replace_command('ffxivboot.exe', 'Setup.exe')
else:
original_launcher = os.path.join(
util.get_game_install_path(),
"boot/ffxivboot.exe"
)
util.replace_command(original_launcher, launcherpath)

Final Fantasy XIV on Steam after the Steam Account Linking incident

In order to get FFXIV to work you need to link your account first. Sadly this is (so far) the only step we can't do from linux. For everything else follow along.

Dependencies

Make sure you have curl installed. Also install Proton 5.0 from the tool section of Steam in the same gamelibrary as your Final Fantasy XIV.

Your old prefix

If you played the game earlier via steam or if you have tinkered with it in any way I recommend that you put it somewhere else. Your prefix (from steam) is usually located at

$HOME/.steam/steam/steamapps/compatdata/39210

Get GE Proton

I tested this setup with Proton-6.21-GE-2. You can get that here. TLDR:

cd $HOME/.steam/steam/compatibilitytools.d
curl -L https://github.com/GloriousEggroll/proton-ge-custom/releases/download/6.21-GE-2/Proton-6.21-GE-2.tar.gz | tar xz

Update winetricks of that Proton installation

cd $HOME/.steam/steam/compatibilitytools.d/Proton-6.21-GE-2/protonfixes
./winetricks --self-update

Patch the Proton version

This gist has another file. Replace the file located at $HOME/.steam/steam/compatibilitytools.d/Proton-6.21-GE-2/protonfixes/gamefixes/39210.py with it.

Creating a new prefix

  • Right click on ffxiv in your library
  • click on Preferences
  • Click on compatibility
  • Set the checkmark for "Force the use of a specific Steam Play compatibility tool"
  • Select "Proton 6.3-8"
  • Start the game
  • Close the defunct launcher/game

Edit the launch arguments on steam

  • Right click on ffxiv in your library
  • click on Preferences
  • Click on compatibility
  • Select "Proton-6.21-GE-2"
  • put the following string into the launch arguments XL_NO_SPACE_REQUIREMENTS=true XL_WINEONLINUX=true DSSENH=n %command%

Launch the game

The first launch will take forever and there will be one pop up that something is not working. Click on no and soon after XIVLauncher Setup should start.

Play the game

Troubleshooting

  • I was not able to test this setup on every possible combination of things. My latest changes to this guide was after doing it on a clean Ubuntu 20.04 LTS installation with steam installed via the Ubuntu Software Center and I selected to install 3rd party drivers in the Ubuntu installation. (Not that I recommend Ubuntu personally... I was just testing something that is different to my personal setup).
  • You might also want to have a look at this page: https://github.com/GloriousEggroll/proton-ge-custom/tree/6.21-GE-2#installation .
  • In order to get some logs it helps starting steam in a terminal. It is also helpful to execute the following command which will result in a log file being written in $HOME/steam-39210.log.
cp $HOME/.steam/steam/compatibilitytools.d/Proton-6.21-GE-2/user_settings.sample.py $HOME/.steam/steam/compatibilitytools.d/Proton-6.21-GE-2/user_settings.py
  • Starting over and trying again is "as simple as" deleting your prefix and starting the guide from "Creating a new Prefix"

"I get a write free space error when trying to get XIVLauncher to download FFXIV"

  • Please add XL_NO_SPACE_REQUIREMENTS=true to your launcher arguments in Steam to disable XIVLauncher's disk space checks.
    **NOTE:**You will be responsible for ensuring you have enough space on your own.
@bonesmoses
Copy link

Yes. In fact, I never changed it. It's still using, and has always used Proton-6.21-GE-2. Just to make sure, I blew up the existing prefix and started from scratch by using 6.3.8, letting it build a new prefix, switching to 6.21-GE-2 and adding the new launch command, and now it won't even install FFXIVLauncher at all anymore, it just goes straight to the "new" broken launcher.

I figured it was related to either patch 6.1 or some Steam update, since it worked last week and I didn't change anything.

@bonesmoses
Copy link

Alright, I can't explain this since I made sure everything running under 'steam' or 'Steam' via ps auwx was killed, but rebooting magically fixed this. I retract, but if someone else notices this issue, rebooting may fix it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment