Nifty-GUI and JME2

I recently returned to development on a JME2-based game, in the process of converting from BUI to Nifty-GUI.

After a number of problems, I found the repository for Nifty-GUI had moved to git, so I found it and built some snapshots.

I couldn’t find the JME-renderer however, so I kept the old version of that from the SVN repo.

Unfortunately, some things had changed in Nifty, so there were a few errors that needed fixing (mostly related to ResourceLoader being removed).



After some searching, I found out the JME2 is no longer supported by Nifty, so I was put before a choice:

  • switch to the LWJGL renderer, figuring out how to do that
  • stick with the old JME2 renderer and figure out how to fix the errors
  • switch to JME3
  • switch to another GUI library (again)



    The best option would probably be to switch to JME3, but last I checked it was entirely based on shaders and so wouldn’t work on computers with OpenGL < 2, which we feel is an important thing, as we don’t care that much about fancy graphics, but want to reach out to as many people as possible and also on energy-efficient hardware.



    So, the question this post asks really, would probably be if JME3 still only supports OpenGL >= 2 and if Nifty-GUI with the LWJGL renderer works well with JME2?

You can enable OpenGL1 for jme3 applications too.

Thanks, that’s great news, much more than I hoped for!

Does it work well so far? If so, I’ll definitely switch to JME3 at once!

How do you set the application to only use OpenGL 1 functionality?



Edit: Well, I got the SVN source but stumbled onto some problems.

Does JME3 required Java 1.5? It seems ZipEntry.CENSIG (found in com.jme3.asset.plugins.HttpZipLocator) et al are not present in Java 1.6 and Java 1.7.

How come JME3 is using such an old Java version?

Perhaps the HttpZipLocator isn’t required for most applications (I’m not sure what it’s for)?

The other problem was that the SVN repository contains both bullet and jbullet src-folders, so those classes are defined twice (easy to fix by removing one from the build path in Eclipse).

CENSIG is available in 6 and 7, not sure what you mean

http://docs.oracle.com/javase/6/docs/api/java/util/zip/ZipEntry.html#CENSIG

http://docs.oracle.com/javase/7/docs/api/java/util/zip/ZipEntry.html#CENSIG

Yes, thanks, I found those references as well, so I’m confounded at why my libraries doesn’t seem to contain it.

It’s no fault of JME’s anyway, so I’ll look elsewhere for that.



About setting JME3 up to support OpenGL 1, is there a guide or any hints towards that?

Java 1.5 is the baseline version for jME3. In professional contexts even 1.4 is used in areas still, so having compatibility levels as low as possible is always desired…

Yes, definitely, however Java 1.5 is not in the Ubuntu repositories, so I would rather use 1.6 or 1.7.

Well, I found the problem! Eclipse was checking the files against android.jar instead of the project JRE (for some strange reason). Once I removed android.jar from the build path, Eclipse found the correct files.



Now, about setting JME3 up to support OpenGL 1, is there a guide or any hints towards that?

Yes there are

Great!

Would you mind pointing me to them? :wink:

I know I can use renderer.getCaps() to get the general capabilities of the card, but can I just “shut off” OpenGL 2 features in a simple way or do I have to go through the engine to see what parts use what features and what features are supported by OpenGL 1 or not?

OpenGL1 just supports textured lit models really. I’d have to do the wiki search for “OpenGL1” myself to fish out the link for you, why don’t you just do it :wink:

Thanks, I found it (I needed to search without a space between “opengl” and “1”)!

That’s a great and easy way to do it, so I’ll just get right to it.

For anyone who’s wondering, the information on setting OpenGL 1 compatibility mode is here.



[java]AppSettings settings = new AppSettings(true);

settings.setRenderer(AppSettings.LWJGL_OPENGL1);[/java]