I spent the summer building the back end of a game from scratch in java. I really need to start building the GUI but I have very limited experience doing so. Having never used JMonkey before, how much work will it be adding my existing project to JMonkey so that I can use it to build a GUI?
Without knowing more about how your game is structured, it’s difficult to answer your question. Does it make use of any standard graphics libraries?
Currently no. As I said it is pure backend atm. The game flow is already in
place which is what I’m worried about. It follows a fairly linear pattern
top to bottom. No concurrency besides additional threads for client server
communication. I have all the necessary objects defined and established
along with their behaviors. What I really need is an easy means to
graphically represent what is going on in game rather than just printing
text explaining it
If what you have is purely logic and youre just looking for a renderer, jme should work for you.
What kind of game is it? Is it even 3d?
If it’s a 3D game then it sounds like JME would be a fine choice.
If it’s just a 2D game then there are likely far easier options. Maybe even Swing or JavaFX would be ok.
I used JavaFX for the initial version of my game and came up with a design like this: https://puu.sh/AiQ8l/1275ee9b63.png
Doing something like this with JavaFX would probably be quite a bit less work than learning the JME framework, but as they said before it’s hard to know. I would say that learning JME will allow you to continue on your current project and also be more beneficial for you in the future than JavaFX, but if you concern is a quick implementation then JavaFX is something to look at.
I’d say this very much depends on the project. JavaFX is awesome and there’s a guy who maintains a JFX game library here which you may be interested in: GitHub - AlmasB/FXGL: Java / JavaFX / Kotlin Game Library (Engine)
I can’t give much insight on it since I generally build my own architecture when I use JFX, but it’s almost certainly a faster starting point. It does (IMO) seem a little more oriented towards “2D shooter / console” type of game.
JavaFX will help you lots if you have a GUI intensive case, especially if it’s intensive enough that you need/want to visually lay out your UI with a tool (search for “Gluon Scene Builder”). JavaFX does have 3D capabilities accessible, but I would recommend JME if you’re doing significant 3D stuff. So I guess the reason you may choose JFX for a 3D game over JME would be when you have a UI intensive case, and only need basic 3D graphics (i.e. game is more about content than graphics).
JME has the advantage in 3D capabilities and community/help. Lemur is a great little UI lib for JME, but if you need more complex UI components, you may need to build those yourself. I would say JFX has an advantage on learning curve (if 2D), documentation (on the UI side especially), and complex UI support. There is Java Swing out there still, but one of the big perks JFX has over Swing is css based custom styling (important for game UI) so I’d probably keep Swing off the evaluation list.