luiscastilho / dungeoneering

Free and slimmed down virtual tabletop (VTT) that can be used as a combat grid and as a dungeon exploration tool, made for local, in-person tabletop RPG sessions
https://dungeoneering.app
GNU General Public License v3.0
43 stars 3 forks source link

Arm64 support? (PI os and Ubuntu desktrop 21.10) using pi400 #5

Closed CaptainKiwii closed 1 year ago

CaptainKiwii commented 2 years ago

Hello !

First of all Thanks a lot for your soft that seems to be the best one out there to use for a TV board Table which is what I was looking for 🙂

I'm trying since a few days to install this on my pi 400 running pi os (linux based).

The issue :

We can't figure how to install gresteamer with the required version (seems 1.0 is already on board from the get go).

Also we tried to execute Dungeoneering to see if it would work with it. But without success so far. As for dungeoneering this is not recognized as an executable and we can't find a way to launch it with success so far.

Would you mind to help us a bit please?

I gave you a few dollars on patreon and contacted you there too.

Captain'

CaptainKiwii commented 2 years ago

One thing we found is that the Java integrated inside the folder is AMD64 and not ARM64.

We tried edit the dungeoneering file to remove the use of internal version :

Dungeoneering :

!/bin/sh

APPDIR=$(readlink -f "$0") APPDIR=$(dirname "$APPDIR") java -Xms64m -Xmx2048m -Djna.nosys=true -Djava.library.path="$APPDIR:$APPDIR/lib" -cp "$APPDIR:$APPDIR/lib/slf4j-nop-2.0.0-alpha1.jar:$APPDIR/lib/colorpicker-1.1.jar:$APPDIR/lib/gstreamer-java.jar:$APPDIR/lib/darcula-2018.2.jar:$APPDIR/lib/UiBooster.jar:$APPDIR/lib/slf4j-api-2.0.0-alpha1.jar:$APPDIR/lib/controlP5.jar:$APPDIR/lib/annotations-16.0.1.jar:$APPDIR/lib/jna.jar:$APPDIR/lib/apiguardian-api-1.1.0.jar:$APPDIR/lib/filters-2.0.235.jar:$APPDIR/lib/video.jar:$APPDIR/lib/rotating-fos-0.9.2.jar:$APPDIR/lib/swingx-1.6.1.jar:$APPDIR/lib/swing-worker-1.1.jar:$APPDIR/lib/commons-lang3-3.12.0.jar:$APPDIR/lib/PostFX.jar:$APPDIR/lib/hazelcast-4.2.2.jar:$APPDIR/lib/commons-io-2.11.0.jar:$APPDIR/lib/dungeoneering.jar:$APPDIR/lib/core.jar:$APPDIR/lib/jogl-all.jar:$APPDIR/lib/gluegen-rt.jar:$APPDIR/lib/jogl-all-natives-linux-amd64.jar:$APPDIR/lib/gluegen-rt-natives-linux-amd64.jar" dungeoneering "$@"

Result:

captainkiwii@userxxxx:~/Téléchargements/dungeoneering$ ./dungeoneering
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.jogamp.common.os.NativeLibrary$3 (file:/home/captainkiwii/T%c3%a9l%c3%a9chargements/dungeoneering/lib/gluegen-rt.jar) to method java.lang.ClassLoader.findLibrary(java.lang.String)
WARNING: Please consider reporting this to the maintainers of com.jogamp.common.os.NativeLibrary$3
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
java.lang.UnsatisfiedLinkError: Can't load library: /home/captainkiwii/Téléchargements/dungeoneering/natives/linux-aarch64//libgluegen-rt.so
    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2630)
    at java.base/java.lang.Runtime.load0(Runtime.java:768)
    at java.base/java.lang.System.load(System.java:1837)
    at com.jogamp.common.jvm.JNILibLoaderBase.loadLibraryInternal(JNILibLoaderBase.java:624)
    at com.jogamp.common.jvm.JNILibLoaderBase.access$000(JNILibLoaderBase.java:63)
    at com.jogamp.common.jvm.JNILibLoaderBase$DefaultAction.loadLibrary(JNILibLoaderBase.java:106)
    at com.jogamp.common.jvm.JNILibLoaderBase.loadLibrary(JNILibLoaderBase.java:487)
    at com.jogamp.common.os.DynamicLibraryBundle$GlueJNILibLoader.loadLibrary(DynamicLibraryBundle.java:421)
    at com.jogamp.common.os.Platform$1.run(Platform.java:317)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at com.jogamp.common.os.Platform.<clinit>(Platform.java:287)
    at com.jogamp.nativewindow.NativeWindowFactory$2.run(NativeWindowFactory.java:185)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at com.jogamp.nativewindow.NativeWindowFactory.<clinit>(NativeWindowFactory.java:182)
    at com.jogamp.newt.NewtFactory$1.run(NewtFactory.java:68)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at com.jogamp.newt.NewtFactory.<clinit>(NewtFactory.java:65)
    at processing.opengl.PSurfaceJOGL.initIcons(PSurfaceJOGL.java:498)
    at processing.opengl.PSurfaceJOGL.initFrame(PSurfaceJOGL.java:134)
    at processing.core.PApplet.initSurface(PApplet.java:11035)
    at processing.core.PApplet.runSketch(PApplet.java:10922)
    at processing.core.PApplet.main(PApplet.java:10620)
    at dungeoneering.main(dungeoneering.java:10041)
