rfht / fnaify

Run FNA/XNA games on OpenBSD - DEPRECATED! Check out the successor: https://github.com/IndieRunner/IndieRunner
https://www.PlayOnBSD.com
ISC License
36 stars 2 forks source link

OpenBSD 7.0: Rogue Legacy - Steam version #51

Closed ghost closed 2 years ago

ghost commented 3 years ago

When on OpenBSD 7.0, fnaify cannot find libSteamworksNativeWrapper.so even though this library gets pulled as a dependency of fnaify.

How to reproduce:

$ python3 -m venv venv
$ . venv/bin/activate                              # Note the dot and the space
$ pip install steamctl                             # feel free to work around this if you don't trust pip packages
$ DIR=rogue_legacy; mkdir $DIR && cd $DIR
$ steamctl --user <user> depot download -a 241600  # 241600 is rogue legacy app ID
<follow login prompts>
$ fnaify -i

This should leave you with a very simple output:

Performing setup (mode: i) ...

Could not find the following libraries:

                libSteamworksNativeWrapper.so

Did I miss something? I tried to help the script by creating a few helper symlinks from local dir, library subdirs and from /usr/lib/ and /usr/local/lib/, but none had effect on the search.

Here is a more verbose output:

$ fnaify -iv
options:        -iv
OPTIND: 2
options after shift:

Performing setup (mode: i) ...
Checking mono and monodis
gamedir: /home/dormouse/Games/rogue_legacy
Setting up the framework files
        framework file:                 /home/dormouse/Games/rogue_legacy/FNA.dll
        framework version:      20.12.0.0
Identifying config files...
        found config file: FNA.dll.config
        found config file: SteamworksWrapper.dll.config
Done identifying config files.

Identifying libraries required by the game...
---------------------------------------------

Entering library directory /home/dormouse/Games/rogue_legacy/lib64
        found library file: libFAudio.so.0 -> libFAudio.so
        found library file: libFNA3D.so.0 -> libFNA3D.so
        found library file: libSDL2-2.0.so.0 -> libSDL2.so
        found library file: libSteamworksNativeWrapper.so -> libSteamworksNativeWrapper.so
        ignored file: libsteam_api.so
Done with library directory /home/dormouse/Games/rogue_legacy/lib64

Couldn't find library directory /home/dormouse/Games/rogue_legacy/lib

Couldn't find library directory /home/dormouse/Games/rogue_legacy/x64

Couldn't find library directory /home/dormouse/Games/rogue_legacy/x86

Obtaining library names from the following config files
        FNA.dll.config
                Found library string: libSDL2-2.0.so.0 -> libSDL2.so - already in array
                Found library string: libFNA3D.so.0 -> libFNA3D.so - already in array
                Found library string: libFAudio.so.0 -> libFAudio.so - already in array
        SteamworksWrapper.dll.config
                Found library string: libSteamworksNativeWrapper.so -> libSteamworksNativeWrapper.so - already in array
Done with identifying libraries in config files
Done with identification of needed libraries.
Fixing libpng filenames if present... done.

Checking installed libraries...
        found library for: libFAudio.so
        found library for: libFNA3D.so
        found library for: libSDL2.so
        Not found: libSteamworksNativeWrapper.so
done.

Could not find the following libraries:

                libSteamworksNativeWrapper.so
rfht commented 3 years ago

There is a plethora of Steam-related intermediate libraries, unfortunately not well-organized and not all of them opensource or even documented. A quick search on GitHub and Google makes it seem to me like unfortunately this might be a library without any documentation or source code anywhere.

Judging from the name, it might just be a wrapper for libSteamworksNative.so which is part of the steamworks-nosteam port on OpenBSD. Unfortunately this likely won't solve the problem.

You could see if the game might still run without libSteamworksNativeWrapper.so. In order for fnaify to complete setup, you currently need to remove any files of that name in lib and lib64, as well as remove dllmap entries for it in all .config files. The latest version of fnaify (checkout from this repo) has -n flag that makes it easier and you can just run fnaify -in to proceed even without having all the libraries that it finds bundled/referenced.

If that doesn't work, the solution of last resort would be to come up with a stub library that can be plugged in (for example as addition to steamworks-nosteam port).

While not always free of Steam-related native libraries, I still recommend trying to get the games from other platforms like GOG or itch.io that do less (not none) of this stuff.

rfht commented 2 years ago

Any updates if that worked? Will close the issue otherwise...

ghost commented 2 years ago

Sorry, no, nothing I tried seemed to work. Feel free to close it.

Looks like I'll be stuck with Linux for gaming. Thanks for this effort anyway and good luck with this project!