3D Game Engine Architecture by David H. Eberly
Published December 2004
Your Amazon.com Price: $69.95
Average rating:
Amazon Sales Rank: 280,320
Buy it now:
Summary Dave Eberly's 3D Game Engine Design was the first professional guide to the essential concepts and algorithms of real-time 3D engines and quickly became a classic of game development. Dave's new book 3D Game Engine Architecture continues the tradition with a comprehensive look at the software engineering and programming of 3D engines. This book is a complete guide to the engineering process, starting with a walk through of the graphics pipeline showing how to construct the core elements of 3D systems, including data structures, the math system, and the object system. Dave explains how to manage data with scene graphs, how to build rendering and camera systems, and how to handle level of detail, terrain, and animation. Advanced rendering effects such as vertex and pixel shaders are also covered, as well as collision detection and physics systems. The book concludes with a discussion of application design, development tools, and coding standards for the source code of the new version of the Wild Magic engine included on the CD-ROM. Wild Magic is a commercial-quality game engine used by many companies and is a unique resource for the game development community.
Features
*CD-ROM with the complete C++ source code for Wild Magic version 3, a commercial quality game engine for Windows, Linux, and OS X.
*A comprehensive, practical guide to all the steps necessary to build professional quality real-time simulations with just minimal mathematics required.
*Emphasizes the application of software engineering principles and describes the architecture of large libraries.
One of the criticisms I had of Dave Eberly’s previous 3D Game Engine Design is that it didn’t really say much about how to design an engine. Rather, it focused mostly on the programming/implementation details, which was disappointing to some. This new book is what many people expected from the older book.
In this book, the author walks through the design and architecture of a 3D game engine, using his Wild Magic engine as an example, but also drawing on his experience developing NDL’s NetImmerse. Throughout, he describes why each design decision was made, and in many cases alternative solutions are discussed as well. This isn’t just a high level discussion, however, as ample source code, figures, equations, and sample applications are included to get you started with implementation.
The topics covered include the core engine systems, scene graphs, renderers, cameras, LOD, animation, terrain, special effects, physics and collision detection. Numerous sample applications and tools are also included. Dave’s writing style is clear and minimally conversational, and he’s kept the math to a minimum, making this a remarkably easy read.
This isn’t a complete treatment of a game engine, since some important topics (e.g. scripting, audio) aren’t included, but the material it does cover is worth it. Whether you’re currently working on a game engine, planning to start one, or just want to have a better understanding of how they work, you’ll be happy with this book.
Ok, after my review previously I'd like to add some more.
Firstly it's a game engine *design* book. Not how to *use* his engine. So with that in mind I should tell you he describes the following in his engine:
1) His maths engine for inverting and processing matrices
2) templates and collections of objects - he's written his own rather than use MS as he knos that for the most part the largest collections in a game would be about a dozen or so enemies and so MS collections would be overkill as they use loads more memory
3) terrain engines - he has two types - I stick by my assertion above that one of them is unusable - 8 fps !
4) AI path finding
As a design lesson it's great, in depth and probably beyond a beginner.
Eberly's latest offering is light-years ahead of the previous volume "3D Game Engine Design" in terms of actually providing insight into how the (Wild Magic 3) engine is constructed and works behind the scenes. Its singular focus on engine construction and the components of the engine is second to none (including, for instance, Zerbst's and Polycarpo/Watt's treatments). Each module is described in excruciating detail without being excruciatingly laden with mathematics (leave that to Eberly's other three volumes). And while I would argue that some of the sections are out of order (application framework deferred until chapter 8?), the overall work is quite cohesive, and it flows well.
While the demos aren't the most efficient in terms of frame rate, they do illustrate the topics they accompany without compromising on actual demonstration or being too overwhelmed with features - they each serve a single purpose, and most serve it well.
My complaints: no mention of event systems and scripting! This is a crucial part of an engine, and failing to even mention it places the object system that Eberly so elegantly constructs on thin ice in terms of extensibility, since it is so central. Also not covered is audio, but I suppose the notions of rendering, events, and resources can be extrapolated to provide a rudimentary 3D sound system without an absurd amount of effort.
There's no question though, that Eberly's designs are solid gold and worth emulating almost every step of the way. His many years of engineering experience (with NDL and others) show through as he expounds the multitude of design choices that went into the painstaking construction of WM3.
A definite buy if you're in the market for a very high-quality text on engine construction - a real glimpse into the mind of a software guru, which is rare enough these days. 4.5/5.
I pre-ordered this book and I never were disapointed that I did. It's very well written and easy to understand. It explain a lot on the architecture of the graphic and physic part of a game engine. Plus, the Wild Magic engine that comes with the book is good, modern and well coded.
Has for the web site, it's not gone but it has moved. It offer frequent update to the source code and some interesting links. The new address is: www.geometrictools.com
This could be given 4 stars or 1.5 stars - I couldn't make make up my mind which and here's why/how I came to the conclusion.
The book describes most things you'll ever find in a game - maths, physics, texturing, movement, camera etc etc
However, the descriptions are all the particular usage of each in his engine - you wouldn't be more the wiser for reading this book. In anycase there are much better books about that will give a clearer description of each anyway.
It all comes across as being a very clever design and you have to say that you couldn't possibly come to the conclusion that this is anything but a semi-genious or demi-god at work !
However, the part that for me was inpenetrable was the description of the engine design itself and how it possibly work - of course each section makes sense in itself - but what exactly is going on behind the scenes when you move through your world is basically indecipherable.
eg in the examples you can load up a castle and walk though it. Fine. What on earth is going on behind the scenes to do this is anyone's guess. How you could use this in your own unique game design is beyond me.
It all gets murky with what seems like every class derives from
every other class and you're left wondering why is this or that a class and not a method - eg to move an object - someone someplace needs to create a controller class to do that. Surely an object class would have a "move left", "rotate" methods anyway. As to how you could load a level, create the enemies, do the AI for the enemies and move about is anyone's guess.
I couldn't work out where to begin for that.
Where do I create the controllers and what do I do with them to do what I want to do with my objects !
As for the terrain example - it runs at 8 fps on my pc - I have my own terrain engine that never runs at anything less than 140 fps on this same pc.
I think I'll carry on using my own small game engine - with bolted on bits from elsewhere as I carry on learning - my engine is fast, easily modifiable and I won't need to speak to anyone to use it !
A clever book, design and author doesn't always make for a useable game engine - hence the low mark.
This is the second book I've read from this publisher (the one about 3d collisions was the other one) and both are pretty difficult to work out how to use in the real world by ordinary people.
Only half way through this book and already it is one of the best pieces I have seen on engine architecture. This is a great companion to Eberly's Game Engine Design book as this is more of a higher level book that lets you get a base understanding before moving into the topics more indepth.