Playing on Linux

DriftwoodXI runs on Linux under Wine today. The launcher does not run there yet, so this page is the recipe for everything it would have done for you. A native Linux launcher is in progress: as of 2026-09-05 its Windows-only pieces sit behind a platform layer, it can start the game through a Wine prefix, and its release pipeline builds a Linux AppImage; when the download page offers one, it does most of this page for you. By hand, this takes about ten minutes, and the Discord is where to ask when something on this page does not match your machine.

There is a Linux launcher now

The download page offers the DriftwoodXI launcher as an AppImage. It does steps 2 to 6 of this page for you: it works out which Wine prefix your client lives in from the folder you point it at, installs the Ashita bundle inside that prefix, writes the boot ini and the script, keeps the add-ons current and starts the game through wine. You still need step 1, a Wine prefix with the retail client. The rest of this page remains the by-hand recipe, and the words for what each piece is.

1. Before you start

  • A retail FFXI client inside a Wine prefix. Use the community's Lutris installer for Final Fantasy XI, or a plain 64-bit prefix with the PlayOnline installer, and let PlayOnline finish updating the client (about 10 GB). If retail PlayOnline opens and updates in your prefix, DriftwoodXI will run in it. Wine 9 or newer is recommended; DXVK is optional. No game files come from us, on any platform. Get a working client covers where the free retail installer is and how to force the version update through when PlayOnline will not fetch it — the same two steps, inside your prefix.
  • A plain Wine or Lutris prefix, not a Steam Proton one, if you have the choice. The launcher finds and launches a Proton prefix (including the Steam edition's compatdata/230330/pfx) and people do play from one — but Proton is Valve's Wine plus a Steam runtime that our launch is not part of, so its wine is not the one on your PATH, its library set is not your system's, and a [S_API FAIL] SteamAPI_Init() failed line in the log is the game noticing it was started outside Steam. Everything we test and everything this page describes is a plain prefix. If you are already in a Proton one and it works, carry on; if it does not, set wineBinary in the launcher's config.json to that Proton's own files/bin/wine, or move the client to a Lutris prefix before spending an evening on anything else.
  • An account. Register here; the game asks for it at the loader prompt.
  • The Microsoft Visual C++ 2015-2022 runtime, in that prefix. Ashita is built against Microsoft's C++ library and Wine's own stand-in is missing a piece of it, so without this the game closes a second or two after it starts (the log says unimplemented function msvcp140.dll.?_Throw_Cpp_error). One command: WINEPREFIX=~/.wine winetricks -q vcrun2022. The launcher does this for you from v0.30.1 — it checks the prefix before every launch and installs Microsoft's own redistributable if it is not there.
  • Tools used below: unzip, curl and jq, plus winetricks for the runtime above.

2. Get the DriftwoodXI Ashita bundle

Download the newest zip from the bundles folder of the content repo. The repo's ashita.json names the current one and its SHA-256, if you want to check it. Unzip it inside your prefix's C: drive; the rest of this page assumes this folder:

mkdir -p ~/.wine/drive_c/DriftwoodXI/Ashita
unzip -q DriftwoodXI-Ashita-*.zip -d ~/.wine/drive_c/DriftwoodXI/Ashita
cd ~/.wine/drive_c/DriftwoodXI/Ashita

What is in it: Ashita v4 (Ashita-cli.exe), the DriftwoodXI game loader at bootloader/xiloader.exe, the sandbox and DAT-overlay POL plugins, Ashita's winefix plugin, and every DriftwoodXI add-on as of the bundle's date. The launcher keeps the add-ons current by itself; step 6 is the by-hand version.

3. Write a boot ini

Copy config/boot/example-privateserver.ini to config/boot/driftwood.ini and change the top of it to this. Everything below [ashita.boot] stays as the example has it:

[ashita.launcher]
autoclose   = 1
name        = DriftwoodXI

[ashita.boot]
file        = .\\bootloader\\xiloader.exe
command     = --server xi.driftwoodgaming.com
gamemodule  = ffximain.dll
script      = driftwood.txt
args        =

The example leaves sandbox = 0, which means Ashita reads your FFXI settings from the prefix's own registry, where PlayOnline's installer put them; the FFXI Config tool inside the prefix changes them. A European client adds --lang EU to the command line, which is what the launcher does for one.

4. Write the script

Copy scripts/default.txt to scripts/driftwood.txt and add these lines after /load screenshot. Keep the ones you want; each add-on is a window or a slash command you may never open, and winefix is Ashita's own Wine compatibility plugin:

/load winefix
/addon load dwah
/addon load dwarena
/addon load dwbags
/addon load dwcon
/addon load dwcpx
/addon load dwcraft
/addon load dwengage
/addon load dwfame
/addon load dwfishing
/addon load dwgambits
/addon load dwhub
/addon load dwjobs
/addon load dwleaderboard
/addon load dwmacro
/addon load dwmerc
/addon load dwmerits
/addon load dwnemesis
/addon load dwparse
/addon load dwpolitics
/addon load dwport
/addon load dwquest
/addon load dwraid
/addon load dwreport
/addon load dwscan
/addon load dwspoils
/addon load dwsquad
/addon load dwtoau
/addon load dwtod
/addon load dwtracker
/addon load dwunleashed
/addon load dwwarehouse
/addon load dwchat
/addon load dwesper

Every add-on above is the server's own and stays inside the allowed list. dwgmpanel is staff tooling and is not in the bundle.

5. Launch

cd ~/.wine/drive_c/DriftwoodXI/Ashita
wine Ashita-cli.exe driftwood.ini

The loader asks for your username and password in the terminal. To skip the prompt, put them on the command line in the ini instead: command = --server xi.driftwoodgaming.com --user NAME --pass PASSWORD. That is your password in plain text in a file, so it is your call.

In Lutris: executable Ashita-cli.exe, arguments driftwood.ini, working directory the Ashita folder, and the prefix your client lives in.

6. Keeping the add-ons current

The launcher does this on every start. By hand it is one loop over the public content feed; run it after each content patch (the news announces them):

cd ~/.wine/drive_c/DriftwoodXI/Ashita
feed=https://raw.githubusercontent.com/DriftwoodGaming/DriftwoodXI-Content/main/content.json
curl -fsSL "$feed" | jq -r '.packages[] | .id + " " + .url' | while read -r id url; do
  curl -fsSL "$url" -o "/tmp/$id.zip" && rm -rf "addons/$id" && unzip -qo "/tmp/$id.zip" -d addons/
done

Each zip holds one <id>/ folder, and the manifest carries a SHA-256 per package if you want to verify before unzipping.

7. What you do not get without the launcher

  • Automatic add-on and Ashita updates (step 6 is the manual version).
  • Stored accounts and one-click profiles.
  • The DAT text overlay. Items the server repurposes, such as the Outfitter's job capes, show their retail names and descriptions in your client. Cosmetic only; the items themselves work.
  • The launcher's game-settings and gamepad screens. Use FFXI Config inside the prefix instead.
  • The optional HD texture packs.

8. If it does not start

  • "Failed to locate profileServerPortAddress2!" Your PlayOnline build is one the loader's signature does not match. It is a Windows problem too, not a Wine one; bring your polcore.dll version to the Discord.
  • POL-0033 at the lobby. Same cause, a different symptom; same channel.
  • The game closes two or three seconds after "Ashita injected and installed! Enjoy!", and the output holds wine: Call from … to unimplemented function msvcp140.dll.?_Throw_Cpp_error@std@@YAXH@Z, aborting. The prefix has Wine's stand-in C++ runtime instead of Microsoft's, and Ashita needs Microsoft's. Fix it with WINEPREFIX=/path/to/your/prefix winetricks -q vcrun2022 and launch again. Launcher v0.30.1 and newer do this by themselves; if it still happens with the launcher, the Launch Log says what its attempt hit.
  • A black window or a crash on start. Try the script without /load winefix, then with it; Ashita's boot log in its logs folder says which step failed.
  • It crashes at character select, or fades to black and dies as the zone loads, with wine: Unhandled page fault on write access to 00000018 in the output. That is the client reading game data it cannot make sense of, and the usual cause is the client itself: run PlayOnline's own file check on the client folder and let it re-fetch whatever it replaces. Two things make it much more likely — a DAT file deleted by hand on some guide's advice and never restored, and a PlayOnline update that was interrupted part-way, which leaves a real, full-size DAT with a blank hole in the middle of it. If the launcher's Launch Log carries a core overlay skipped line, read the next entry first — on launchers older than v0.32.6 that line says nothing about your client.
  • The Launch Log says core overlay skipped: block carries item id 0, expected …. Update the launcher to v0.32.6 or newer. On v0.32.5 and older this was almost always OUR bug, not your client's: the retail patch of 2026-09-09 (build 30260904_1) rewrote the item data files — ROM/286/73.DAT grew from about 17 MB to about 28 MB for the same items — and the launcher was still reading them at the old spacing, so it looked in the middle of the file and found blank bytes. A correct, fully updated client produced that line. v0.32.6 works out the spacing from the file itself and reads either version, so an up-to-date launcher and an up-to-date client simply agree. If you see it on v0.32.6 or newer, then it really is the client: run PlayOnline's own file check on the client folder. Either way the overlay is still built, without the items the client cannot supply, and the log names how many were left out — nothing else about your launch is affected, and the only symptom is donor item names in the inspect window.
  • Verify Game Files says a thousand files differ. Check the manifest date it shows in Settings first. Retail patches FFXI about monthly and rewrite around a thousand DATs each time, so a manifest generated before the last patch calls every one of them wrong on a client that is perfectly correct. Only the MISSING list is worth acting on — and never by deleting files to "fix" a mismatch.

9. Steam Deck

The Deck runs everything in Game Mode inside gamescope, a nested compositor, and that is where the reports come from: the launcher opens, Play gives a white window, and the client turns out to be sitting at PlayOnline's accept/decline screen. In order:

  • Use Desktop Mode first. It takes gamescope out of the picture, which is the quickest way to find out whether the problem is the game or the way the Deck is showing it. Get a working launch there before trying Game Mode.
  • The accept screen needs a press. That is PlayOnline's user agreement, drawn before character select, and nothing can dismiss it for you. Use the touchscreen, the right trackpad as a mouse, or a controller layout with Enter bound to a button — in Game Mode with nothing mapped there is nothing to press it with, and the screen looks frozen when it is only waiting.
  • Try windowed. In the launcher, Settings → Game settings → Screen mode → Windowed, with the resolution at 1280×800. The default is borderless at the display's own size, which is the mode a nested compositor is most likely to mishandle. Without the launcher, FFXI Config inside the prefix sets the same thing.
  • Know what your DXVK does. FFXI is a Direct3D 8 game. DXVK's D3D8 support is separate and much newer than its D3D9, so a prefix advertised as "DXVK enabled" is often still running FFXI through Wine's own OpenGL path. Plain wined3d is a fine answer; so is a deliberate d3d8-to-d3d9 setup. A half-configured one is the worst of the three.
  • If Game Mode is the only option, gamescope's window-sizing flags are the usual lever for a Wine window that comes up white — we have no Deck here to confirm which combination works, so if you find one, please post it in the Discord and this page will say so.