Can I use exodus to run Dying Light on Arch Linux? #29

Closed
devland opened this Issue Mar 2, 2018 · 7 comments

Comments

Projects
None yet
2 participants

devland commented Mar 2, 2018

Hello.

Dying Light is a game that currently only works on Ubuntu and its derivatives. I'm trying to get it to work on Arch Linux. The game logs suggest an issue with glibc.

Can I use exodus in this scenario?

Any tips would be appreciated. :)

This comment has been minimized.

Show comment Hide comment
@sangaline

sangaline Mar 2, 2018

Owner

Unfortunately, the answer to that is currently no. You can check out #18 for a discussion on the possibility of bundling games, but there are two main issues:

  • Games tend to have a lot of programmatically loaded dependencies, both in terms of libraries and media assets. There's currently no support for including these with exodus, but with v2 the situation will greatly improve.
  • The OpenGL libraries are graphics driver dependent. This makes it a no-go for distributing games this way, but it might not be a blocker if you're just doing this on one system.

When version 2 comes out, there's a possibly that you might be able to get this to work if you're willing to run the game using an Ubuntu live-usb to determine and bundle the dynamic dependencies. Does the Ubuntu installation use a deb file or is it through Steam?

Owner

sangaline commented Mar 2, 2018

Unfortunately, the answer to that is currently no. You can check out #18 for a discussion on the possibility of bundling games, but there are two main issues:

  • Games tend to have a lot of programmatically loaded dependencies, both in terms of libraries and media assets. There's currently no support for including these with exodus, but with v2 the situation will greatly improve.
  • The OpenGL libraries are graphics driver dependent. This makes it a no-go for distributing games this way, but it might not be a blocker if you're just doing this on one system.

When version 2 comes out, there's a possibly that you might be able to get this to work if you're willing to run the game using an Ubuntu live-usb to determine and bundle the dynamic dependencies. Does the Ubuntu installation use a deb file or is it through Steam?

This comment has been minimized.

Show comment Hide comment
@devland

devland Mar 2, 2018

Does the Ubuntu installation use a deb file or is it through Steam?

I can start the game from the console as long as Steam is running.

Bundling mesa or other drivers isn't required since this is not a mesa issue. It runs with newer versions of mesa on Ubuntu.

Also, the media assets are already in the game folder. I can move them to Arch easily. Getting the executable to run is the main problem.

How would I go about using exodus to try and bundle the dynamically loaded dependencies?

The exodus documentation seems to mention exporting everything in a tarball but I couldn't get it to bundle the dependencies.

I'll install Linux Mint again and post the tarball I get as output.

Thanks for your time. :)

devland commented Mar 2, 2018

Does the Ubuntu installation use a deb file or is it through Steam?

I can start the game from the console as long as Steam is running.

Bundling mesa or other drivers isn't required since this is not a mesa issue. It runs with newer versions of mesa on Ubuntu.

Also, the media assets are already in the game folder. I can move them to Arch easily. Getting the executable to run is the main problem.

How would I go about using exodus to try and bundle the dynamically loaded dependencies?

The exodus documentation seems to mention exporting everything in a tarball but I couldn't get it to bundle the dependencies.

I'll install Linux Mint again and post the tarball I get as output.

Thanks for your time. :)

This comment has been minimized.

Show comment Hide comment
@sangaline

sangaline Mar 2, 2018

Owner

Bundling mesa or other drivers isn't required since this is not a mesa issue. It runs with newer versions of mesa on Ubuntu.

When you mention that the logs suggest glibc errors, I think there's a good chance that the binary is incompatible with your system glibc. This would mean that you actually do need to transport all of the library dependencies, including libGLX_indirect.so.0 which probably points to libGLX_mesa.so.0.

How would I go about using exodus to try and bundle the dynamically loaded dependencies?

I'm working on adding support for this to v2 now, which I expect to be out within the next week or so. If you want to check back then, I would be happy to help you with the steps for bundling the additional dependencies. I'm very curious to see if you can get it to work :-).

Owner

sangaline commented Mar 2, 2018

Bundling mesa or other drivers isn't required since this is not a mesa issue. It runs with newer versions of mesa on Ubuntu.

