Next release of the Engine

The list of changes (between v3.4.0-stable and v3.5.0-alpha1) is ready for use:

If you notice any errors or omissions, please let me know!

3 Likes

I opened an issue for glScissors (1628), assigned myself to it, and sketched out an implementation. There was discussion. It turns out it’s already possible to implement clipping in a JMonkeyEngine Material without using glScissors. I hadn’t known this before.

Is there a plausible use-case that material-based clipping doesn’t handle? If so, I’m willing to push forward with issue 1628. If not, I’ll close the issue.

Since it now appears likely we will use LWJGL 3.3, it should be possible for JME 3.5 to support macOS arm64 (see issue 1528) and also Windows arm64.

Does anyone here have the ability to test JME on a macOS-on-ARM and/or Windows-on-ARM system?

4 Likes

Well, I can try WoR (Windows ARM on RPI), but I currently have limited time, if this can be extended even after v3.5 I have no problem in testing this in future (you can add an issue of testing with a future milestone or something).

2 Likes

Testers: please begin testing v3.5.0-alpha1 and report any issues

Today I noticed that the Maven artifacts at MavenCentral are declared compatible with Java 8. Past releases were compatible with Java 7. As far as I know, this was an unintended change. I’ll see that it gets reverted in alpha2.

EDIT: see issue 1661 for details.

Thanks for the offer.

I don’t want to include a feature in 3.5 that won’t be tested until after the stable release. However, we don’t yet have a release date for 3.5.0-stable. Can you estimate a calendar date when you expect to have time to test JMonkeyEngine on WoR?

1 Like

May be the next month, I am not sure, since I have limited time this month and WoR needs some sort of patience because its an un-official OS.

I have tried WoR before on my pi4b but it didn’t complete booting since I have disrupted the loading process because of overheat problems (as you know pi don’t have a cooling system and I don’t have time to build one), so the image has to be re-flashed again and reflashing takes 2-4 hrs based on the device performance.

This is WoR, a complete windows arm 64 unofficial desktop version on Pi:
https://www.worproject.ml/

But there’s official windows IoT on RPI :
https://www.microsoft.com/en-us/download/details.aspx?id=53360

I will try to schedule time for testing the official image, its arm win32 as I recall, the WoR is arm64 image.

One of the problems that we may encounter is not able to use the GPU on IoT windows and lack of drivers on WoR, we still need to test to be sure, WoR says they don’t ship VC4 (video core driver for OGLES) graphic drivers with their system and its available on MS github : Status of the ARM64 device drivers (as of 12 Feb. 2019) - discourse.pi64.win
And IoT isn’t giving enough info about the drivers.

2 Likes

From what you wrote, I gather you might be able to perform some WoR testing before the stable release, but it’s very uncertain. Thanks again. I appreciate your realism.

I’ll hold off integrating any Windows-on-ARM changes for now. When you feel ready to schedule WoR testing, let me know.

1 Like

Following the discussion here, I decided to officially cut Java 7 compatibility from the 3.5 release.

New coding-style guidelines are in effect. As a reviewer, I don’t expect 100% compliance at this time. However, if you’ve ever hesitated to contribute changes due to confusion over our project’s coding style, I hope that’s now resolved.

Does anyone have access to an Apple Silicon Mac they could use to test a (hypothetical) fix for issue 1528?

5 Likes

I have a quick question, is it possible to add a small addition to the “CORE” engine so I don’t have to have a special build of the game.

This is a very simple addition. It allows a person to set 3 variables in AppSettings. ‘CenterWindow’, ‘WindowXPosition’ and ‘WindowYPosition’ variables. This way these variable will be saved in the profile when the profile is saved, and be reloaded. I added ‘CenterWindow’ to be added with a ‘true’ value for the default value so it will run just like it did before.

But if you set ‘CenterWindow’ to ‘false’ then inside LwjglWindow.java (lwjgl3 code) it will look at these new values, it will determine to center the window or use the position values to place the window back at the location the user last moved it to.

