Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I am a java web application developer (mostly server side) since 7 years who recently got interested in game development (i dont know why, maybe i am bored). Today i was looking for frameworks. I read about a few scene graphs and took a look at jMonkeyEngine. It was recommended here and here.

My first goal was to create a simple plane and a sphere which could be moved around using the keaborad. Well, as i mentioned i am a web developer and never programmed anything else so i started with the tutorials of jMonkey. But i wasnt able to get them working. I took a look at the wiki but i noticed that the documentation seems to be very poor, at least compared to what i am used to. I than took a look at a few other scene graph's (also for C++) but they also seem to have an outdated, incomplete poor documentation.

Can someone recommend me a scene graph which is well documented with working samples? Or is there something like the "ultimate guide" to get into this topic? Do i first need to know how to develop my own scene graph to get it working or is it possible to just understand the abstract principles and use it from a higher point of view? Somehow i have the feeling i need to understand the deep insides of a scene graph to use it well (like it's the case for ORM tools in web dev, you cant use them well if you dont understand databases)

i'm sorry if this question is too 'noobish', but i just want to get on my feet and do my first steps. thanks,

share|improve this question
add comment

4 Answers

up vote 3 down vote accepted

A scene graph is a tool. It's not really a suitable tool for when you're just starting out in game development.

I think what you are after is not a scene graph but just a framework of some kind.

Normally I'd recommend XNA because it's really good (powerful, modern, well documented, beginner-friendly). But it is C# and I can see you are a Java man. If you'd prefer to stick with Java, perhaps a good place to start would be the Java ports of the old NeHe OpenGL Tutorials (this is not a framework - but it is a set of tutorials for how to do (at a low level) the kind of things a framework does for you - load and render models, load textures, etc).

In the first few lessons you will learn about transformation matrices, which is basically what scene graphs are all about (in the common case).

To describe a scene graph briefly: Say you have a windmill model - it is defined in its own space. You translate it to where you want it to appear in your world space. That windmill would have a child object for its rotating blades - so you you would apply a rotation transformation to the blades, and it would also inherit its parent's translation to place the blades correctly in the world.

When you're starting out, making small games, you don't need to worry so much about having this big complicated data structure. Usually you'll just have a couple of models that you'll apply transformation matrices to directly.

(Scene graphs are also used for performance-related things like sorting by material, culling, etc - all unnecessary for the beginner and for most small games.)

share|improve this answer
    
I never used XNA, does it have a scenegraph on its own ? –  Calvin1602 Aug 23 '10 at 8:30
    
No. XNA is a bit lower level than that. You would have to write your own. –  Andrew Russell Aug 23 '10 at 11:45
add comment

Scene graph have slightly lost their spot as a must-have. Mostly because a scene-graph centric engine is so tied up in the idea of a scenegraph that it confuses itself. Fact is that various parts of an engine need a different view of the world, whereas a scenegraph centric engine tends to want to impose the same view on all parts of the engine.
The scenegraph as it's traditionally viewed, a hierarchy of parent objects and child objects is nice for transforms, but might be totally inappropriate for rendering, where you are more interested in what materials are used (well okay, location counts too, but there are different ways to deal with that and parent-child doesn't guarantee they're close together, we just tend to see it that way).
In many games you'll find that you have a scene-root with a lot of children, but those children rarely have children of their own. The few that have children you might as well update yourself and skip the scenegraph as it adds unnecessary complexity and performance loss (every transform checking if it's parent is dirty whereas only a few actually have a parent that will get dirty ever (the world root rarely moves).

share|improve this answer
add comment

Why not use a game engine like Unity3d? It is very well known for being easy to use and with great documentation. I tried it out briefly myself and was impressed by how well documented everything was the API and a number of good tutorials. I had problems with my arm and some stage and had to get help from my wife. She has no clue about programming but thought Unity3D was really cool. You can accomplish a lot from just drag and drop. You can use several script languages with the engine. It support JavaScript among other things, which I guess given you background should be attractive. You can get a free version with all the features a beginning game developer would need.

If you don't need 3D, then GameMaker is a great alternative. It is really easy to get into and make games. I used it at University and made a couple of games with it. Great fun. It lets you really concentrate on making the game and you don't have to think so much about technology. You can put together a game entirely with just point and click. But as you progress and understand how it all works you start writing your own scripts.

In my opinion it works a lot better than say GameSalad which has no script language. As soon as you start doing more complicated stuff, it gets really annoying with only point and click I think.

share|improve this answer
add comment

I completely agree with Kaj. For more insights on this subject, see gamearchitect (by the way, if you're interested in game developpement, just read the whole site, especially the old one)

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.