From 368e6ca7c726465846f1f8b1ad329d161a7e3a40 Mon Sep 17 00:00:00 2001 From: Ikey Doherty Date: Tue, 19 Dec 2017 12:45:14 +0000 Subject: [PATCH] Document the new sexies Signed-off-by: Ikey Doherty --- README.md | 70 +++++++++++++++++++++++++++++++++++++++++----------- TECHNICAL.md | 8 ++++++ 2 files changed, 64 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 26b2abb..eff5f5d 100644 --- a/README.md +++ b/README.md @@ -15,13 +15,55 @@ reasons: - Compatibility - Performance -Additionally we apply dynamic workarounds to fix some filesystem path related bugs in Linux -ports (or even shader workarounds for ARK*) through our redirect module. + +This project, and by extension Solus, is not officially endorsed by, or affiliated with, Steam, or its parent company, Valve*. + +Linux Steam Integration is a [Solus project](https://solus-project.com/) + +![logo](https://build.solus-project.com/logo.png) + +### Linking compatibility With LSI, you don't need to worry any more about manually mangling your Steam installation just to make the open source drivers work, or manually creating links and installing unsupported libraries. LSI is designed to take care of all of this for you. +Many library names are redirected through the main "intercept" module, which ensures +games will (where appropriate) use the updated system libraries. Additionally the +module can override how games and the Steam client are allowed to make use of +vendored libraries. This will help with many launch failures involving outdated +libraries, or indeed the infamous `libstdc++.so.6` vendoring which breaks open +source graphics drivers on systems compiled with the new GCC C++ ABI. + + +### Apply path based hotfixes to games + +The redirect module contains some profiles to allow us to dynamically fix some +issues that would otherwise require new builds of the games to see those issues +resolved. + + - Project Highrise: Ensure we don't `mmap` a directory as a file (fixes invalid prefs path) + - ARK Survival Evolved: Use the correct shader asset from TheCenter DLC to fix broken water surfaces. + +### Unity3D Black Screen Of Nope + +Older builds of Unity3D had (long since fixed) issues with launching to a black +screen when defaulting to full screen mode. This is commonly addressed by launching the +games with `-screen-fullscreen 0`, and is due to an invalid internal condition clamping +the renderer size to 0x0 after setting the fullscreen (borderless) window size. + +Note - updating these games to newer versions of Unity will fix this bug on Linux, however +LSI currently ships a workaround. This workaround will abstract access to the configuration +file in `$XDG_CONFIG_HOME/.config/unity3d/*/prefs` through the Linux `/dev/shm` system, +and will provide initial game configuration whilst also masking the harmful fullscreen +setting. + +Net result - all Unity3D games using this pref path (the older generation) will start +in windowed mode always. They can be fullscreened from inside the game, and this will +help with making sure games **actually launch**. + +### Notes + Note that LSI will not modify your Steam installation, and instead makes use of two modules, `liblsi-redirect.so` and `liblsi-intercept.so`, to dynamically apply all of the workarounds at runtime, which in turn is set up by the main LSI `shim` binary. @@ -29,14 +71,21 @@ workarounds at runtime, which in turn is set up by the main LSI `shim` binary. For a more in depth view of what LSI is, and how to integrate it into your distribution, please check the [technical README document](https://github.com/solus-project/linux-steam-integration/blob/master/TECHNICAL.md). -Do note that we intend to remove the need for distributions to integrate LSI in the near future, by providing +Be advised that we intend to remove the need for distributions to integrate LSI in the near future, by providing the LSI system as a [snap](https://snapcraft.io/) package for all supported distributions. -This project, and by extension Solus, is not officially endorsed by, or affiliated with, Steam, or its parent company, Valve*. +## Getting LSI -Linux Steam Integration is a [Solus project](https://solus-project.com/) +LSI may not yet be available for your distribution, however some community maintained repositories do exist. -![logo](https://build.solus-project.com/logo.png) + - [Arch Linux](https://aur.archlinux.org/packages/linux-steam-integration/) + - [Fedora](https://copr.fedorainfracloud.org/coprs/alunux/linux-steam-integration/) + - Solus uses LSI by default, just install the `steam` package. + +To install the experimental snaps (`snapd` >= 2.29.4): + + sudo snap install --edge solus-runtime-gaming + sudo snap install --devmode --edge solus-runtime-gaming ## Snap Support @@ -48,16 +97,9 @@ Items left to implement: - [x] Make `shim` support `$SNAP` style environmental variables for local Steam - [x] Add support to LSI + `snapd` for NVIDIA+Vulkan - [ ] Verify "normal" games work again - - [ ] Publish snaps + - [x] Publish snaps (edge) -## Getting LSI -LSI may not yet be available for your distribution, however some community maintained repositories do exist. - - - [Arch Linux](https://aur.archlinux.org/packages/linux-steam-integration/) - - [Fedora](https://copr.fedorainfracloud.org/coprs/alunux/linux-steam-integration/) - - Solus uses LSI by default, just install the `steam` package. - ## License Copyright © 2016-2017 Ikey Doherty diff --git a/TECHNICAL.md b/TECHNICAL.md index 6f7ebcb..841adb4 100644 --- a/TECHNICAL.md +++ b/TECHNICAL.md @@ -226,6 +226,14 @@ Currently this INI file supports three options. The root section in this INI fil The default value of this variable is `true`. +`use-unity-hack = $boolean` + + If set to a true boolean value (yes/true/on), the `liblsi-redirect.so` + library will apply a preference workaround to Unity3D based games and + abstract access to their configuration files. This is used to force + Unity3D games to always start in windowed mode, and to ensure that + they're unable to make use of the stored fullscreen setting. + ## Common issues