Completely eliminate the awkward installer with a runtime script instead
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.sobefore/usr/lib/blt4l/libblt_loader.so) - Fail gracefully
Rough idea of new blt4l install instructions:
- Install the respective blt4l package for your distro: Debian, Fedora, Arch, etc
- Set PAYDAY 2's launch options in Steam to
blt4l %command%- 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
modsdirectory - Simply delete
mods/baseand 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/baseto 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)
└── ...
Doesn't automatically modify the game's launch options
but we could write a launcher installer launcher :tada:
all in all, I like this
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.
@RomanHargrave shall I move the repo over to the blt4linux organization?
If you want.
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.