views:

89

answers:

3

Should I use a game engine or a graphics library? I was just thinking of making a simple game to start out with, but what about when you get to higher-end stuff and high poly models? Which would be faster?

Also, should I choose Xith3D or JMonkeyEngine? Or if I were to go with a graphics library should I go with JOGL, LWJGL, or the new JOgre?

Java is fine for making games, if I wanted to switch to c++ I wouldn't be asking.

+1  A: 

I wouldn't recommend Java for game development, as it tends to be slow and games require performance. To make a simple game, a graphics library would be enough. For a complex game, although, a game engine would offer you more interesting stuff.

A simple set of graphics libraries with some cool utilities to make simple games would be openGL + GLUT. I've already used it for small games...

lgomide
+1 for recommending not to use Java
Lo'oris
+3  A: 

There is in fact 2 questions to ask yourself to find the answer :

  1. Do you want to make the game in no time or learn about more technical side of game programming?
  2. Does the game is a variant of a well known/established genre or is it structurally different?

If you answered:

  • 1==game && 2==genre : Use a game engine. Choose one that have been used for the target genre. Just make the game with this tool as fast as you can.
  • 1==game && 2==different : As the structure of your game will be different, it will be hard to make something that match your game structure with a full engine. Maybe using a framework (made of several separated libs) will be of better use. Anyway, it will not be really fast to make but at least with a framework you'll not have to build the lower layer code and check that all libs are compatible.
  • 1==technical && 2==genre : Well in this case you could study an engine or make your own. If it's your first game or your first 3D app, I recommand using DirectX or OpenGL directly one time, then pass to an engine later, like Ogre. Anyway, try to right yourself what techniques you want to learn about.
  • 1==technical && 2==different : Take time to choose several libraries for each side of your game, then work on getting things together to make it work in your specific case. It might be the most interesting case but it's also the most time consuming. Anyway, use libs. Use ogre for graphics, etc.

Now, there is still a question to ask yourself when choosing your lib/engine, whatever the previous choice : does your game need to be cross-platform?

Check that your tool/engine match your answer to this question.

By the way, if you want to get in the industry OR want to get technical, you'll have to talk to hardware (at least if you want to learn about graphic programming) so use C++ (or C) instead of java. It will go in your way.

Klaim
Adam Smith
Yes but if you match the conditions I said (want to go in the industry or want to understand how it works) then you'll have to digg down and that require to get in the native language of almost every libs used in game code, that is C++ (and C).
Klaim
I edited my comment, have another look at it, I pressed enter at the wrong time.
Adam Smith
Well I would be you, I would do as I'm doing at the moment : Use C++ (as it's the only way to have deep control over your sources and lib), Ogre, FMod(or Caudio), RakNet (for network), OIS (for inputs). Now it's my specific case so if your game really have a different structure than others, you'll have to setup the right libs yourself according to the needs. Ogre is generalist. RakNet and Fmod are done for games. OOIS is cross platform and even manage wiimote if necessary. So I chose very abstract libraries to allow me to do exactly what I need.
Klaim
+1  A: 

Ok, so you want to learn game programming. You have a lot of options, but I don't see much of a plan in your question or comments, nor am I quite sure what your exact goals are. The only sure thing I get is that you want to work with 3D graphics.

The thing is, you're asking about performance without actually running into performance issues. Your question feels premature.

For the sake of making a choice, start building with JMonkeyEngine. It seems to be a fairly advanced 3D engine in Java. Starting with an engine allows you to concentrate more on the design of the game instead of having to fine tune everything yourself.

Take the time to make the game complete, with all the finishing touches, such as menus, player options, whatever completes the game. Finished projects teach you a lot about game design, and look good in your portfolio.

Repeat this process with slightly higher-complexity projects, over and over again. Depending on how quickly you advance the complexity and how well the engine is built, you will eventually reach a project where the engine doesn't keep up with your expectations. From here, you can take advantage of the Open Source aspect of the engine and figure out exactly HOW the engine is handling your design.

From this point your learning path switches gears. Instead of learning about generic game programming (which, by this point, you should have a fair bit of expertise in), you start to dig deeper into hardware interaction and low-level optimization.

This all assumes that you are only just beginning to get into game design and game programming, but have a fair amount of experience in your chosen language.

Marc Reside