Conversation
There was a problem hiding this comment.
Code Review
This pull request deprecates the jme3-jbullet module by adding @deprecated annotations to its classes, interfaces, and methods. The reviewer suggests including the @deprecated Javadoc tag to provide users with a clear reason for the deprecation and a recommended migration path to the jme3-bullet module.
| */ | ||
| @Deprecated |
There was a problem hiding this comment.
When using the @deprecated annotation, it is best practice to also include the @deprecated Javadoc tag. This allows you to explain the reason for deprecation and suggest a migration path (e.g., switching to the jme3-bullet module). This is recommended by common Java style guides such as the Google Java Style Guide.
* @deprecated use the jme3-bullet module instead.
*/
@DeprecatedReferences
- A class or member that is deprecated is annotated with the @deprecated annotation and its Javadoc must include the @deprecated tag. (link)
- When identifying missing or incorrect Javadoc, provide a code suggestion to fix it directly.
| */ | ||
| @Deprecated |
There was a problem hiding this comment.
For method-level deprecation, providing a reason and an alternative in the Javadoc is particularly helpful for users to understand how to update their code, especially when the method signature involves external library types like javax.vecmath.
* @deprecated use jme3-bullet instead.
*/
@DeprecatedReferences
- A class or member that is deprecated is annotated with the @deprecated annotation and its Javadoc must include the @deprecated tag. (link)
- When identifying missing or incorrect Javadoc, provide a code suggestion to fix it directly.
| */ | ||
| @Deprecated |
There was a problem hiding this comment.
Consistent with other classes in this module, please add the @deprecated Javadoc tag to provide clear instructions to users encountering this deprecation.
* @deprecated use jme3-bullet instead.
*/
@DeprecatedReferences
- A class or member that is deprecated is annotated with the @deprecated annotation and its Javadoc must include the @deprecated tag. (link)
- When identifying missing or incorrect Javadoc, provide a code suggestion to fix it directly.
|
I have no objection. When I proposed this in the past, I was told that a game engine without physics simulation wasn't much of a game engine. If you like, I can search for the exact comment. |
|
we need a replacement |
|
I don't know the history because I've been out for a few years. Would we want to support Minie and/or jme-jolt as the supported physics library for the engine? I'm glad the old native bullet is already gone, and I don't think there's any good reason to use jbullet, so I know I would support this. |
jme3-jolt is still in early development. For now, I'd recommend Minie. |
|
That sounds good to me. |
|
The problem is minie is native, so we are going to have to make sure everything is always tested in every platform. |
|
Let's break this down - for natives, we need to support every platform that we support with base jme.
How people solve this is usually either - build Linux natives on an older os, like Ubuntu 20 or 22 rather than the latest, or use a container or sysroot with modern compilers but slightly older glibc just for this. I think we should match what lwjgl does, because we are dependent on that anyway. LWJGL/lwjgl3@dfd20ac It's possible we might want one standard solution for natives building for Linux for the engine and any third party libs in the community, just to align everyone. Of course, Linux is unique here, this is the only modern operating system where you need to build with an older lib to run on older versions of distros. For every other OS, you can build with the latest tools and produce a binary that can run on older versions of the OS.
|
|
We'd need also the arm64 and ios builds. For web, it is even more complex: if it is plain java it can compile mostly fine with teavm, but JNI natives are unsupported. We'd need to build minie to wasm or with emscripten and then write custom wrappers for that. That is mostly what I did in NGE but using ammo.js as backend. |
|
For many years, Minie has supported Arm64 and Android but not iOS. At various times I've tested ARM64 and Android. I don't have a good way to test iOS. Other than testing, I don't know any impediment to adding iOS natives. The Linux native libraries used by Minie are intentionally built using old versions of GCC. Equal or higher GLIBC versions should be available on most OSes that still receive support. I haven't compared the GLIBC versions with those of LWJGL, which of course has a similar issue. I have no experience with Wasm or Emscripten, so I'd probably need some help there. |
Open for discussion whether this is a good idea.