IndieRunner / IndieRunner

Launch your indie games on more platforms!
ISC License
29 stars 2 forks source link

Cannot run Slay the Spire from Steam #6

Open nalzok opened 4 months ago

nalzok commented 4 months ago

Describe the bug Cannot run Slay the Spire from Steam.

Game Slay the Spire

Versions

To Reproduce

> mkdir SlayTheSpire
> cd SlayTheSpire
> steamctl depot download -a 646570
[INFO] Reusing previous username: X
[INFO] Hint: use 'steamctl --user <username> ...' to change
[INFO] Enter credentials for: X
Password: 
Enter 2FA code: XXXXX
[INFO] Login to Steam successful
[INFO] Checking licenses
[INFO] Checking change list
[INFO] Getting manifests for 'public' branch
[INFO] Locating and counting files...
[INFO] Processing manifest (9072802409324604124) '646571' ...
[INFO] Processing manifest (2910015420030023273) '646572' ...
[INFO] Processing manifest (5221386008033040636) '646573' ...
[INFO] Processing manifest (6089130681980710352) '646574' ...
[INFO] Processing manifest (8124929965194586177) '228983' ...
Data : 100%|| 2.14G/2.14G [02:38<00:00, 13.5MB/s]
Files: 100%|| 864/864 [02:38<00:00,  5.46 file/s]

[INFO] Download complete
> $HOME/Repos/IndieRunner/bin/indierunner -vv
[IndieRunner::new] Mode: Run
[IndieRunner::detect_engine] Engine detection: 1st pass
[IndieRunner::new] Engine: Java
[IndieRunner::Engine::Java::new] Collecting data from config file: config.json
[IndieRunner::Engine::Java::new] Bundled Java version:          1.8.0
[IndieRunner::Engine::Java::new] LWJGL3 preferred Java version: 1.8.0
[IndieRunner::Engine::Java::new] Java version to be used:       1.8.0
[IndieRunner::Engine::Java::new] Java Home:                     /usr/local/jdk-1.8.0
[IndieRunner::new] Game Name: SlayTheSpire
[IndieRunner::setup] Setup
[IndieRunner::Engine::setup] Setup
[IndieRunner::Mode::check_rigg_binary] rigg disabled (no support for java)
[IndieRunner::Engine::Java::setup] Symlink native system libraries.
libgdx.so | 
libgdx64.so | 
libgdx-controllers-desktop.so | 
libgdx-controllers-desktop64.so | 
libgdx-freetype.so | 
libgdx-freetype64.so | 
libsteam_api.so | /usr/local/lib/libsteam_api.so.3.0
libsteamworks4j.so | 
liblwjgl.so | /usr/local/share/lwjgl/liblwjgl64.so
liblwjgl64.so | /usr/local/share/lwjgl/liblwjgl64.so
libopenal.so | /usr/local/lib/libopenal.so.5.0
libopenal64.so | /usr/local/lib/libopenal.so.5.0
libjinput-linux.so | 
libjinput-linux64.so | 
libgdx-box2d64.so | 
com/sun/jna/freebsd-x86-64/libjnidispatch.so | 
com/sun/jna/freebsd-x86/libjnidispatch.so | 
com/sun/jna/linux-aarch64/libjnidispatch.so | 
com/sun/jna/linux-arm/libjnidispatch.so | 
com/sun/jna/linux-armel/libjnidispatch.so | 
com/sun/jna/linux-mips64el/libjnidispatch.so | 
com/sun/jna/linux-ppc/libjnidispatch.so | 
com/sun/jna/linux-ppc64le/libjnidispatch.so | 
com/sun/jna/linux-s390x/libjnidispatch.so | 
com/sun/jna/linux-x86-64/libjnidispatch.so | 
com/sun/jna/linux-x86/libjnidispatch.so | 
com/sun/jna/openbsd-x86-64/libjnidispatch.so | 
com/sun/jna/openbsd-x86/libjnidispatch.so | 
com/sun/jna/sunos-sparc/libjnidispatch.so | 
com/sun/jna/sunos-sparcv9/libjnidispatch.so | 
com/sun/jna/sunos-x86-64/libjnidispatch.so | 
linux/libdiscord-rpc.so | 
libopenal64.so | /usr/local/lib/libopenal.so.5.0
libopenal.so | /usr/local/lib/libopenal.so.5.0
liblwjgl64.so | /usr/local/share/lwjgl/liblwjgl64.so
liblwjgl.so | /usr/local/share/lwjgl/liblwjgl64.so
libsteam_api.so | /usr/local/lib/libsteam_api.so.3.0
[IndieRunner::Engine::Java::LibGDX::setup] Identified bundled LibGDX version: 1.9.9
Will use system LibGDX at: /usr/local/share/libgdx/1.9.9
[IndieRunner::run] Run

