Is jMonkeyEngine Right for Me?

Hello everyone,



I am a student with a basic Java knowledge. In no way would I claim to be an advanced coder. I have toyed around with building Java desktop applications using Netbeans, but recently I wanted to try to make a very basic, networked game. Please note, I am a noob when it comes to Java game development.



I was pondering my options and what would be right for me. As of now, I am considering three possibilities:

  1. jMonkeyEngine
  2. LWJGL (Lightweight Java Game Library)
  3. Build my own game (engine) from scratch.



    What I noticed specifically about jMonkeyEngine is its networking capabilities. I could not find official support on this matter with LWJGL.



    Hypothetically speaking, if I were to make a networked game using jMonkeyEngine, I want my game to be very “simple”, with minimal physics, shaders, lighting, etc. I want the end-product to be enjoyable, simple, and have a decent to a high framerate on the “average” machine (average meaning those who do not have expensive rigs). Would jMonkeyEngine be overkill? It looks to be geared for the next AAA Java game title, and I have no intentions of going ‘all-out’, taking advantage of all its advanced features. This is why LWJGL appeals to me, but then again, I can not find much networking support.



    Alternatively, would I be better off building a very simple engine geared specifically towards my needs, with networking in mind from the start?



    Any help is greatly appreciated.



    NOTE: Not quite sure if this is the right topic to be posting in, so if it isn’t, feel free to move it to the correct one.

Use jMonkeyEngine it will save you lots of time and frustration. All the features are optional, the basic game template is just a blue cube, no lighting, no effects etc
 you add what you want. And adding things is very easy, usually just a few lines of code. You can get high frame rate sure, as long as you design your game efficiently, i.e not too many objects on the scene at once, if you do, try to batch them. Go through the tutorials they will help you a lot.

1 Like

Thank you for your quick reply. What about its networking? Are there any limits (such as x amount of connections/player “logged” in at one time in the end-product? I know some game engines supposedly have a “limit” on this)?

jME recommends using SpiderMonkey for simple networking



https://wiki.jmonkeyengine.org/legacy/doku.php/jme3:advanced:networking



I have not used it yet, but i don’t think there are any “limits” there are jME MMO games out there, not sure if they use SpiderMonkey though

1 Like

Looks great!



Do you believe jMonkeyEngine w/ SpiderMonkey could handle, potentially, thousands of requests per second? I mean, if you have two players engaged in combat, you would constantly be sending calls to the server, then back to both clients, and visa versa.



Also wondering how “agile” jMonkeyEngine w/ SpiderMonkey is? Could I add my own methods to fetch basic networking information such as IPs of those connected? I have many ideas I would prefer to implement, some advanced, down the road (assuming I were to follow through).

Hey, about networking, again, check the tutorials and documentation. :slight_smile:

As far as I know and used SpiderMonkey, you can easily get IPs of connected people. For number of requests I am not sure how it would perform, but I think that for only 2 players, there shouldn’t be as much as 1000 messages per second. Depends on what you are reaching here for anyway. If you are aiming for MMO, you will probably have to know a lot more Java and general networking stuff to even implement something so big. But for smaller scale, SpiderMonkey should be more than enough for you IMO.



Anyway, my answer to what you are choosing from:

If you choose to write your own graphical engine, well see ya in a few years. :slight_smile: If you choose to use LWJGL, you will pretty soon be implementing the same functionality that is already in jME3, so why not already take what is made and works good? :wink:

1 Like

Thanks for your input.



As far as networking goes, I currently do not know how many players I plan to have connected, but definitely more than two. I don’t want to say I am going to go ‘ironman’ and make an MMO by myself, but potentially I want hundreds of players to interact with eachother.



For example, there was a game called DeviusMUD back in the 90s made by two brothers, in one year. I’m pretty sure they wrote everything from scratch (including their engine and libraries, they also did their own artwork). It was a very basic game, low polycount – definitely not the best of graphics. In the beginning it was just a very, very small community that played the game (10-50 players). However, it grew to be very popular, and the game developed, changed it’s name, and now has approximately 200 million accounts with around 100,000 players logged in at any given moment (1,000 to 2,000 per “world” or instance of the game). It’s amazing to think that they had a very basic, playable concept, with networking, playable in around a year of starting their project. Considering they only planned to have a certain number of players playing and it turned into thousands, it’s a good thing they could adapt for this. Could you say the same with jMonkeyEngine w/ SpiderMonkey?

If you have concerns just abstract away from SpiderMonkey and use a set of wrapper classes/methods, so it doesn’t matter if you use SpiderMonkey or another set of networking APIs, you will still use the same functionality in your game. I.e



[java]networkManager.connectClient(Client C); //connectClient function uses w/e API you want under the hood[/java]



But first of all go through all the tutorials, write a few demo games, that have all the functionality you want, then look into networking. Networking is one of the hardest things you can do in a game, and an MMO is by definition the hardest. Just read this:

http://www.gamedev.net/blog/355/entry-2250155-why-you-shouldnt-be-making-an-mmo/



Then watch this:

http://www.youtube.com/watch?v=zCpG3ZryQAk



Start small and work up if you want to go through with it
2 Likes

That cartoon always makes me smile. So “lifelike”. :smiley:

1 Like

yh i still cant decide if that one is my fav or the eclipse one :stuck_out_tongue:

Thanks everyone for everything. I am NOT trying to make an MMO, I just don’t want to be limited before I begin.



Downloading jMonkeyEngine now :slight_smile: and will probably familiarize myself with it via some tutorials. Looking forward to it :slight_smile:



EDIT: Thanks for the video, brought a good laugh :smiley:

1 Like

Good, I suggest doing this:

1 - While its downloading/installing read scene graph for dummies and math for dummies about 3 times each

2 - When the SDK has been installed do Help → Check for updates (and install everything)

3 - Then read scene graph for dummies and math for dummies a few times more, while that installs

4 - Then go through the hello world tutorials and instead of copy and pasting everything write it out yourself and try to make sense of how it works

1 Like
@artxuleta said:
... and will probably familiarize myself with it via some tutorials.


Protip: Do them all (multiple times wouldn't be bad either). You won't regret it.
1 Like

ouch you got ninja’ed hard @madjack

@wezrule said:
ouch you got ninja'ed hard @madjack

Not at all. You talked about Math and scene graph for dummy, I talked about the tuts. :P

In fact, I ninja'd you. Ha! :P
1 Like

touché madjack touché

If you run into limits, it won’t be because of SpiderMonkey.



I think the test suite includes a throughput test. You can see how many messages per second a simple SpiderMonkey networked application can handle. On my system, it seems to stabilize at 37,000 messages per second.

@pspeed said:
it seems to stabilize at 37,000 messages per second.


Around the throughput of the average female per second. ;) Just kidding. :P
2 Likes

it certainly feels like it tho :stuck_out_tongue: