FFXIV Cloud Saves on Steam Deck
Tags: steamdeck, ffxiv, cloud, synchronization
Published: 2022-10-22 23:12:26

For unknown reasons FFXIV does not automatically synchronize the settings (character settings, gear sets, hotbars, etc.) with your account. This means that when you log into the game on another device you will have to reconfigure everything.

This guide describes how to set up [Syncthing](https://syncthing.net) to automatically synchronize settings between your devices.

**Note**: This setup requires you have two devices turned on at the same time to synchronize files between them. You can get a better experience by setting up a third device as a server (see the last section for more information).

**Update 2022-10-23**: It was brought to my attention that there is actually [in-game functionality](https://na.finalfantasyxiv.com/game_manual/config/#entry-backup_server) that achieves a similar purpose. The downside compared to the method described in this post is that you have to do it manually every time. The advantage is that the settings are stored on FFXIV's servers, but you can freely combine the two.

## Prerequisites

- Download and start Final Fantasy XIV at least once before attempting to follow this guide
- Steam Deck: Install [SyncThingy](https://flathub.org/apps/details/com.github.zocker_160.SyncThingy) from the Discover app (search for _Syncthing_)
- Windows: Install [SyncTrayzor](https://github.com/canton7/SyncTrayzor/releases/latest)

## Locating your _save path_

The game stores your settings in different paths depending on the platform:

- Windows: `C:\Users\<YourUsername>\Documents\My Games\FINAL FANTASY XIV - A Realm Reborn`
- Steam Deck ([XIVLauncher](https://goatcorp.github.io/faq/steamdeck)): `~/.xlcore/ffxivConfig`
- macOS ([XIV on Mac](https://www.xivmac.com/)): `~/Library/Application Support/XIV on Mac/ffxivConfig`

This path will be referred to later in the guide as the _save path_.

**Important**: Before doing anything else, make a backup of your save files!

## Creating your `.stignore` file

With FFXIV only want to synchronize specific configuration files between devices. Syncthing supports a [`.stignore` file](https://docs.syncthing.net/users/ignoring.html) that can be used to achieve this. Here is an example file with reasonable defaults:

```
// References:
// - https://github.com/carriejv/libxivdat#dat-type-support
// - https://old.reddit.com/r/ffxiv/comments/1u7uf0/config_file_names_and_descriptions/
// - https://old.reddit.com/r/ffxiv/comments/63tvc7/copying_ui_hotbar_game_configurations_settings/
// - https://forum.square-enix.com/ffxiv/threads/425658
// - https://github.com/PunishedPineapple/UISAVE_Reader

// You can (un)comment things to synchronize below.

//
// Global configuration
//

// System settings
// Not recommended for devices with different resolutions
//!(?i)/FFXIV.cfg

// Launcher settings (not recommended to sync this)
//!(?i)/FFXIV_BOOT.cfg

// System-wide macros
!(?i)/MACROSYS.dat

// Character appearance presets
!(?i)/FFXIV_CHARA_*.dat

//
// Character-specific configuration
//

// Recent /tell history
!(?i)/FFXIV_CHR*/ACQ.DAT

// UI Settings such as HUD and window layouts
// Not recommended for devices with different resolutions
//!(?i)/FFXIV_CHR*/ADDON.DAT

// Character configuration
!(?i)/FFXIV_CHR*/COMMON.DAT

// Gamepad control config
!(?i)/FFXIV_CHR*/CONTROL0.DAT

// Keyboard/mouse control config
!(?i)/FFXIV_CHR*/CONTROL1.DAT

// Gearsets
!(?i)/FFXIV_CHR*/GEARSET.DAT

// Gold Saucer config (Triad decks)
!(?i)/FFXIV_CHR*/GS.DAT

// Hotbar layouts
!(?i)/FFXIV_CHR*/HOTBAR.DAT

// "Search for item" indexing?
!(?i)/FFXIV_CHR*/ITEMFDR.DAT

// Item order in bags
!(?i)/FFXIV_CHR*/ITEMODR.DAT

// Keybindings
!(?i)/FFXIV_CHR*/KEYBIND.DAT

// Chat log filter settings
!(?i)/FFXIV_CHR*/LOGFLTR.DAT

// Custom macros
!(?i)/FFXIV_CHR*/MACRO.DAT

// Content cached in the UI, like retainer venture timers
!(?i)/FFXIV_CHR*/UISAVE.DAT

//
// DO NOT EDIT BELOW
//

// Ignore everything else
*
```

Save this file as `.stignore` in your _save path_.

**Note**: The files `FFXIV.cfg`, `FFXIV_boot.cfg` and `/FFXIV_CHR*/ADDON.DAT` are commented out in this example. These files contain device-specific settings and synchronizing them is not recommended.

## Setting up Syncthing on _Windows_

**Note**: You should first set up Syncthing on the device that has the configuration you want to use on all your other devices.

- Make sure the `.stignore` file is already in the _save path_
- Open the Syncthing Web UI (SyncTrazor)
- Click the **Add Folder** button
- Set the **Folder Path** (at the bottom) to `~\Documents\My Games\FINAL FANTASY XIV - A Realm Reborn` (the _save path_ you collected earlier)
- Set the **Folder Label** to something descriptive (e.g. `FFXIV Saves`)
- Click **Save** to create the folder


![Syncthing configuration on Windows](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gdqpa2phh7skiwonkm7k.png)

If everything worked correctly you should see one folder per character in the UI (I have two characters):

![Syncthing showing the character folders](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m57w9xafows7jf9n56bt.png)

## Setting up Syncthing on the _Steam Deck_

**Note**: You should perform the steps below in Steam Deck Desktop Mode.

- Open the Syncthing web UI (start SyncThingy and visit http://localhost:8384/ in your browser)
- Use the **Add Remote Device** button to connect your devices (you can get the ID from **Actions** (top right) -> **Show ID**).
- Share the `FFXIV Saves` folder on your Windows machine with your Steam Deck (see the **Sharing** tab). **Do not yet confirm when prompted on the Steam Deck if you want to add the folder!**
- Delete all the files and folders from your _save path_ (make sure you have a backup, you will need it later). The easiest is to rename the old folder and create a new one with the same name.
- Create the same `.stignore` file in your (now empty) _save path_
- Click **Add** in the Syncthing UI a dialog with options should pop up
- Set the **Folder Path** to your _save path_ (on Steam Deck: `~/.xlcore/ffxivConfig`)
- Click **Save** to add the folder. It should start syncing right away

![Syncthing configuration on Steam Deck](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bmd7dz3sfx71j7yd36u6.png)

At this point Syncthing should automatically download your configuration from your Windows machine. The default `.stignore` does not include `FFXIV.cfg` and `FFXIV_BOOT.cfg`, so we need to merge this folder with the backup. **Make sure to not overwrite any of the synchronized files!** The command:

```
cp -r -n ~/.xlcore/ffxivConfig_backup/* ~/.xlcore/ffxivConfig/
```

You can also skip this step and reconfigure your game instead.

## Syncthing as a service on the Steam Deck

(Information below is based on [this post](https://www.reddit.com/r/SteamDeck/comments/vocyi5/start_syncthing_automatically_on_steamdeck_even/), but we use Syncthingy instead of Syncthing GTK. Basically `me.kozec.syncthingtk` was replaced with `com.github.zocker_160.SyncThingy`)

SyncThingy only works when you enter Desktop Mode, we need it to start when the Steam Deck boots so it also synchronizes in the background in Game Mode.

- Create `~/.config/systemd/user/syncthing.service` with the following contents:  
  ```ini
  [Unit]
  Description=Syncthing
  
  [Service]
  Type=simple
  ExecStart=flatpak run --command=syncthing com.github.zocker_160.SyncThingy
  Restart=on-failure
  RestartSec=1
  SuccessExitStatus=3 4
  
  [Install]
  WantedBy=default.target
  ```
- Run `systemctl --user enable syncthing` to create the service
- Run `systemctl --user start syncthing` to start the service
- Go back to Game Mode and restart the Steam Deck completely
- Visit http://localhost:8384/ to make sure Syncthing is running properly (you can use the `curl http://localhost:8384/` to check without leaving game mode)

Congratulations, you have now set up your own Cloud Save functionality for Final Fantasy 14!

## Synchronizing without having both devices turned on

Syncthing is a decentralized system, which means that you need both devices online at the same time to synchronize files (see [this post](https://old.reddit.com/r/Syncthing/comments/gdhmol/syncthing_when_one_computer_is_offline) for more details).

The workaround is to introduce a third 'server' device (Raspberry PI, NAS, VPS, etc.), which is always online. You need to pair the server with both your Windows machine and your Steam Deck and also share the folder between all devices.

Here is what this setup looks like (note **Remote Devices** and **Shared With** on the folder):

![Syncthing server configuration](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wbdevv8fm0m1ihlkjs02.png)

Doing so should allow the following scenario:

- Play on the Steam Deck (PC turned off)
- Turn off the Steam Deck
- Wait a few days
- Turn on your PC
- The settings will automatically be downloaded from your server

**Note**: You need to run Syncthing as a service when your device starts. Refer to the [documentation](https://docs.syncthing.net/users/autostart.html) for more details on how to set this up for various platforms.

## Final words

Hopefully this guide was useful for somebody. Leave a comment if you have any questions and share this guide with your friends!

Thanks to the wonderful members of the [XIVLauncher](https://goatcorp.github.io/) Discord for brainstorming and proofreading!

Finally, please consider [sponsoring me](https://github.com/sponsors/mrexodia?metadata_source=ffxiv-cloud-saves) if you can afford it. All of my work is open source and I work on it in my free time.