blt4l icon indicating copy to clipboard operation
blt4l copied to clipboard

Completely eliminate the awkward installer with a runtime script instead

Open zekesonxx opened this issue 8 years ago • 5 comments

Introducing: blt4l_launcher. A single-file bash launcher script, designed for distro packaging with no external dependencies (except zenity for error messages, but that's wholly optional).

Features:

  • Automatically copy in mods/ if missing
  • Automatically copy in mods/base/ if missing
  • Detects the Steam runtime and switches binaries as needed
  • Loads a binary in the gamedir if present (so, will look for $PAYDAY2/libblt_loader.so before /usr/lib/blt4l/libblt_loader.so)
  • Fail gracefully

Rough idea of new blt4l install instructions:

  1. Install the respective blt4l package for your distro: Debian, Fedora, Arch, etc
  2. Set PAYDAY 2's launch options in Steam to blt4l %command%
  3. Run the game

Pros over the old system:

  • Distro packaging friendly
    • Easily change library or mods dir paths using simple patch files on the script
    • No install time scripts
  • Handles running with or without the Steam runtime without missing a beat
  • No user interaction needed to install the mods directory
  • Simply delete mods/base and run the game again to repair/update the base mod
  • Easily distribute updates or modifications to the base mod, just tell the user to delete mods/base to update.
  • Don't have to figure out where the game is (Steam will automatically put us there)

Cons over the old system:

  • Doesn't automatically modify the game's launch options
    but it is a lot simpler to explain to a user on how to do it
  • Less friendly to installing outside of a package manager

Folder mockup of a proper package install (Arch standards here):

/usr
└── bin
    └──blt4l (installer script)
└── lib
    └── blt4l
        ├── libblt_loader.so (compiled for the distro)
        ├── libblt_loader_steamrt.so (compiled for the steam runtime)
        └── mods (mods folder from the repo)
            └── ...

zekesonxx avatar Sep 14 '17 22:09 zekesonxx

Doesn't automatically modify the game's launch options

but we could write a launcher installer launcher :tada:

all in all, I like this

RomanHargrave avatar Sep 15 '17 03:09 RomanHargrave

Technically I could add something like blt4l -install that would inject the launch options into Steam's vdf files, but that feels like a lot of work and added script bulk for almost no payoff.

zekesonxx avatar Sep 15 '17 03:09 zekesonxx

@RomanHargrave shall I move the repo over to the blt4linux organization?

zekesonxx avatar Sep 15 '17 20:09 zekesonxx

If you want.

RomanHargrave avatar Sep 15 '17 20:09 RomanHargrave

I'm revisiting issues at the moment, and had some thoughts on this.

The installer is more than just that, it's a collection of scripts to automate a source build for end users. Setting the launch parameters is somewhat of a tertiary concern. Perhaps if we were to install a launch wrapper, and then configure steam to use it instead of the current approach. It has the benefit of the launcher in being more end-user friendly and robust, as well as giving us the ability to redirect the game output to a file, and we retain the automated process of building BLT and putting it in the proper place (most of the time). Ultimately, the launcher alone runs in to the same problem as does the installer here, though, which is putting files in the proper place. If we want to properly store BLT in known location (like /var, or /opt, with the launcher in the path), we need to have write access to the root filesystem, otherwise we need to rely on the user having an environment configured to search $HOME/.local/bin or similar, which is not 100% guaranteed.

RomanHargrave avatar May 21 '18 17:05 RomanHargrave