[IndieRunner::Mode::run] Lauching SlayTheSpire
[IndieRunner::Mode::run] Executing: env JAVA_HOME=/usr/local/jdk-1.8.0 /usr/local/jdk-1.8.0/bin/java -Xmx1G -Dsun.java2d.dpiaware=true -Djava.library.path=/usr/X11R6/lib:/usr/local/lib:/usr/local/share/lwjgl:. -Dorg.lwjgl.system.allocator=system -Dorg.lwjgl.util.DebugLoader=true -Dorg.lwjgl.util.Debug=true -cp /usr/local/share/libgdx/1.9.9:/usr/local/share/lwjgl/AppleJavaExtensions.jar:/usr/local/share/lwjgl/asm-debug-all.jar:/usr/local/share/lwjgl/jinput.jar:/usr/local/share/lwjgl/lwjgl.jar:/usr/local/share/lwjgl/lwjgl_test.jar:/usr/local/share/lwjgl/lwjgl_util.jar:/usr/local/share/lwjgl/lwjgl_util_applet.jar:/usr/local/share/lwjgl/lzma.jar:/usr/local/share/steamworks4j:. com.megacrit.cardcrawl.desktop.DesktopLauncher

05:11:39.561 INFO desktop.DesktopLauncher> time: 1720415499560
05:11:39.570 INFO desktop.DesktopLauncher> version: 2022-12-18
05:11:39.570 INFO desktop.DesktopLauncher> libgdx:  1.9.5
05:11:39.570 INFO desktop.DesktopLauncher> default_locale: en
05:11:39.570 INFO desktop.DesktopLauncher> default_charset: UTF-8
05:11:39.570 INFO desktop.DesktopLauncher> default_encoding: UTF-8
05:11:39.570 INFO desktop.DesktopLauncher> java_version: 1.8.0_402
05:11:39.570 INFO desktop.DesktopLauncher> os_arch: amd64
05:11:39.570 INFO desktop.DesktopLauncher> os_name: OpenBSD
05:11:39.570 INFO desktop.DesktopLauncher> os_version: 7.5
05:11:39.572 INFO core.SystemStats> MEMORY STATS:
Free Memory: 140Mb
Max Memory: 910Mb
Allocated Memory: 184Mb
Unallocated Memory: 726Mb
Total Free Memory: 867Mb
Used Memory: 43Mb

05:11:39.573 INFO core.SystemStats> DISK STATS:
Total Space: 985Mb
Usable Space: 726Mb
Free Space: 775M