Of course, these values are only updated if the “program” updates this value. So if you want to save screen position, you can save them on closing to and on restart put the window back into the same location.

If you would like to see the changes. check out.
Github submission under JME 3.4 branch

Thanks,
Kevin

3 Likes

I don’t see any problem with the proposed feature.

It’s too late to add new features to v3.4. However, we still have a few weeks to get this into v3.5. All PRs should be directed at the “master” branch. The “v3.5” branch will diverge from “master” as soon as v3.5 reaches feature freeze.

Thanks. I did a pull request, look at it and let me know if I did something wrong.

2 Likes

After you submit a pull request, please monitor it in case there are questions or review comments.

1 Like

I have a quick question. I see there is talk about possible java 11 requirements.

I just wondering why LWJGL 2 is the default library even though LWJGL 3 has been out of years. Why default to something that is not the standard anymore for years. Then on top of that you can’t easily switch to LWJGL 3 for the noob on JME3. There is no compile option ( I couldn’t locate one) to get LWJGL3 turned on. The project JME - lwjgl3 will compile if above java 8, but all the LWJGL 3 required libraries are not there like they are for LWJGL2 under JME.

Thanks.

Just wondering…

1 Like

There are detailed post on the forum about the reasons. The long story short is that not everything works under LWJGL 3 yet. Most notably MacOS support is a bit challenging. Here is the issue tracker if you want to contribute and make LWJGL 3 default as reality. Issues · jMonkeyEngine/jmonkeyengine · GitHub

1 Like

If I run TestApplication issue 1193

It works on my build under LWJGL3. I have LWJGL 3.2.3 libraries installed, this is what I’ve been using for a long time.
It opens a windowed, waits 5 second and closes.
then opens full screen, waits 4 seconds and closes.
then doe the offscreensurface and waits and closes.

I’m running on Windows.

Processor	Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz   2.59 GHz
Installed RAM	32.0 GB (31.8 GB usable)
System type	64-bit operating system, x64-based processor
Pen and touch	Pen support

The issue talks about Windows not working correctly, but I cant help, as with 3.2.3 LWJGL it worked fine on my system with JME 3.4 stable.

Are you sure you are actually using them when running the test and not LWJGL 2 instead? Look at the console/log to make sure.

1 Like

Okay. So it didn’t run LWJGL3. I copied it to my project that uses LWJGL3 and it hung like the issues.