CaptainKiwii commented 2 years ago

FYI we also tried having it working under Ubuntu desktrop 21.1 (which is installed at the moment) and it does'nt work either.

luiscastilho commented 2 years ago

Somehow I managed to unsubscribe from dungeoneering's notifications. :disappointed: I was only being notified when I was mentioned. Sorry about that. Fixed now.

I will check if I can generate an ARM64 version and find gstreamer 0.10 for Raspberry Pi OS.

And I will check Ubuntu Desktop 21 too. I posted instructions for Ubuntu 18 and 20 only because they are long-term support versions. But maybe there's an easy solution for 21. I will let you know.

CaptainKiwii commented 2 years ago

Hello, Were you able to generate it?

21 was the only one I was able to select I think in the RPI image creator.

luiscastilho commented 2 years ago

I will take a look during the weekend. Work kept me busier than usual during the week.

Fingers crossed that soon we will have a Raspberry Pi icon next to the other OSs in dungeoneering's website. 🤞

CaptainKiwii commented 2 years ago

Don't worry I understand. Yeah that would be awesome :)

luiscastilho commented 2 years ago

@CaptainKiwii, just to let you know that I didn't give up on this. Just no luck yet.

Another possibility, if I can't get Gstreamer 0.10 to run on Debian/Ubuntu on ARM64, is to try a more recent version of processing-video that uses Gstreamer 1.0+. Last time I checked it didn't work so well (video maps kept freezing, didn't loop, etc) and that's why I kept a more stable version, that unfortunately only works with Gstreamer 0.10.

luiscastilho commented 2 years ago

Ok, I have some bad news for now, but it's possible we might have some good news in the near future.

dungeoneering was built with Processing 3, so it depends on Processing for rendering maps, token movement, everything.

Processing 3 doesn't list ARM64 as a supported platform. That means Gstreamer is not our only problem here. Even if I got Processing 3 to run on Raspberry Pi and managed to export a standalone application with it, it's likely that I would run into problems with other dungeoneering dependencies (PostFX, Hazelcast, etc). So at least for now I won't be able to add support to ARM64/Raspberry Pi. Sorry about that.

BUT Processing 4, which is in beta right now and should be released soon, adds support to ARM64. And it looks like, from GitHub commits, that a new version of processing-video will be released along with Processing 4. As I said in another comment, recent versions of processing-video use Gstreamer v1.0+ and no longer v0.10 so maybe this Processing 4 release will solve all our ARM64 problems. We will see.

For now, the only option I can offer you is to run dungeoneering on one of the supported platforms (Windows, Linux on x86-64, or macOS).

CaptainKiwii commented 2 years ago

Hello, ok thanks for takling a look. Let's wait for that processing 4 thing then =/

1-RedBeard-1 commented 1 year ago

Yeah how is that processing 4 going?

luiscastilho commented 1 year ago

Hello! Processing 4 is out and I started adapting dungeoneering code to it. I just migrated to a new computer so I'm in the process of setting it up for development. I will try to get back to dungeoneering soon. I will keep this issue open so I can update you all about it.

luiscastilho commented 1 year ago

@CaptainKiwii @1-RedBeard-1 Bad news but it looks like a Raspberry Pi version of dungeoneering won't be available for now. :(

I tested dungeoneering (adapted to use Processing 4) on a Raspberry Pi 4B 4GB and even though it did run, it was unusable - really slow, like 5 FPS. I opened an issue on Processing 4 asking for advice but I don't think there's an easy solution.

I will close this issue for now since there's nothing else I can do. We can reopen it or open a new one in the future.