When you mention that the logs suggest glibc errors, I think there's a good chance that the binary is incompatible with your system glibc. This would mean that you actually do need to transport all of the library dependencies, including libGLX_indirect.so.0 which probably points to libGLX_mesa.so.0.

How would I go about using exodus to try and bundle the dynamically loaded dependencies?

I'm working on adding support for this to v2 now, which I expect to be out within the next week or so. If you want to check back then, I would be happy to help you with the steps for bundling the additional dependencies. I'm very curious to see if you can get it to work :-).

This comment has been minimized.

Show comment Hide comment
@devland

devland Mar 2, 2018

I'm working on adding support for this to v2 now, which I expect to be out within the next week or so. If you want to check back then, I would be happy to help you with the steps for bundling the additional dependencies. I'm very curious to see if you can get it to work :-).

That's very good to hear. Looking forward to it.

Also, I'm pretty sure that, if it works, it will make a lot of people happy. :D

devland commented Mar 2, 2018

I'm working on adding support for this to v2 now, which I expect to be out within the next week or so. If you want to check back then, I would be happy to help you with the steps for bundling the additional dependencies. I'm very curious to see if you can get it to work :-).

That's very good to hear. Looking forward to it.

Also, I'm pretty sure that, if it works, it will make a lot of people happy. :D

This comment has been minimized.

Show comment Hide comment
@sangaline

sangaline Mar 5, 2018

Owner

@devland The version 2 beta is at a point now where it might be worth giving it a shot.

To install the beta version in Mint, you can run the following.

curl https://294-119092220-gh.circle-artifacts.com/0/exodus-x64.sh | bash
export PATH="~/.exodus/bin:${PATH}"

Then there are two new features that you'll need to include dependencies: the --add flag and the parsing of strace outputs to find programmatically loaded resources. You'll want to run a command along the lines of this.

strace -f /usr/bin/dying-light 2>&1 | exodus --add /usr/share/dying-light /usr/bin/dying-light

The initial strace command will launch the game and the bundle won't get created until you quit it. I recommend actually going to the point of game play before exiting. Exodus will parse the strace output and include any files that are accessed in the bundle. I wouldn't rely on this for the actual game resources, but it should hopefully grab the dlopened libraries. Use the --add flag for the other stuff, it's recursive and can be used multiple times in one command.

This is all very experimental at this stage, but I'm quite curious to hear how it works out for you!

Owner

sangaline commented Mar 5, 2018

@devland The version 2 beta is at a point now where it might be worth giving it a shot.

To install the beta version in Mint, you can run the following.

curl https://294-119092220-gh.circle-artifacts.com/0/exodus-x64.sh | bash
export PATH="~/.exodus/bin:${PATH}"

Then there are two new features that you'll need to include dependencies: the --add flag and the parsing of strace outputs to find programmatically loaded resources. You'll want to run a command along the lines of this.

strace -f /usr/bin/dying-light 2>&1 | exodus --add /usr/share/dying-light /usr/bin/dying-light

The initial strace command will launch the game and the bundle won't get created until you quit it. I recommend actually going to the point of game play before exiting. Exodus will parse the strace output and include any files that are accessed in the bundle. I wouldn't rely on this for the actual game resources, but it should hopefully grab the dlopened libraries. Use the --add flag for the other stuff, it's recursive and can be used multiple times in one command.

This is all very experimental at this stage, but I'm quite curious to hear how it works out for you!

This comment has been minimized.

Show comment Hide comment
@sangaline

sangaline Mar 8, 2018

Owner

@devland Quick update: version 2 has been released, so you can install with pip install exodus_bundler now. The rest of the instructions are the same.

Owner

sangaline commented Mar 8, 2018

@devland Quick update: version 2 has been released, so you can install with pip install exodus_bundler now. The rest of the instructions are the same.

This comment has been minimized.

Show comment Hide comment
@sangaline

sangaline Mar 21, 2018

Owner

@devland I'm going to close this due to inactivity, but will reopen it if you decide you want to give it a try at some point.

Owner

sangaline commented Mar 21, 2018

@devland I'm going to close this due to inactivity, but will reopen it if you decide you want to give it a try at some point.

@sangaline sangaline closed this Mar 21, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment