jMonkeyEngine 3 (jME 3) vs Unity 4.3 — Teaching Programming vs Engine Benefits

Please do not contribute here, if possible… I’m trying to get a consensus from the experts on both sides on a “neutral” site:

http://stackoverflow.com/questions/21616995/jmonkeyengine-3-jme-3-vs-unity-4-3-teaching-programming-vs-engine-benefits

I’m guessing if you’re a dev you’re probably already a member of StackOverflow.

Once I have what appears to be the pros/cons from both sides and the answer is closed; I’ll repost a summary here as well.

Thanks in advance!

Here’s a recap of the question posted there:

I’m looking to teach my kids programming, and it looks like I’ve narrowed it to two options:

jMonkeyEngine 3 (jME 3) vs Unity 4.3

I couldn’t find any “current” comparisons, and so I thought I’d ask the gurus out there – Which is better jME3+ or Unity4.3+ for Teaching Programming vs Engine Benefits ?.?.

I’m not a game dev, but a corporate & control systems dev; but I’ve experience in both C# (more recent) and Java (it’s been a few years, but I don’t mind getting current.)

I’m currently leaning towards Unity4.3+ because:

  • from a Programming perspective - I think C# is a little cleaner than Java (after all, it was able to learn from Java) ... though this means little if the Engine Coding & Object model encourage poor programming (this is where I need your collective experience)
  • as far as Engine Benefits - Unity4.3+ will "supposedly" have upcoming support for both XBox One & PS4 (that's what the + is for with the version numbers, for those of you in the know wrt the "upcoming" features for both platforms.)
  • If all that ties out, but one has much better svc integration; pls share that as well.

Thanks in advance!

Hi, welcome to the community. Glad that you interesting in JME3.

I’m also working for a project that target making education programs (youngs and adults) in gaming enviroment.

If you going to let your children learn programming via game developing, it’s a good idea. But both JME3 and Unity are far more complicated to start with ( I assume your children are still young )… There are also few projects suitable for children to learn programming visually.

Greenfoot http://www.java.com/en/java_in_action/alice.jsp
Alice http://www.greenfoot.org/door
Kojo Kojo Home

Those things (languages come with IDEs) have short learning curve and easy to get with, require minimum knowledge and suitable for children and starter. That’s the education side.

For the engine side. [This is my personal opinion]
I’m also left Unity ( did about 4-5 commercial games in unity my self) to go to JME. Before Unity, i also worked in Ogre, UDK, Torque and a lot other engines ( 10 more). I also worked with commercial engine in daytime job in C++, which code dirty as hell but run extremely smooth and cost millions dollar.

The reason is: Those engine tied you up with its limitation and pre-made sollutions. Of course that’s also half of the reason why you choose and engine at first. But when you hit that limitation, for example the license fee or the closed technologies. You will hate them as much as i did.

So that’s why i come to JME in a search of “complete” of game developing and entertaining technology.

If you are an experienced Java and C#, in association with JME and Unity developer, i will name you a few things that can be compared between the two:

  • License : free open source vs free / commercial
  • IDEs : Netbean - an open and extensible platform ( leading quality) vs MonoEdit (the most buggy IDE you can find on earth)
  • The based technolgy:
  • Graphics: OpenGL v2+ vs Modified renderer ( openGL compatiable v3+) - Unity win in this one i suppose :frowning: . It’s sad for a long term java developer like me seeing this. But we can improve the graphics from time to time i hope.
  • Data management: You choose ( H2, HyperTable, Neo4j …from Java world 100+ of those) VS Unity database
  • Data oganization: You choose (ES, OO, COD, data driven …) VS ES and data driven only.
  • Networks: You choose ( Java rocks in this one) VS Unity network ( high performance but never… ever defeat Java)
  • Cloud and distributed: You choose (Storm, Hadoop…) VS “crappy cloud tech and shit” :slight_smile: (sorry my bad)

Note that i still usually using Unity and JME3 at the same time, for my job and for my hobby. I used Unity 4 with fancy mecanim animation, sub stance material … at day, and using JME3 for research and improve it at night. IMO, JME3 is the game engine which worth to learn, and it will rocks and shine in the future!!!

Hope this help!

5 Likes

I posted a comment on stackoverflow. Perhaps you should post this there as well @atomix very informative! :slight_smile:

I’m not going to post this over there because it’s short and not directly answering the question. Maybe atomix can filter it and add it to his but I also echo the fact that for kids just starting out, both of the listed solutions are overkill.

…but to add to the list.

My kids had fun with Scratch. It’s not a directly “game making” thing but it does get kids familiar with basic programming concepts in a friendly way: http://scratch.mit.edu/ If they struggle with how to form logic with something like this then you know they will be completely lost when it comes to scripting/coding in some more advanced engine.

My 10 year old son also took a class in Game Maker once: https://www.yoyogames.com/studio He was able to create some simple games even though he still doesn’t really “get” programming yet.

2 Likes
@atomix said: The reason is: Those engine tied you up with its limitation and pre-made sollutions. Of course that's also half of the reason why you choose and engine at first. But when you hit that limitation, for example the license fee or the closed technologies. You will hate them as much as i did.

This is a very important point… in the long term, however, if your kids are just starting out, Unity’s visual editing tools are far superior, simply due to the fact the the developers are paid (meaning dedicating 100% or their work time) into making their commercial product as easy for the end user as possible.

As stated by @atomix , you eventually (and your children will as well) get to a point of frustration with the lack of control you have to “push the boundaries” past what the engine already offers.

Though, (and this is cost consideration aside), I believe that instant feedback in programming is a major step towards keeping the interest of someone who is 1) young and 2) potentially prone to becoming frustrated if there is a boat load of “must learns” prior to seeing that progress. Being able to do minimal coding and see stellar results might be more beneficial for the short term than “Can I create and manage a dynamic custom mesh without spending more money or pulling all of my hair out”. It certainly will keep their interest better while they are learning.

