littlektframework / littlekt

A multiplatform WebGPU 2D game framework written in Kotlin. Build your own game engine on top.
https://littlekt.com
Apache License 2.0
321 stars 12 forks source link

Does not work on Apple M1 arm ? #141

Closed herve-ch closed 2 years ago

herve-ch commented 2 years ago

Hello does this work on M1 apple arm?

I have this error

[LWJGL] Platform/architecture mismatch detected for module: org.lwjgl JVM platform: macOS aarch64 17.0.3.1 Java HotSpot(TM) 64-Bit Server VM v17.0.3.1+2-LTS-6 by Oracle Corporation Platforms available on classpath: linux/x64 macos/x64 windows/x64 [LWJGL] Failed to load a library. Possible solutions: a) Add the directory that contains the shared library to -Djava.library.path or -Dorg.lwjgl.librarypath. b) Add the JAR that contains the shared library to the classpath.

LeHaine commented 2 years ago

Looks like MacOS Arm natives need to be added to the dependencies for LWJGL.

LeHaine commented 2 years ago

@herve-ch arm64 dependencies have been added in the latest 0.4.0-SNAPSHOT. Feel free to try it out again. If it fails then we can reopen this issue.

herve-ch commented 2 years ago

@LeHaine Hello I tried snapshot 0.4.0.6adde7e-SNAPSHOT I have an error: Exception in thread "main" java.lang.ExceptionInInitializerError at org.lwjgl.glfw.GLFW.glfwInit(GLFW.java:1046) at com.lehaine.littlekt.LwjglContext$start$1.invokeSuspend(LwjglContext.kt:75) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284) at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85) at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59) at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38) at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source) at com.lehaine.littlekt.LwjglContext.start$core(LwjglContext.kt:69) at com.lehaine.littlekt.LittleKtApp.start(LittleKtApp.kt:14) at com.game.template.LwjglAppKt.main(LwjglApp.kt:12) at com.game.template.LwjglAppKt.main(LwjglApp.kt) Caused by: java.lang.IllegalStateException: GLFW may only be used on the main thread and that thread must be the first thread in the process. Please run the JVM with -XstartOnFirstThread. This check may be disabled with Configuration.GLFW_CHECK_THREAD0. at org.lwjgl.glfw.EventLoop.<clinit>(EventLoop.java:30) ... 14 more

herve-ch commented 2 years ago

@LeHaine Using VM -XstartOnFirstThread option works but I have another error in console: [LWJGL] GLFW_FEATURE_UNAVAILABLE error Description : Cocoa: Regular windows do not have icons on macOS Stacktrace : org.lwjgl.glfw.GLFW.nglfwSetWindowIcon(GLFW.java:2336) org.lwjgl.glfw.GLFW.glfwSetWindowIcon(GLFW.java:2368) com.lehaine.littlekt.LwjglContext$start$1.invokeSuspend(LwjglContext.kt:184) kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284) kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85) kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59) kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38) kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source) com.lehaine.littlekt.LwjglContext.start$core(LwjglContext.kt:69) com.lehaine.littlekt.LittleKtApp.start(LittleKtApp.kt:14) com.game.template.LwjglAppKt.main(LwjglApp.kt:12) com.game.template.LwjglAppKt.main(LwjglApp.kt)

LeHaine commented 2 years ago

@herve-ch Thanks for trying. I am glad it works now. Looks like that MacOS icon features are not available. I'll open a separate issue for that to handle that feature check. (#143). Closed in #144.