Here is the solution

    public class LegacyApplication implements Application, SystemListener {
          public void start(JmeContext.Type contextType, boolean waitFor){
            ....
        if (context instanceof Runnable && context.getVersion() > 2)	
        	new Thread(((Runnable)context)).start();

public interface JmeContext {
.....
	public int getVersion();

}

LWJGL2 project

public abstract class LwjglContext implements JmeContext {
.....
    @Override
    public int getVersion()
    {
    	return 2;
    }

LWJGL3 project

public abstract class LwjglWindow extends LwjglContext implements Runnable {
......
    @Override
    public void create(boolean waitFor) {
     .....
//        run();
    }

    @Override
    public int getVersion()
    {
    	return 3;
    }

This gets the engine running. The demo runs fine at this point. The “RUN” in the LWJGLWindow caused a BLOCK on the thread. So I moved the start to the LegacyApplication to check for version and if it is runnable and if > 2 meaning LWJGL 3, then it runs it. Otherwise, the old way is executed for LWJGL2.

Is this what you are looking for???

I could submit an issue to integration.

1 Like
Creating application..
Starting application in LWJGL mode..
Nov 24, 2021 2:47:23 AM com.jme3.system.JmeDesktopSystem initialize
INFO: Running on jMonkeyEngine 3.4.0-SNAPSHOT
 * Branch: v3.4
 * Git Hash: 1d20834
 * Build Date: 2021-11-24
 version 3
Waiting 5 seconds
Nov 24, 2021 2:47:24 AM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: LWJGL 3.2.2 build 10 context running on thread Thread-1
 * Graphics Adapter: GLFW 3.3.0 Win32 WGL EGL OSMesa VisualC DLL
Nov 24, 2021 2:47:24 AM com.jme3.renderer.opengl.GLRenderer loadCapabilitiesCommon
INFO: OpenGL Renderer Information
 * Vendor: NVIDIA Corporation
 * Renderer: GeForce RTX 2070 Super/PCIe/SSE2
 * OpenGL Version: 4.6.0 NVIDIA 462.80
 * GLSL Version: 4.60 NVIDIA
 * Profile: Compatibility
Nov 24, 2021 2:47:25 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio Renderer Information
 * Device: OpenAL Soft
 * Vendor: OpenAL Community
 * Renderer: OpenAL Soft
 * Version: 1.1 ALSOFT 1.19.1
 * Supported channels: 64
 * ALC extensions: ALC_ENUMERATE_ALL_EXT ALC_ENUMERATION_EXT ALC_EXT_CAPTURE ALC_EXT_DEDICATED ALC_EXT_disconnect ALC_EXT_EFX ALC_EXT_thread_local_context ALC_SOFT_device_clock ALC_SOFT_HRTF ALC_SOFT_loopback ALC_SOFT_output_limiter ALC_SOFT_pause_device
 * AL extensions: AL_EXT_ALAW AL_EXT_BFORMAT AL_EXT_DOUBLE AL_EXT_EXPONENT_DISTANCE AL_EXT_FLOAT32 AL_EXT_IMA4 AL_EXT_LINEAR_DISTANCE AL_EXT_MCFORMATS AL_EXT_MULAW AL_EXT_MULAW_BFORMAT AL_EXT_MULAW_MCFORMATS AL_EXT_OFFSET AL_EXT_source_distance_model AL_EXT_SOURCE_RADIUS AL_EXT_STEREO_ANGLES AL_LOKI_quadriphonic AL_SOFT_block_alignment AL_SOFT_deferred_updates AL_SOFT_direct_channels AL_SOFTX_events AL_SOFTX_filter_gain_ex AL_SOFT_gain_clamp_ex AL_SOFT_loop_points AL_SOFTX_map_buffer AL_SOFT_MSADPCM AL_SOFT_source_latency AL_SOFT_source_length AL_SOFT_source_resampler AL_SOFT_source_spatialize
Nov 24, 2021 2:47:25 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio effect extension version: 1.0
Nov 24, 2021 2:47:25 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio max auxiliary sends: 2
Closing application..
Starting in fullscreen mode
 version 3
Nov 24, 2021 2:47:31 AM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: LWJGL 3.2.2 build 10 context running on thread Thread-3
 * Graphics Adapter: GLFW 3.3.0 Win32 WGL EGL OSMesa VisualC DLL
Nov 24, 2021 2:47:31 AM com.jme3.renderer.opengl.GLRenderer loadCapabilitiesCommon
INFO: OpenGL Renderer Information
 * Vendor: NVIDIA Corporation
 * Renderer: GeForce RTX 2070 Super/PCIe/SSE2
 * OpenGL Version: 4.6.0 NVIDIA 462.80
 * GLSL Version: 4.60 NVIDIA
 * Profile: Compatibility
Nov 24, 2021 2:47:31 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio Renderer Information
 * Device: OpenAL Soft
 * Vendor: OpenAL Community
 * Renderer: OpenAL Soft
 * Version: 1.1 ALSOFT 1.19.1
 * Supported channels: 64
 * ALC extensions: ALC_ENUMERATE_ALL_EXT ALC_ENUMERATION_EXT ALC_EXT_CAPTURE ALC_EXT_DEDICATED ALC_EXT_disconnect ALC_EXT_EFX ALC_EXT_thread_local_context ALC_SOFT_device_clock ALC_SOFT_HRTF ALC_SOFT_loopback ALC_SOFT_output_limiter ALC_SOFT_pause_device
 * AL extensions: AL_EXT_ALAW AL_EXT_BFORMAT AL_EXT_DOUBLE AL_EXT_EXPONENT_DISTANCE AL_EXT_FLOAT32 AL_EXT_IMA4 AL_EXT_LINEAR_DISTANCE AL_EXT_MCFORMATS AL_EXT_MULAW AL_EXT_MULAW_BFORMAT AL_EXT_MULAW_MCFORMATS AL_EXT_OFFSET AL_EXT_source_distance_model AL_EXT_SOURCE_RADIUS AL_EXT_STEREO_ANGLES AL_LOKI_quadriphonic AL_SOFT_block_alignment AL_SOFT_deferred_updates AL_SOFT_direct_channels AL_SOFTX_events AL_SOFTX_filter_gain_ex AL_SOFT_gain_clamp_ex AL_SOFT_loop_points AL_SOFTX_map_buffer AL_SOFT_MSADPCM AL_SOFT_source_latency AL_SOFT_source_length AL_SOFT_source_resampler AL_SOFT_source_spatialize
Nov 24, 2021 2:47:31 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio effect extension version: 1.0
Nov 24, 2021 2:47:31 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio max auxiliary sends: 2
Creating offscreen buffer application
 version 3
Nov 24, 2021 2:47:38 AM com.jme3.system.lwjgl.LwjglContext printContextInitInfo
INFO: LWJGL 3.2.2 build 10 context running on thread Thread-4
 * Graphics Adapter: GLFW 3.3.0 Win32 WGL EGL OSMesa VisualC DLL
Nov 24, 2021 2:47:38 AM com.jme3.renderer.opengl.GLRenderer loadCapabilitiesCommon
INFO: OpenGL Renderer Information
 * Vendor: NVIDIA Corporation
 * Renderer: GeForce RTX 2070 Super/PCIe/SSE2
 * OpenGL Version: 4.6.0 NVIDIA 462.80
 * GLSL Version: 4.60 NVIDIA
 * Profile: Compatibility
Nov 24, 2021 2:47:38 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio Renderer Information
 * Device: OpenAL Soft
 * Vendor: OpenAL Community
 * Renderer: OpenAL Soft
 * Version: 1.1 ALSOFT 1.19.1
 * Supported channels: 64
 * ALC extensions: ALC_ENUMERATE_ALL_EXT ALC_ENUMERATION_EXT ALC_EXT_CAPTURE ALC_EXT_DEDICATED ALC_EXT_disconnect ALC_EXT_EFX ALC_EXT_thread_local_context ALC_SOFT_device_clock ALC_SOFT_HRTF ALC_SOFT_loopback ALC_SOFT_output_limiter ALC_SOFT_pause_device
 * AL extensions: AL_EXT_ALAW AL_EXT_BFORMAT AL_EXT_DOUBLE AL_EXT_EXPONENT_DISTANCE AL_EXT_FLOAT32 AL_EXT_IMA4 AL_EXT_LINEAR_DISTANCE AL_EXT_MCFORMATS AL_EXT_MULAW AL_EXT_MULAW_BFORMAT AL_EXT_MULAW_MCFORMATS AL_EXT_OFFSET AL_EXT_source_distance_model AL_EXT_SOURCE_RADIUS AL_EXT_STEREO_ANGLES AL_LOKI_quadriphonic AL_SOFT_block_alignment AL_SOFT_deferred_updates AL_SOFT_direct_channels AL_SOFTX_events AL_SOFTX_filter_gain_ex AL_SOFT_gain_clamp_ex AL_SOFT_loop_points AL_SOFTX_map_buffer AL_SOFT_MSADPCM AL_SOFT_source_latency AL_SOFT_source_length AL_SOFT_source_resampler AL_SOFT_source_spatialize
Nov 24, 2021 2:47:38 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio effect extension version: 1.0
Nov 24, 2021 2:47:38 AM com.jme3.audio.openal.ALAudioRenderer initOpenAL
INFO: Audio max auxiliary sends: 2
Destroying offscreen buffer

Wait a minute… LWJGL2 works for Intel Macs but not for Apple silicon macs, right? And the former are supposed to be phased out within a year or two…

1 Like