I appreciate everyone’s feedback, and I’ll wait a few more days (and continue to do some more research); but in the interim, I thought I’d ask a somewhat separate question… It seems to be the common consensus that either Unity or jME are too complicated for children…, but if it’s broken down for them, with a little guidance to stop them from going off a cliff or into a wall, why would it not be consumable.?.

I started programming a C64 at 9 (yep, I’m pretty old now ;-)) with no help, just the C64 manual (but how cool was it that a computer came with a programming manual!) Everything was “in memory” when programming, in that there were not really any IDEs, and you pretty much had to commit the entire program & structure to your brain’s memory to make any progress (though graph paper helped sometimes for multi-dimensional arrays which would contain different “variables” based upon the location in order to save memory. There was no object oriented programming and/or event driven programming; which meant you had to build your own plumbing / state machine (even if you didn’t know that’s what you were doing.) I was poor and the only games I had were the ones I created and/or typed in from a magazine on my C64 and little black & white television.

Compare that to today, with IDEs, auto-complete, “a compiler” :smiley: to check syntax as you go, web tutorials with videos & source code, forums, a Dad who knows how to program?

… I personally think it was way more abstract & conceptually difficult to program without all the modern tools we’re all accustomed today… exploring how to control game flow & react to inputs, learning sprite graphics by drawing individual pixels, and music editing by peeking & poking addresses - compared to - a framework that handles (at least initially) the plumbing (abstractness) and lets the kids focus on the game…

I plan on starting a blog to help other parents & their kids with my family’s experiences, but those are my initial thoughts… Am I missing something obvious in using the frameworks that is going to be extremely hard for a child? (12 years old, btw.)

Separately, if you wish to check out the other side’s thoughts, it’s here:
http://forum.unity3d.com/threads/226937-Unity-4-3-vs-jMonkeyEngine-3-(jME-3)-�-Teaching-Programming-vs-Engine-Benefits

@PracticalCode said: I appreciate everyone's feedback, and I'll wait a few more days (and continue to do some more research); but in the interim, I thought I'd ask a somewhat separate question... It seems to be the common consensus that either Unity or jME are too complicated for children..., but if it's broken down for them, with a little guidance to stop them from going off a cliff or into a wall, why would it not be consumable.?.

I started programming a C64 at 9 (yep, I’m pretty old now ;-)) with no help, just the C64 manual (but how cool was it that a computer came with a programming manual!) Everything was “in memory” when programming, in that there were not really any IDEs, and you pretty much had to commit the entire program & structure to your brain’s memory to make any progress (though graph paper helped sometimes for multi-dimensional arrays which would contain different “variables” based upon the location in order to save memory. There was no object oriented programming and/or event driven programming; which meant you had to build your own plumbing / state machine (even if you didn’t know that’s what you were doing.) I was poor and the only games I had were the ones I created and/or typed in from a magazine on my C64 and little black & white television.

Compare that to today, with IDEs, auto-complete, “a compiler” :smiley: to check syntax as you go, web tutorials with videos & source code, forums, a Dad who knows how to program?

… I personally think it was way more abstract & conceptually difficult to program without all the modern tools we’re all accustomed today… exploring how to control game flow & react to inputs, learning sprite graphics by drawing individual pixels, and music editing by peeking & poking addresses - compared to - a framework that handles (at least initially) the plumbing (abstractness) and lets the kids focus on the game…

I plan on starting a blog to help other parents & their kids with my family’s experiences, but those are my initial thoughts… Am I missing something obvious in using the frameworks that is going to be extremely hard for a child? (12 years old, btw.)

Separately, if you wish to check out the other side’s thoughts, it’s here:
http://forum.unity3d.com/threads/226937-Unity-4-3-vs-jMonkeyEngine-3-(jME-3)-�-Teaching-Programming-vs-Engine-Benefits

I don’t know. I think in many ways we had it much easier back then. Computers were much simpler.

Where you see helpful tools, I see an overwhelming blast of choices. You can’t even type in an IDE without being presented with the 50 different methods you can call in a particular context. Compare this to languages that only had 50 commands total. :slight_smile:

Meanwhile, they are having to learn abstract things like variables and loops. I still have distinct memories of when these light bulbs came on for me at 10 years old. Back then it was just doing things like printing 1 to 100 on the screen or all of the x,y values from 1 to 100 in pairs (nested loops).

Honestly, I think my kids have learned the most “programming concepts” from lego robotics. Scratch uses a similar visual language but I actually think there was something about those old BASIC programs that made the experience more concise in some ways.

I don’t know. I think in many ways we had it much easier back then. Computers were much simpler.
Very much this.

I don’t have kids, but my dayjob revolves around teaching kids advanced algebra through games, which has gotten me in touch with many similar projects that are trying to do the same for programming. There will always be kids who can pick up “vanilla” programming no problem, writing actual code from the get-go and getting excited about their first “Hello World” because they can appreciate the complexity behind it. The majority however will need to start on a far more abstracted level to get started.

For the very youngest ones I would recommend letting them play games like Machineers and Lightbot (I really wish for a wider spectrum of games in this category) to see if they enjoy these types of problem solving.

From there, practically all of the resources I would recommend are conveniently listed here:

A fun new entrant into this space is CodeCombat. The game is played by literally programming the actions of your characters. It’s completely open source and comes with a setup guide, so you can easily set up your own instance of it and even make changes to it if you’d like.

And finally, if this wasn’t obvious already, please don’t try to force a specific programming language on your kids. Whichever tool/platform engages them the most wins.