Game Engine Architecture

Started by
50 comments, last by Helter Skelter 18 years, 10 months ago
Quote:Original post by cdoty
Has anyone read Introduction to 3D Game Engine Design Using DirectX 9 and C# (http://www.amazon.com/exec/obidos/tg/detail/-/1590590813/qid=1120613357/sr=8-9/ref=sr_8_xs_ap_i2_xgl14/002-0173183-8392036?v=glance&s=books&n=507846)?

This sounds like a decent starting point for understanding 3d engine design.


I have read it, it was pretty good. Gave me an understanding of what a game engine actually was. If you're already using C++ I would say that 3D Game Engine Programming is better, but 3D Game Engine Design Using DirectX 9 and C# are better if you aren't that experienced.
Advertisement
Quote:Original post by Icefox
I'm not sure it's possible to write a good book on "game engine design", because the topic is far far too broad.

How is it too broad? Designing a game engine isn't any different than designing any other type of program. You're still faced with the exact same issues such as resource management, user input, visual presentation, communication between objects, communication between subsystems, triggering events, maintaining collections of data, etc. I don't see anything about games that make them so unique as to require a domain specific approach to design. If the same design methodologies and patterns are applied to just about every other type of software (graphics editors, word processors, databases) why aren't they suitable for game design?

There's plenty of software design resources on the web so there's really no reason to believe they don't exist. I also find it hard to believe that a book (or other resource) specific to game engine design is any be more beneficial than existing information even if the contents are domain specific.

Clarification from Helter Skelter
This post was very badly worded and definitely did not convey the point I was trying to make. I have scratched off the above post (kept for historical purposes) and included the following equally feeble clarification:

1. By saying that designing game engines is no different than designing any other application I meant to convey that we don't need to create any special processes, practices, or patterns to design game engines.

2. The comment about a book on game engine design not being beneficial was worded incorrectly. I mean to say that it would be more beneficial but content doesn't need domain specific practices or patterns.

3. There's some context missing after the 'domain specific' comments. It was intended to express that a good book with practical and valuable information on game design IS possible.

After reading this post a couple of extra times the only reason I can think of why it came off so feeble minded is I was thinking of more than just your post when I wrote it.


The following is a quick and far from complete list of existing design patterns that can be easily and quite successfully applied to game engine design without the need to include domain specific characteristics.

	Abstract factory	Interface	Balking			Iterator	Builder			Observer	Container		Pipeline	Command			Proxy	Delgation		Scheduler	Event Listener		Singleton	Extensibility		State	Flyweight		Strategy	Immutable Object	Visitor



Feel free to browse through the following:

Resources:

Wikipedia: Design Patterns
Intro to design patterns
Another intro to design patterns
Introduction to design technique
Yet another intro to design patterns
UI Design Patterns


Books:

Design Patterns
Although this book is 10 years old and the notation is fairly dated the quality of this book is still high. If you find one used and at a good price I highly recommend it. This book continues to receive good reviews. The contents on the CD do not work very will with current browsers.

UML Distilled - Third Edition
Design Patterns Explained
Applying UML and Design Patterns
Software Architecture in Practice
Pattern-Oriented Software Architecture
Software Architecture: Organizational Principles and Patterns

[Edited by - Helter Skelter on July 7, 2005 4:41:22 PM]
Quote:Original post by cdoty
Has anyone read Introduction to 3D Game Engine Design Using DirectX 9 and C# (http://www.amazon.com/exec/obidos/tg/detail/-/1590590813/qid=1120613357/sr=8-9/ref=sr_8_xs_ap_i2_xgl14/002-0173183-8392036?v=glance&s=books&n=507846)?

This sounds like a decent starting point for understanding 3d engine design.


Don't buy it. I have it on my bookshelf, not because I was learning about 3D engines but C#. Having some background on the subject of DirectX and 3D programming in general allowed me to appreciate how bad the book actually was and how many bad design decisions the author makes.

There are plenty of other, better books out there than for you to waste your money on this.

Quote:Original post by Anonymous Poster
Don't buy it. I have it on my bookshelf, not because I was learning about 3D engines but C#. Having some background on the subject of DirectX and 3D programming in general allowed me to appreciate how bad the book actually was and how many bad design decisions the author makes.

I agree I flipped through this book as a co-worker owns it and it was just horrible. Only buy this book if you want to learn nothing about real game engines and/or engineering/design. It is basically a bunch of DX samples hacked together to magically work.

If you are serious about game engines then go buy Eberly's books, there is a reason why so many people appreciate them.
Quote:Original post by Anonymous Poster
Quote:Original post by cdoty
Has anyone read Introduction to 3D Game Engine Design Using DirectX 9 and C# (http://www.amazon.com/exec/obidos/tg/detail/-/1590590813/qid=1120613357/sr=8-9/ref=sr_8_xs_ap_i2_xgl14/002-0173183-8392036?v=glance&s=books&n=507846)?

This sounds like a decent starting point for understanding 3d engine design.


