for an upcomming assignment I need to use JMonkeyEngine and hats why I am trying to learn it. I followed the tutorials in the wiki and think its pretty okay, even tho I was told by fellow students it would be a pain to use.
Now I do not know how to continue. I can not find any video series, guided projects or JME even beeing mentioned by anyone. Youtube shows a few Networking tutorials in German (I am from Germany so no problem here) and a few showcases of JME Projects.
How can I continue from here? I welcome every project Idea. I just think without any guidance, it would be hard to build a functioning game and learn the best practices for Game Development.
If you’ve run through the tutorials i think now is time to start your own project. Obviously you’ll get stuck and need to ask for help with specific bits but that’s the way to learn.
Tutorials are good to get the basics but I’ve never thought big guided projects are very useful because you dont know why they are making the choices they are making, or let you try something and find out why it was/wasn’t a good idea
Perhaps you should start with the SDK since it allows you to create and design scenes instead of doing everything by code and you can create a JME game project with ease. Then, after you become more comfortable you can choose to either keep using the SDK or use an IDE of your choice.
For a project Idea, my suggestion would be to recreate a mini-game.They usually have the smallest and simplest environments with easy game mechanics. Think of the minigames you find in some videogames:
A marble ball maze.
A card game where you find pairs.
A lock-picking minigame.
A carnival game.
Any of the Warioware games.
The idea is to analyze the game and start replicating it in JME. It will help you identify what you need to design, implement, and code.
When people think of JME as a pain to use, it usually refers to having some Java and general programming knowledge, but the rewards of learning it is the absolute control on how your game works. Do not give up
The community is here to help and some of the questions you have and you can search if any one here had the same issue.
If you already finished the tutorials on the wiki, I think it would be good if you start creating your own minigame, it is true that there is not so much information about JME3 in other places, but the community can help you on specific topics.
Don’t get complicated when creating your game, keep it simple and easy. I suggest you use the JME SDK to make things easier for you, but you can use your preferred IDE.
Really creating a minigame is very simple, you just need imagination (how you want your game), apply the knowledge acquired and if you master Java. The road will be easy for you, here are some demo games.
NOTE. JME is not a headache, it’s just different from other engines that give you everything by hand (graphical mode). I have nothing against it but JME3 gives you full control over your games, it’s great…
Start a game, simple one, better to just copy some already made game with some more futures maybe better graphics, mechanics, or some special abilities, different atmosphere … .
Making game is a general thing, So it means you can get help or ready codes in different languages on game logic and techniques not only in JME community but also from other engines forums, chat servers, and … . So don’t limit your self to JME, go into other communities and search you will find lots of goods which are applicable in a JME game too.
If you decide to create a game with 3-D physics, I recommend working through the Minie tutorial.
Also, I’m a proponent of clean separation between game mechanics and graphics. A typical mistake JME newcomers make in their first game is to use the scene graph for something other than visualization. (I did this in my first JME project and learned from that mistake.)
If you’re unsure what I mean by separating game mechanics from graphics, then let’s discuss this further.
It’s fine until you encounter a bug in the library (that nobody wants to fix).
Here’s a more detailed answer:
From 2018 to 2021, there were 3 physics libraries for JME: jme3-bullet, jme3-jbullet, and Minie. All of them had similar APIs. All of them were “Bullet” in some sense, being ultimately derived from Erwin Coumans’s Bullet project, which was written in C++.
Jme3-bullet used JNI to interface with Coumans’s Bullet. It was dropped from JME in 2021 because Minie had surpassed it in all respects.
Jme3-jbullet is based on JBullet, a 2008 Java port of Coumans’s Bullet. It is officially part of JME and (in theory) supported. However, it’s had no serious maintenance since 2019.
Minie was forked from jme3-bullet in 2018. It uses JNI to interface with a fork of Coumans’s Bullet. It’s actively maintained and supported, though not officially part of JME.
If you use jme3-bullet or jme3-jbullet in your game and ask for help with a bug, the first advice you’ll get will be to switch to Minie.
Although each version of the game has very different visuals, the “state” of the game is represented in exactly the same way.
The anti-pattern would be to store that state in the scene graph. For instance, a naive developer might store the number of remaining patches in the userdata of the Spatial that visualizes the raft. The code to move the raft forward might be in a custom Control added that that Spatial.
I wrote a blog series about ECS on logdown.comEntity Component System Part 1 « fprintf it has 6 parts. It still should work (copy&paste) but it is a bit outdated as Zay-ES improved and it could be done much more elegant. I didn’t find time and wont for a while to update that. But as I said functional and gives you a good idea, I think. I think the same example is also on the Zay-Es Wiki but not sure.
For me Zay-Es was the eyeopener on how else you could develop games and I heavily use it ever since.
As others have said, I would recommend using the JME wiki, and training using the techdemos available at jme3-examples.
Some parts of the wiki aren’t complete and others are not up-to-date, which is why I recommended using the examples officially provided by JME, and following the forums will help.
This will lead to another part of the Game Engines/Game Development industry known as Game Programming Patterns. These provide a specialized behavior of GoF (Gang of Four) Design Pattern templates with additional benefits to Game Development, I recommend this book if you want to learn more about this, but you already have a task to do, so learning the API (JME itself) should be your highest priority now with best practices in your mindset for a later revisit when you start developing your game.
The book presents the popular Game Programming patterns, it’s not intended for game/level design (that is a different topic), but you can still re-use other patterns not in this book, for example: the DI pattern and the State Machines.
Another thing, @TheLucatus27: if you’re using Ant or Maven to build your projects, you should switch to Gradle ASAP. It’s far more flexible.
The main downside of Gradle is that, to gain the full benefits, you’ll need to learn either Kotlin or Groovy. But even without knowing Kotlin or Groovy, one can figure out how to do things with Gradle by studying examples and experimenting.
And that’s why I personally prefer maven to keep my build scripts as simple as possible.
I’d recommend beginners not to think too much about this, just use whatever they are familiar with and focus on learning game development.
And I feel the same about ECS, instead of starting with the advanced design patterns I think beginners should make small simple games. Learn the concepts of the 3D graphics, the math, materials, etc.
This is the important question, without knowing the answer is not possible to give good advise.