Wadjet Eye Games

Author Topic: Linux/Wine observations and workarounds  (Read 3148 times)

Offline Zorael

  • Newbie
  • *
  • Posts: 3
    • View Profile
Linux/Wine observations and workarounds
« on: July 23, 2012, 12:58:40 PM »
I finally finished the Steam game in linux, so I thought I'd take the time to detail the workarounds I needed to get it running nicely (read: for Googlers). There are basically two little quirks that plague certain use-cases of Gemini Rue under Wine, and I imagine they're largely AGS's fault. For random other (lowlevel) bugs, refer to the Wine AppDB page.

TL;DR: You want to move the contents of reslists/* into the game root, and instead make reslists a symlink to that root. You also want to symlink "Gemini Rue.exe" to GEMINI~1.EXE if you plan to use the reference savegame files.


1. Savegame storage location
Saved games seem to always be stored as agssave.nnn files in a Saves subdirectory of the working path from where the game was started, regardless of where that is. I imagine the same applies in Windows.

The rub is that if launched via Steam, the working path translates to the root game directory ("steamapps/common/gemini rue"), and as such the savegame files end up in a subdirectory there ("steamapps/common/gemini rue/Saves").

However, the "Gemini Rue.exe" game executable itself is placed in a reslists subdirectory to the game root; if you start the game yourself manually via a terminal -- as you would if you were fishing for Wine output -- praxis is to navigate to said reslists directory and run it from there. Consequently you'll get a new "gemini rue/reslists/Saves" directory created, separate to the one containing your saves from when run via Steam. The working path differs, after all.

Example directory structure with saves in two places;

        └── common             # may be your Steam ID
            └── gemini rue
                ├── reslists
                │   └── Saves  # from when started via terminal
                └── Saves      # from when started via Steam

This is a non-issue if you stick to one and only one way of starting the game, be it the terminal or Steam. The workaround is to decide on one directory and symlink the other to it;

        $ cd "steamapps/common/gemini rue"
        gemini rue$ rm -rf Saves                     # backup first
        gemini rue$ ln -s reslists/Saves Saves  # or other way around as befits the above line

Read on before doing this, though.


2. Reference savegame files and 8.3 filenames
As we all know, the recent-ish Steam update broke our old saves, and the neatest solution (aside from starting over) was to download the reference savegame files offered here on these forums and load the one closest to where you had originally progressed.

Unfortunately, said savegames files reference directly to the "Gemini Rue.exe" executable by its Windows short 8.3 filename GEMINI~1.EXE (at around hex 0000:2070). This is completely valid in Windows (though crude ;3), but Wine simply doesn't deal with it gracefully.

It needs to be accessible as GEMINI~1.EXE in the working directory. So again, if you only ever start it via Steam, you can place the symlink in the game root;

        $ cd steamapps/*/"gemini rue"
        gemini rue$ ln -s "reslists/Gemini Rue.exe" GEMINI~1.EXE

But if you also start it via the terminal, you'd need one in the reslists directory too. Redundant, so read on.


-(1+2). Dodging both
The bestest solution is to move all of reslists/* into the game root, and instead make reslists a recursive symlink to that root. You'll fix the save directory thing as both "gemini rue/reslists/Saves" and "gemini rue/Saves" will then point to the same directory. The executables will also be accessible in both the game root and in reslists/ (which will point to the root), though you'll still need a GEMINI~1.EXE symlink.

        $ cd steamapps/*/"gemini rue"
        gemini rue$ rm -rf reslists/Saves    # or the other way around. just back up your saves and delete the wrong directory/symlink
        gemini rue$ mv reslists/* .
        gemini rue$ ln -s . reslists

This will not break Steam updates as it will transparently follow the symlinks.

I can't remember anything else worth mentioning. There were the occasional graphical garbage and it crashed once or twice, but nothing that changing scene or reloading couldn't fix.

As a closing note, this forum really needs more markup features.

[attachment deleted by admin]