Don't buy it. I have it on my bookshelf, not because I was learning about 3D engines but C#. Having some background on the subject of DirectX and 3D programming in general allowed me to appreciate how bad the book actually was and how many bad design decisions the author makes.

There are plenty of other, better books out there than for you to waste your money on this.


The reason it makes "bad" design decisions is that it is aimed at beginners, if you were to explain how to create a game engine which have a good design(like David Eberly does) and you still didn't assumed more about the reader and explained everything in as much detail as this book does you'ld probably end up with a >5000 pages book.

BTW no book could explain a game engine with only "good" design decisions since what one might think of a good solution seems like the worst possible solution to another.
Quote:Original post by CTar
The reason it makes "bad" design decisions is that it is aimed at beginners, if you were to explain how to create a game engine which have a good design(like David Eberly does) and you still didn't assumed more about the reader and explained everything in as much detail as this book does you'ld probably end up with a >5000 pages book.

So what? You should NOT be teaching beginners bad design and how to do things improperly. Also game engines are NOT for beginners.. at all! Beginners should be learning the engineering fundamentals and acquiring the mathematical skills they need if they want to build game engines. After having the proper needed skills they can easily read through David's books with good understanding.

It is quite the common myth that beginners should start with a lesser text with horrible design principles that is easier. All it does is teach bad habits and how to do things improperly. Quite honestly if somebody 'can't handle' David Eberly's books than quite frankly they should not be making game engines. That C# book is basically a hacked together cut & paste to make beginners happy that something is on the screen, all the while teaching them how to do things improperly.

Reading a book and learning bad design and hacking garbage implementations together will actually set someone back. They should be learning proper development and attaining the skills needed to attempt such a large project.

Quote:
BTW no book could explain a game engine with only "good" design decisions since what one might think of a good solution seems like the worst possible solution to another.

Wrong. No book could explain a 'perfect' game engine design is how it should be worded, for the reason you stated. But Eberly's books do in fact present a good design.. great design actually following the concepts of proper software architecture and patterns. Sure there are many differences in how you build an engine, but by not using design patterns and hacking code (such as in the C# book) than that is classified as bad design.
Quote:Original post by CTar
The reason it makes "bad" design decisions is that it is aimed at beginners, if you were to explain how to create a game engine which have a good design(like David Eberly does) and you still didn't assumed more about the reader and explained everything in as much detail as this book does you'ld probably end up with a >5000 pages book.


Horsepucky!!! First of all 'creating' a game engine is significantly different than designing one. While Eberly's books might show you how to approach various implementation issues they're crap when it comes to design. Beginner or not I have yet to hear of an acceptable reason for teaching bad design habits. The more bad habits you expose beginners to the harder it becomes for them to overcome them later on.

Quote:Original post by CTar
BTW no book could explain a game engine with only "good" design decisions since what one might think of a good solution seems like the worst possible solution to another.


Absolutely WRONG!!! Software design is both a model and a process. Regardless of which one you choose there are is a set of concepts, guidelines, and principles that are applied. As long as the design does not violate those items it can and usually is considered 'good'. Even though you may not agree with the approach or decision concerning particular issues it does NOT mean it's a bad design.
LMAO DAMNIT!!! You beat me again.

Quote:Original post by Saruman
It is quite the common myth that beginners should start with a lesser text with horrible design principles that is easier. All it does is teach bad habits and how to do things improperly.



Definitely agree with this. If you're teaching someone CPR, to be a lifeguard, or how to drive you don't skimp on the edu-mac-ation. I've always wondered why people think that you have to omit technical concepts and details in order for someone to learn.

Then again...John Edwards got a TV show so it must be some kinda of karma based balancing act for the universe.
Quote:Original post by Helter Skelter
Quote:Original post by Icefox
I'm not sure it's possible to write a good book on "game engine design", because the topic is far far too broad.

How is it too broad? Designing a game engine isn't any different than designing any other type of program. You're still faced with the exact same issues such as resource management, user input, visual presentation, communication between objects, communication between subsystems, triggering events, maintaining collections of data, etc. I don't see anything about games that make them so unique as to require a domain specific approach to design. If the same design methodologies and patterns are applied to just about every other type of software (graphics editors, word processors, databases) why aren't they suitable for game design?


*grins* Exactly. Finish reading my post, please.

Quote:Original post by Icecfox
But you can't write a book on "game engine design" simply because there are far, far too many different types of games for one set of design rules to be broadly applicable, short of the fundamental principles of programming itself.


It's really a question of how specific and general you want to be. If you want to have a book on low-level organizational details and algorithms used in games, you'll probably have to restrict yourself to a single genre. And if you want a book that covers the broader concepts, you end up with a book on software design as a whole, not game engine design specifically.
-----http://alopex.liLet's Program: http://youtube.com/user/icefox192
I have recently started on my own "game engine" and it is actually easier than I thought it would be. I read no articles or tutorials or books on the subject at all, I just started off by making a few games and then taking bits and pieces out of them to create my "game engine".
True God of the TribunalKelchargeMy SiteMy Ugly Forums

This topic is closed to new replies.

Advertisement