3D Game Engine Design

David H. Eberly

Mentioned 7

A major revision of the international bestseller on game programming! Graphics hardware has evolved enormously in the last decade. Hardware can now be directly controlled through techniques such as shader programming, which requires an entirely new thought process of a programmer. 3D Game Engine Design, Second Edition shows step-by-step how to make a shader-based graphics engine and how to tame the new technology. Much new material has been added, including more than twice the coverage of the essential techniques of scene graph management, as well as new methods for managing memory usage in the new generation of game consoles and portable game players. There are expanded discussions of collision detection, collision avoidance, and physics — all challenging subjects for developers. * Revision of the classic work on game engines — the core of any game. * Includes Wild Magic, a commercial quality game engine in source code that illustrates how to build a real-time rendering system from the lowest-level details all the way to a working game. * Fully revised and updated in 4 colors, including major new content on shader programming, physics, and memory management for the next generation game consoles and portables.

More on Amazon.com

Mentioned in questions and answers.

Anyone knows a source, website where I can get some good implementations of 3D intersection algorithms, like

  • intersection of sphere and sphere
  • sphere/ellipsoid
  • sphere/cuboid
  • ellipsoid/ellipsoid
  • ellipsoid/cuboid
  • cuboid/cuboid
  • sphere/ray
  • ellipsoid/ray
  • cuboid/ray
  • triangle/ray
  • quad/ray
  • triangle/triangle
  • quad/quad

Not really a website, but this book Real-Time Collision Detection is well worth it for what you are looking for.

You might want to put Eberly's Game Engine Design on your bookshelf. It has detailed algorithms and discussion for each of the intersections you've listed.

I am looking for resources that describe, in detail, the design decisions involved in game engine architecture. I am especially looking for analysis of the pros and cons of different design decisions at the lowest levels of the engine. The ideal resource, for example, might compare an inheritance-based object hierarchy to a flat, component-based object hierarchy. Or it might compare an in-engine editor with a separate editor tool.

What I am not looking for is a tutorial on how to implement any particular decision -- I would rather have a resource that discusses why to implement a decision.

Are there any blogs or books out there that offer this kind of insight into the game engine design process?

David Eberly's books (Game Engine Design) (Game Engine Architecture) go into great detail in this area. They are packed with info and do not hold your hand, which I think is what you're looking for.

For web references, check out gamedev.net.

I have a rather over-analytic book. I think that the approach followed, is of writer's personal point of view and not of common knowledge, but I find it rather a good one to embrace the initiatives for your own try-out.

3D Game Engine Design, 2nd Ed.: A Practical Approach to Real-Time Computer Graphics

I would also highly recommend reading the various Intel articles posted on Gamasutra, or going directly to the source (Intel Visual Computing).

This, in my opinion, is one of the best, and most relevant to contemporary engines, articles: Optimizing Game Architectures with Intel Thread Building Blocks.

For a book, Game Engine Architecture by Jason Gregory is wonderful. It's simple, to the point, goes over the predominant issues in contemporary engineering, looks to the future, and uses Unreal and Ogre3D examples everywhere.

Finally, check out Game Architect.

Hope that helps!

I've tried to develop a 2D game with C++ in the past using mere objects, however, in the design process I don't know how and what parts of the engine I should split into smaller objects, what exactly they should do and how to make them interact with each other properly. I'm looking for books, tutorials, papers, anything that explains the game engine design in detail. Thanks.

Eberly's 3D Game Engine Architecture and 3D Game Engine Design are rather heavy on the theory, but cover all of the bases quite well.

I'm not a math guy in the least but I'm interested in learning about rigid body physics (for the purpose of implementing a basic 3d physics engine). In school I only took Maths through Algebra II, but I've done 3d dev for years so I have a fairly decent understanding of vectors, quaternions, matrices, etc. My real problem is reading complex formulas and such, so I'm looking for some decent rigid body dynamics references that will make some sense.

Anyone have any good references?

Physics for Game Programmers I think is better than Physics for Game Developers.

If you want something thick in your bookshelf (like I do), Eberly's 3D Game Engine Design and Erleben's Physics-Based Animation can accompany the above.

