I recently had a little problem with the display of the layers in our next game " Les Nains du Nord ". This whole thing forced me to rethink a lot of "what a scene was" and how it should be organized. So, I thought, why not share it with you? =)
The important thing in a good engine is not only that it has a good organization that speaks to us and looks good, but also that it has a good community and a constant evolution.
Personally, I had several choices in JAVA and 2 frameworks spoke to me strongly: LibGdx and PlayN.
I find that LibGdx has a good basic architecture, it also has a good community and on top of that it is cross-platform! Unfortunately, I can't get hooked on the "actors" system it proposes...
Playn is also multiplatform and the base was coded by google it seems! Also, I really love their signaling system based on a ReactJs clone. It gives a lot of space to lambda and other event-driven programming... but, unfortunately, the community is almost non-existent and it doesn't seem to be supported anymore.
I had to make a choice and I couldn't... So I chose both =) I started from a base of LibGdx for the architecture and the organization of the classes and added the fragments of PlayN that I liked. PlayGdx, digivolve yourself in... Bebelomoteur !!!
I modified so many things that you can't really say it's one technology or the other but both frameworks really allowed me to create the engine of my dreams =) But this is another story...