05:11:39.575 INFO core.DisplayConfig> Reading info.displayconfig
05:11:39.578 INFO core.DisplayConfig> DisplayConfig successfully read.
05:11:39.578 INFO desktop.DesktopLauncher> [WINDOWED_MODE]
05:11:39.578 INFO desktop.DesktopLauncher> Settings successfully loaded
05:11:39.578 INFO desktop.DesktopLauncher> Launching application...
[LWJGL] getPathFromClassLoader: searching for: openal
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] getPathFromClassLoader: searching for: lwjgl
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] getPathFromClassLoader: searching for: lwjgl
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] getPathFromClassLoader: searching for: lwjgl
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: sun.misc.Launcher$AppClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.net.URLClassLoader.findLibrary(java.lang.String)
[LWJGL] Failed to locate findLibrary method: java.lang.NoSuchMethodException: java.security.SecureClassLoader.findLibrary(java.lang.String)
[LWJGL] Found 21 OpenAL paths
[LWJGL] Testing '/tmp/libgdxqys/19780df8/libopenal64.so'
[LWJGL] Found OpenAL at '/tmp/libgdxqys/19780df8/libopenal64.so'
[LWJGL] MemoryUtil Accessor: AccessorUnsafe
Could not locate symbol glXEnumerateVideoDevicesNV
Could not locate symbol glXBindVideoCaptureDeviceNV
[LWJGL] Xrandr extension version 1.6
[LWJGL] Using Xrandr for display mode switching
[LWJGL] XF86VidMode extension version 2.2
[LWJGL] Initial mode: 1920 x 1080 x 24 @60Hz
[LWJGL] Pixel format info: r = 8, g = 8, b = 8, a = 8, depth = 24, stencil = 0, sample buffers = 0, samples = 0
05:11:39.906 INFO ststwitch.TwitchConfig> The 'twitchconfig.txt' already exists, not overwriting it.
05:11:39.907 INFO core.CardCrawlGame> DistributorPlatform=steam
05:11:39.907 INFO core.CardCrawlGame> isModded=false
05:11:39.907 INFO core.CardCrawlGame> isBeta=false
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.ExceptionInInitializerError
        at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:133)
Caused by: java.lang.ExceptionInInitializerError
        at com.codedisaster.steamworks.SteamAPI.loadLibraries(SteamAPI.java:20)
        at com.codedisaster.steamworks.SteamAPI.loadLibraries(SteamAPI.java:11)
        at com.megacrit.cardcrawl.integrations.steam.SteamIntegration.<init>(SteamIntegration.java:73)
        at com.megacrit.cardcrawl.integrations.DistributorFactory.getEnabledDistributor(DistributorFactory.java:28)
        at com.megacrit.cardcrawl.core.CardCrawlGame.create(CardCrawlGame.java:224)
        at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:149)
        at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
Caused by: java.lang.RuntimeException: Unknown host architecture: OpenBSD, amd64
        at com.codedisaster.steamworks.SteamSharedLibraryLoader.<clinit>(SteamSharedLibraryLoader.java:43)
        ... 7 more
[LWJGL] XF86VidMode extension version 2.2
[IndieRunner::finish] Finish

Expected behavior The game should run, as recorded in the status tracker.

Verbose Output See above.

dmesg https://pastebin.com/4UgjaV2Q

rfht commented 4 months ago

do you have steamworks4j to run it? That's what the comment in the Status Tracker indicates will be needed for the Steam version. Also the L in the table means that this was done with the download of the Linux version. If you don't specify -os linux64 or similar with steamctl, you will likely get a mishmash of files for all platforms...

I have previous work to make a steamworks4j port, but that got stalled. I suggest generally to use GOG or itch.io versions if possible because there is usually less risk of them plugging in their own distribution libraries (though GOG sometimes has games that depend on libgalaxy and there isn't even any stub or replacement for it at the moment...)

nalzok commented 4 months ago

I don't have steamworks4j installed yet. Do you have any build instruction for OpenBSD? The document says I need to use something called jnigen, but the GitHub wiki link doesn't even work. It also requires me to "run JNICodeGenerator.main() as a plain Java application from inside your favorite IDE." Is it possible to do that on the command line so that I don't need to install an IDE? Regarding steamctl, I tried -os linux64 , but it gives me the same error.

Slay the Spire is indeed available on both Steam and GOG (but not itch.io), but I don't really want to pay twice for the same game. I'll probably get another copy when it's on sale though. It's frustratingly hard to get a truly DRM game...

rfht commented 4 weeks ago

I know it's been a while. The main barrier to resurrecting my steamworks4j draft is that I (accidentally) deleted the bundle of java/maven dependencies that it needs to build offline.

I moved this summer, now am more or less settled in again, so hope to find a time to pick this up again ...