I want to write a simple 3d game engine for apply. I have bought some vital Books like :

I am reading them, but I need a Road Map. please give me some advice. thanks.

I would recommend first building at least a small game using an existing engine so that you understand what an engine is from that point of view. Personally I'd recommend Unity, NeoAxis or UDK.

Then focus on building a game without without such an engine (as others have recommended). You might want to start by using some existing sub-systems like Ogre3D a slowly replace these with your own.

Then you'll be in position to start thinking about how to make an engine that's suitable for other games.

Jumping straight in to building even a simple engine is a bit like trying to write a novel without having ever read one. (And actually, novels are pretty simple compared to game engines.)

Of those books, I'd pick Game Engine Architecture and go right through it, rather than flip between different books. Use the others just for additional points of view, at least for now.

I've always had an interest in creating my own games, and now at university I have the opportunity to create some 2D and 3D games using Java and C++ for those who are that way inclined.

I've never really programmed a game before, let alone graphics, so I'm completely new to the area. After a quick trip to the library today I came across very little information on starting 2D game development or even graphics programming in Java or C++. I can program in Java at a reasonable level, but I have never touched C++.

  1. Can someone recommend any good books on starting Graphics Programming in Java or C++?
  2. I have no C++ experience, but I've programmed in C and Java and feel reasonably comfortable in both. Should I take the jump and dive into C++ when important marks are at stake? I hear a lot of good things about C++ as far as Games Programming goes so I'm unsure as to what is the best option for me.
  3. I'm looking to write a 2D game in my own time for a bit of fun before I start getting into the heavy work at university. Can anyone recommend some good resources for those interested in writing their own games using OpenGL and Java/C++.
  4. For those who have followed my other questions here I am terrible at Maths and hold very little knowledge of even the foundations. Is this going to be a serious problem for me? If I were to need Math knowledge what do you recommend I brush up on?

I apologise if my questions seem a bit vague, as I'm a complete newbie when it comes to a lot of these topics. Any help you could provide would be much appreciated.

EDIT: I've already checked out the question titled "game programming", but have found it to not really cater for my specific questions.

I have this book: Beginning C++ Through Game Programming. It might seem trivial at first, but it teaches you a-lot as you go through it. There is no GUI based programming in this book, just the console. Which is good to an extent if you want to see how an entire "story" of a game can come together.

You can also check out Gamedev.net, they have a vast amount of resources and articles to get you started. Good luck. :)

Game programming, especially where graphics are concerned, involves a fair amount of math. You'll at least want to have a basic familiarity with vectors and matrices, specifically with regard to representing rotation, translation, and scaling transformations. To that end, I recommend Geometric Tools for Computer Graphics. A course in linear algebra wouldn't hurt, as well, although that's probably already in your curriculum.

As far as game programming in Java, I recommend taking a look at jMonkeyEngine, an open source game engine with all sorts of fun example code to get you started. It was originally based on the engine presented in the book 3D Game Engine Design (same author as Geometric Tools above), which is another good source of information about game programming in 3D. There's also C++ code and papers on various topics in 3D graphics at that book's official site.

Here are a few books that I used when writing OpenGL code in C++:

Fundamentals of Computer Graphics

OpenGL SuperBible

OpenGL Red Book

OpenGL Primer

You might check out the MIT OpenCourse on computer graphics too. It might help supplement your development.

Best of luck!

I am going through a similar process to you at the moment. I found the following site helpful, it has a great tutorial (space invaders in Java):

http://www.cokeandcode.com/node/6

You can get the source code and mess around with it. You will probably benefit from an IDE, if you don't already have a favorite you could try Netbeans (netbeans.org) which is free and I think it's pretty good.

As for books this one is OK (it's java-centric):

http://www.amazon.com/Killer-Game-Programming-Andrew-Davison/dp/0596007302

I personally decided to use Java for games (for now) because I am very comfortable with Java and far less so with C++. But you will find that most people use C++ for commercial games. Actually I started with pygame (python games framework) which is also nice to get started, especially if you know python.