Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question about the future of nifty-gui #474

Open
jfelrod1960 opened this issue Dec 3, 2019 · 9 comments
Open

Question about the future of nifty-gui #474

jfelrod1960 opened this issue Dec 3, 2019 · 9 comments

Comments

@jfelrod1960
Copy link

My wish is to use nifty-gui for the UI in my game. It seems to be inactive right now which I know doesn't really mean that it is not okay to use. But would like to know the future of this library?

Thanks
Jeff

@bgroenks96
Copy link
Member

There is no active development at this time. There was some initial work on a 2.0 version, but that's been inactive for a while now as well. @void256 might be able to comment on his plans for that.

If I were you, I'd browse through the currently open issues and see if anything jumps out to you as a serious enough problem to consider looking elsewhere. I do think Nifty has been largely superseded by other frameworks like LibGDX at this point, but depending on your project, it might still be worth giving Nifty a try (if it seems like a better fit). It is, after all, quite a nifty tool ;)

Cheers, and good luck!

@jfelrod1960
Copy link
Author

jfelrod1960 commented Dec 8, 2019

@bgroenks96 Thank you for your reply. Very much appreciated.

@void256
Copy link
Member

void256 commented Aug 25, 2021

At this point in time, I guess we can declare Nifty GUI pretty much dead 💀 or at least to be almost dead 🧟‍♂️.

There is still a lot of good stuff in here but unfortunately also a lot of horrible things. I always wanted to get back to it. Fix it, rewrite it, reinvent it. But currently the little time I have left besides a demanding day job and a regular life, goes into other, smaller projects.

If one is hardcore enough and can live with Niftys quirks and is willing to spend some time with it then yeah, maybe, it still can be somewhat useful. But currently I view it more as some educational project for people that might be intererested in some open source Java GUI system, learn from it, study it. Maybe it helps someone to not repeat the same mistakes, I did 😉

GUI-systems are complicated. Writing your own is rewarding but is difficult. Maintaining one is even more difficult. Maintaining it as an open source project, in your free time and staying sane at the same time is almost impossible.

I would do a lot of things differently. It's way to large to begin with. Two thirds of the sub projects in the 1.4 branch should be removed. The core module should be condensed to the minimal set of required features. There should only be one renderer in the main branch that works properly and not 7 (!) different ones, most of them outdated too.

It's only because of the work of people like @bgroenks96 (Thanks Brian! 😄) and others that it currently is at least in 🧟‍♂️ mode and not totally 💀 but I doubt that it will really resurrect. And even if it would, some day .. eventually .. maybe .. come back, then it will not be compatible anymore with 1.4 and probably not use xml at all ... maybe be even not be written in Java but only provide a Java API.

@fabrice-ducos
Copy link

Dear @void256,

thank you for this clarification. I think you are a bit hard with your work that I find tremendous. Of course, it is not perfect (which project is), there are certainly lots of outdated stuff, the documentation itself is probably also outdated (but at least it does exist and most of it, from what I could read, is still relevant), but it's the nature of open source projects to be moving targets, and nobody expects original authors to maintain their code forever (especially as a hobby).

It's great that there are active contributors like @bgroenks96 who are still involved in getting the code alive.

I got interested in Nifty because it seemed to be the de facto GUI library for jMonkey (I assume for good reasons), and found it to be rather well integrated with the engine and well designed for my needs, despite of some quirks almost often inevitable in significant projects.

It appears to me that the working branches are mostly stable (a quality I am looking for), and that the effort to keep them working on new systems (e.g. new JDK) is not that high, as I hope my patch for JDK11+ has proved. As long as the code keeps working (even if it doesn't evolve anymore), there is no reason for considering it dead.

Now I am still in the evaluation phase for a project of mine, and if you recommend to me another lightweight GUI system as easy to integrate with jMonkey and actively maintained (and most importantly, well documented), I will consider it.

Best regards

@bgroenks96
Copy link
Member

Just to clarify, I am definitely not an active contributor to this project anymore. I haven't even touched Java in probably 4 or 5 years, let alone any active Nifty development. I occasionally check in to see if there are any pull requests that can be merged, but that's pretty much it. I do not have time to re-learn the codebase or provide any active support for existing issues. If you are looking for something production quality that is being actively maintained, I would recommend looking elsewhere. I don't know anything about jMonkeyEngine these days so unfortunately I have no specific recommendations.

@fabrice-ducos
Copy link

fabrice-ducos commented Aug 26, 2021

Thank you Brian for your reply. I see that you recommended LibGDX over Nifty in a former post. From a formerly active Nifty contributor, I think it means something. I don't know much about LibGDX, but I understand that it compares more to a full engine like jMonkey than to a more focused GUI system like Nifty GUI. From what Void and you replied, I understand LibGDX UI is almost certainly more actively maintained than Nifty GUI (and probably than jMonkey)

I am not tied to the jMonkey engine. I am rather newbie in 3D development. I have invested some time and books in it, as well as in other 3D systems (Unity in C#, and UE4 in C++). Eventually, for what I wanted to do, and for other reasons than the 3D subsystem, I ended up choosing the Java platform and the jMonkey engine (and it has nothing to do with my preference for Java as a language since I am more into C++ and Python usually, Unity and UE4 are more user-friendly and better equipped, and there are fancier languages nowadays). But I am still at a phase where I can switch to another engine (the 3D subsystem is almost not developed). My only constraint is to work in a JVM and to use FOSS tools with liberal licenses.

I read that LibGDX is capable both for 2D and 3D development, but that its primary target was 2D (and probably popular for mobile game development), and for a while, jMonkey looked more advanced for 3D, at least on the desktop. Does someone know how LibGDX 3D compares to jMonkey nowadays? I feel it is more actively maintained, but is it as mature for this goal?

Best regards

@jfelrod1960
Copy link
Author

@bgroenks96 @void256 @fabrice-ducos I guess it is time for me to close this issue, but I wanted to use Nifty because with the SPI's I can use the game engine of my choice which is https://github.com/Renanse/Ardor3D. So I may take a chance with Nifty. Maybe I will regret it later, but if there are people here who have a minute or two, to answer questions, it may work out. :)

@tonihele
Copy link
Contributor

I read that LibGDX is capable both for 2D and 3D development, but that its primary target was 2D (and probably popular for mobile game development), and for a while, jMonkey looked more advanced for 3D, at least on the desktop. Does someone know how LibGDX 3D compares to jMonkey nowadays? I feel it is more actively maintained, but is it as mature for this goal?

You should maybe take this to the appropriate forums (jME at https://hub.jmonkeyengine.org/). jME at least has several active options for UI, such as Lemur and JavaFX based. I for one still use Nifty with jME and there are very little problems if any. https://store.steampowered.com/app/746880/Spoxel/ is a jME & Nifty based game for example :)

And I also have the impression that LibGDX 2D and jME 3D. But both can still handle everything.

@bgroenks96
Copy link
Member

@jfelrod1960 I think it's fine to keep this issue open. The future of Nifty is indeed remains somewhat of an open question.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants