What is it
In Getting started in JMonkeyEngine - #11 by richtea we were discussing the possibility of a JMonkey Initialiser. Similar to the Spring Initialzr to produce a dynamically generated “starter template” as a zip to make Gradle based development less scary for newcomers.
I have created a prototype of this project hosted at jmeinitializer.onemillionworlds.com and the source for it is at GitHub - richardTingle/jmeinitializer (The template with merge fields is at jmeinitializer/src/main/resources/jmetemplate at master · richardTingle/jmeinitializer · GitHub).
What’s it based on
Its a spring boot application with a react front end
What does it do
It asks the user what their game will be called, their package name and what libraries they want to use. They then select to download that starter project and are given a zip. That zip contains a main class with their game name, a build.gradle file with all the libraries they asked for and all the other “stuff” that means it should just open in the IDE of their choice with no “rename this” and “change that” that a static template might have.
It also keeps track of the most recent stable versions of libraries from search.maven.org so it will always offer the most recent stable version of a library.
What’s still to do
Obviously I’ve not includes as many libraries as we might want, I’ve just included enough to prove the concept. Equally the ones I’ve chosen as the “ticked by default” are not necessarily the right ones (And I didn’t really know what some of the libraries were for so my descriptions might be a bit off).
In particular there is no Lemur library option. This is because Lemur is (I think) still on jcentre and so I can’t get its version with a search to search.maven.org. I wanted lemur to be the default gui library so this isn’t ideal. Possible option is to hard code the version for jcentre libraries and accept that it will have to be manually updated from time to time for these. (Although as I think jcentre is swiftly shutting up shop this issue may soon come to a head).
I’ve created a react front end that the prototype itself serves, but possibly it makes sense for this to just be the backend and the front end to be part of https://jmonkeyengine.org?
There’s also a question; if you include log4j2 should you get a starter log4j2.xlm in the project? Should other libraries be “set up” (Could get complicated).
What might still be to do
I’ve used in browser compilation for react, this isn’t “best practice”, mostly I think because its slow, but I only have a little sprinkling of react, so maybe its fine. I await harsh criticism
Disclaimer
For the avoidance of doubt I imagine both the JMonkey Initialiser itself and the repo for it being in JMonkey world, I’ve put it up at jmeinitializer.onemillionworlds.com solely to demo the prototype (and I’ll take it down again at some point)
What next
I guess I’m looking to get some feedback on if this is a useful idea in the first instance. And if it is what’s the next steps to get it in official JMonkey world