Adapting a lutris yaml file to play project 1999

Adapting a lutris yaml file to play project 1999

I played Everquest a while ago now, raided hardcore for several years, it's been a real blast of a game !

I wanted to give it a shot recently, but I have no more a windows machine. Moreover I played from Velious to Underfoot so I'm lagging behind 11 expansions if I count correctly...which is a lot.

I'm not a wine pro at all and don't know it well, but what always bothered me the few times I played with it, was the inability to segregate environments: you end up messing with your system config very fast, install things that conflicts with another game, and well it's rapidly a nightmare.

I'm a big fan of asdf : it does a very good job at keeping your programming environments separated, so when you need binaries of python / go / rust / nodejs you name it you'll love using it, it's a life savior to keep your system clean and tidy.

So after some research it seems like Lutris does a pretty good job at doing that, plus it leverages yaml pretty well, ala ansible, to generate kind of a playbook, but to install a windows program with wine.

Unfortunately the script proposed on their website doesn't work (or assume you have an installed copy of the game, not sure about it) so here's one that works.

It requires you to:

  1. Download the Titanium client, 5 isos, I found them here.
  2. Download the project 1999 zip that will override some regular eq files.
  3. Get lutris directly from their repo, as the time of writing this was not possible on release 0.5.8.3 to have more than 3 files (fixed in this commit)

I pass on installing lutris which is fairly straightforward with the pipenv files they provide.

You then need to run ./bin/lutris -d -i p99.yaml with the yaml file below. And voila you can play EQ, well almost !

The game installed fine, but at server selection there was nothing, no servers.

Long story short you can use that little tool p99-login-middlemand (compile it like advertised on the README) and point the eqhost.txt to localhost instead of the login.eqemulator.net and you're set !

name: p99
game_slug: p99
version: v0.1
slug: p99_v0.1
runner: wine
script:
  game:
    args: patchme
    exe: drive_c/Program Files (x86)/Sony/EverQuest/eqgame.exe
    prefix: $GAMEDIR
  files:
    - iso1: N/A:Select game iso 1
    - iso2: N/A:Select game iso 2
    - iso3: N/A:Select game iso 3
    - iso4: N/A:Select game iso 4
    - iso5: N/A:Select game iso 5
    - p99Files: N/A:Select p99 zip
  installer:
  - task:
      description: Creating Wine prefix
      name: create_prefix
      prefix: $GAMEDIR
  - task:
      name: winetricks
      app: d3dx9
  - task:
      name: winetricks
      app: d3dx9_43
  - task:
      name: winetricks
      app: dxvk
  - extract:
      dst: $GAMEDIR/drive_c/eq1
      file: iso1
  - extract:
      dst: $GAMEDIR/drive_c/eq2
      file: iso2
  - extract:
      dst: $GAMEDIR/drive_c/eq3
      file: iso3
  - extract:
      dst: $GAMEDIR/drive_c/eq4
      file: iso4
  - extract:
      dst: $GAMEDIR/drive_c/eq5
      file: iso5
  - task:
      executable: $GAMEDIR/drive_c/eq1/Install.exe
      name: wineexec
      args: --windowed
  - extract:
      dst: $GAMEDIR/drive_c/Program Files (x86)/Sony/EverQuest/
      file: p99Files
  - execute:
      command: mv "$GAMEDIR/drive_c/Program Files (x86)/Sony/EverQuest/dsetup.dll" "$GAMEDIR/drive_c/Program
        Files (x86)/Sony/EverQuest/DSETUP.dll"
  - execute:
      command: mv "$GAMEDIR/drive_c/Program Files (x86)/Sony/EverQuest/Resources/loadscreen.jpg"
        "$GAMEDIR/drive_c/Program Files (x86)/Sony/EverQuest/Resources/loadscreen.JPG"
  - write_config:
      data:
        Defaults:
          WindowedMode: true
        VideoMode:
          FullscreenBitsPerPixel: 32
          FullscreenRefreshRate: 60
          Height: $RESOLUTION_HEIGHT
          Width: $RESOLUTION_WIDTH
      file: $GAMEDIR/drive_c/Program Files (x86)/Sony/EverQuest/eqclient.ini
  wine:
    Desktop: true
    WineDesktop: $RESOLUTION