Book on 3D engines?

Started by
8 comments, last by ldeej 18 years, 10 months ago
What's a good book on the design and implementation of a 3D engine discussing issues like scene graphs, material/shader systems, minimizing state changes and so on? I'm reasonably new to the topic(I've never made a complete 3D engine before, just terrain demos etc) but I want a book that's got reasonably indepth coverage of the important issues. It should present scalable solutions to the problems. I mean they should be suitable for a real game engine, and not just as an introduction in a book. Use of C++ and OpenGL in example code would be preferable.
Advertisement
Browsing through the Books section I found 3D Game Engine Architecture.
I see it is well recommended, so should I just go for that one or have anyone read another book they prefer?
This one is good

"3D game engine programming" by Stefan Zerbst

http://www.gamedev.net/columns/books/bookdetails.asp?productid=421
There is no authorative book on game engine design...

Some books I found useful:

- Object Oriented Game Development by Julian Gold: Good book on design issues, patterns, and engine design. Kind of dogmatic, but information very useful.

- C++ for Game Programmers by Noel Llopis: This is not a learning C++ book, it is about using C++ effectively for different game programming tasks (Game state serialization, plugins for editors, memory management, etc)

- 3D Game Engine Architecture by David Eberly: Book about the design and implementation of the engine David created, very educative.

- 3D Game Engine Design by David Eberly: This is NOT a book about game engine design, is more about the math behind a game engine. This book is not going to help you much on learning on how to create an engine.

- 3D Game Engine Programming by Stefan Zerbst: Good book for understanding how to create a simple engine.

- Terrain Rendering with DX9 by Greg Snook: Greg has an interesting architecture for his graphics engine in the book, with minimal state switches, and fairly extensible. He also has a web site. Note that this is mainly graphics...

You can also take a look at how different people have created their engines and look at some of the engines out there (i.e. Ogre, Crystal Space, Torque, etc, etc), and look at GDC presentations (i.e. GDC 2005 presentations on message passing, presentation on the Halo2 tag system, etc, etc)

Some engines have heavy dependencies for scripting (i.e. Torque) and it makes it very easy to get new content up and running, but it makes it difficult for the programmer to understand what is going on.

Note that everybody builds their game engine in a different way, even the big companies make different choices on how to solve the same problems, the best thing you can do is to read a little, try to build an engine, learn, and start over...

"Tricks of the 3d game programming gurus" by Andre LaMothe

<ducks>
If at first you don't succeed, call it version 1.0You don't stop playing because you get old; you get old when you stop playing.
Quote:Original post by poss74
"Tricks of the 3d game programming gurus" by Andre LaMothe

<ducks>

I was going to suggest the same thing...<ducks behind poss74/>

Beginner in Game Development?  Read here. And read here.

 

Quote:Original post by Alpha_ProgDes
Quote:Original post by poss74
"Tricks of the 3d game programming gurus" by Andre LaMothe

<ducks>

I was going to suggest the same thing...<ducks behind poss74/>

Hehe I have that one, but it's more about the technicalities of a software renderer than the design and architecture of a modern 3D engine.
Quote:Original post by ldeej
There is no authorative book on game engine design...

Some books I found useful:

- Object Oriented Game Development by Julian Gold: Good book on design issues, patterns, and engine design. Kind of dogmatic, but information very useful.

- C++ for Game Programmers by Noel Llopis: This is not a learning C++ book, it is about using C++ effectively for different game programming tasks (Game state serialization, plugins for editors, memory management, etc)

- 3D Game Engine Architecture by David Eberly: Book about the design and implementation of the engine David created, very educative.

- 3D Game Engine Design by David Eberly: This is NOT a book about game engine design, is more about the math behind a game engine. This book is not going to help you much on learning on how to create an engine.

- 3D Game Engine Programming by Stefan Zerbst: Good book for understanding how to create a simple engine.

- Terrain Rendering with DX9 by Greg Snook: Greg has an interesting architecture for his graphics engine in the book, with minimal state switches, and fairly extensible. He also has a web site. Note that this is mainly graphics...

You can also take a look at how different people have created their engines and look at some of the engines out there (i.e. Ogre, Crystal Space, Torque, etc, etc), and look at GDC presentations (i.e. GDC 2005 presentations on message passing, presentation on the Halo2 tag system, etc, etc)

Some engines have heavy dependencies for scripting (i.e. Torque) and it makes it very easy to get new content up and running, but it makes it difficult for the programmer to understand what is going on.

Note that everybody builds their game engine in a different way, even the big companies make different choices on how to solve the same problems, the best thing you can do is to read a little, try to build an engine, learn, and start over...

Ideally I'd like an engine for which games can be created just by means of scripting, but I don't know if I should keep that much in mind now. For now I want to make a 3D engine and not a nessecarily complete game engine.
I've downloaded the Wild Magic source code and it appears to be a pretty comprehensive 3D engine. "3D Game Engine Architecture" looks like a good match for what I need.
If it is just for a 3D Engine you might want to look at Snook's book, he has a nice framework on top of D3DX with minimal state changes and nice support for shaders. The only issue is that everything is D3D, and I believe you prefer OGL.

Something else you might to take a look at is scripting languages if you want to make the system scriptable.

Lua, Python, Angelscript, Ruby, and &#106avascript are some of the options. It seems like there has been a lot of support for Lua and Python. Lua has been used in several recent projects (i.e. WOW), and Python is also very popular.

Both languages also have very nice, easy to use, binding interface. Lua via Luabind, and Python via Boost.Python. Note that both binding libraries are heavy on the template side and debugging might not be straight forward.

Julian Gold has a couple of chapters on the design of the rendering component of a game engine.
BTW - There are some interesting articles on 3D Engine design with focus on shaders on the ShaderX 2 (Tips and tricks) book, it even has the design choices made by some major middleware rendering engine (For which I do not remember the name right now) for supporting shaders. The framework seemed a little bit complex but very flexible...

This topic is closed to new replies.

Advertisement