107
\$\begingroup\$

Are there any good resources for learning about game architectures? I am looking for high level overviews of different architectures. I tend to find information about the various pieces of a game such as entities, physics engines, scripting, etc but not about how to bring all of the pieces together.

As a bonus, how does the type of game influence this? For example, a platformer and an MMO would have differences.

\$\endgroup\$

11 Answers 11

64
\$\begingroup\$

Game Engine Architecture by Jason Gregory is a good book in this topic. You can read it in Google Books before buying it.

\$\endgroup\$
7
  • 4
    \$\begingroup\$ I cannot recommend this book highly enough. If you're looking for hand-holding code samples, this is not the book for you. But if you're looking for a high level tour of all the components that make up a modern game engine and how they fit together, this is absolutely a stellar book. The writing style is very professional (it was written as a textbook) but accessible to anyone with a basic knowledge of Computer Science principles. \$\endgroup\$
    – Bob Somers
    Jul 16, 2010 at 10:31
  • \$\begingroup\$ Looks good. Added to my list of books to buy. \$\endgroup\$ Jul 16, 2010 at 15:42
  • 1
    \$\begingroup\$ This is one of my favorite books. The only problem I had with it (which the author recognized) was the very sparse details on audio. \$\endgroup\$
    – bruxisma
    Jul 17, 2010 at 2:40
  • 1
    \$\begingroup\$ That is a good point, the book doesn't cover everything. The two big things that I noticed that were missing were audio and networking, which are both mentioned only in passing. But the author was honest about the fact that he had to give those the shaft for various reasons. Perhaps in the second edition? :) \$\endgroup\$
    – Bob Somers
    Jul 17, 2010 at 5:46
  • 1
    \$\begingroup\$ Doesn't seem to be readable on Google books any longer. Oh well. \$\endgroup\$ Aug 30, 2011 at 3:52
41
\$\begingroup\$

My book, Game Programming Patterns, is incomplete and on hiatus, but what I have is freely available online. You may get some use out of it.

\$\endgroup\$
6
  • 1
    \$\begingroup\$ I've read this already. Very good content, if not complete. However, this is and example of information about pieces without how to put them together. \$\endgroup\$ Jul 16, 2010 at 15:22
  • 2
    \$\begingroup\$ That's an intentional choice, but that probably doesn't help you much. The problem is that every game is different, especially across genres, so there's no "here's the entire architecture you should build" unless you're really just trying to clone some existing game. I think the best you can do is say "here's a bunch of big pieces, pick the ones you need and hook them up". Game programming books on graphics, AI, etc. should give you the big pieces. The goal of my book is to tell you how to hook them up. \$\endgroup\$
    – munificent
    Jul 16, 2010 at 15:28
  • 1
    \$\begingroup\$ Yeah, I definitely understand that. Most software is like that. I guess the thing I'm looking for is examples of how it has been done so I can make more informed decisions for the games I work on. Great work on the book/site, btw. \$\endgroup\$ Jul 16, 2010 at 15:42
  • 4
    \$\begingroup\$ Please finish this book, it is incredibly good so far. I would definitely be willing to Donate for a complete version :) \$\endgroup\$
    – Kyle C
    Nov 23, 2010 at 20:50
  • 4
    \$\begingroup\$ Your book looks really good, thanks for sharing it. I hope you will finish it! \$\endgroup\$
    – TJL
    May 2, 2011 at 11:27
15
\$\begingroup\$

Enginuity is one of the best free tutorials on game engine design. Behold, this is not exactly what You asked for. It's a tutorial on writing a game engine down to the low level aspects - however - it's a general purpose engine and You might be able to derive a greatest common divisor for every game.

Just read through the introduction and stop when it becomes too detailed for Your taste ;)

\$\endgroup\$
3
  • 1
    \$\begingroup\$ I read through a good chunk of this. There was a lot of information that was useful, even if it wasn't exactly what I asked for. Thanks for the link. \$\endgroup\$ Jul 16, 2010 at 15:21
  • 1
    \$\begingroup\$ noticed that the link is broken and can't find a working link. If anyone finds one, please update, thx. \$\endgroup\$
    – Dave O.
    Feb 24, 2011 at 23:31
  • \$\begingroup\$ I ran the page through search and I found this:gamedev.net/page/resources/_/reference/programming/… \$\endgroup\$
    – DMan
    May 7, 2011 at 23:49
14
\$\begingroup\$

Game Programming: The Express Line to Learning provides a nice, beginner-level introduction to a basic game engine structure the author calls "IDEA/ALTER":

  • I – Import and initialize
  • D – Display configuration
  • E – Entities
  • A – Action (broken into ALTER steps)
    • A – Assign values to key variables
    • L – Loop (setup main Loop)
    • T – Timer to set frame rate
    • E – Event handling
    • R - Refresh the display

The book walks through a complete example game implemented in Python/Pygame.

\$\endgroup\$
7
\$\begingroup\$

I can recommend the book Game Coding Complete, Mr. Mike knows a lot about Game Architecture and does a good job explaining it to the reader. I don't know about the third edition, I only have the second edition, but it was worth a read. He explains everything from Scripting to Sound, even a bit of 3D math. Not in the deepest possible detail, but good enough to dig deeper using other materials. At the end of the book he constructs a complete game utilizing everything you learned with this book.

\$\endgroup\$
4
\$\begingroup\$

My good friend Joel posted a talk he gave at a conference concerning the architecture he ended up using on some PS1 games. Though the talk is specific, he ends up bringing it all back to general advice about what to look for in a good architecture.

Talk is here: http://jdinolt.tumblr.com/post/756062883/hrraaah-ego-trippin-my-first-talk-at-the-igad

\$\endgroup\$
4
\$\begingroup\$

Not game-related, actually, but an invaluable resource for any programmer: The Pragmatic Programmer: From Journeyman to Master. It won't tell you how to write a 3D pipeline--rather, it will take you on a tour of the principles that underly good software architecture.

\$\endgroup\$
2
\$\begingroup\$

Jeff Plummer "A Flexible and Expandable Architecture for Electronic Games":

http://members.cox.net/jplummer/Writings/Writings.htm

Nice overview and comparisson of different Game architectures.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ This site is down, but the page, along with the 380 page thesis that Plummer wrote, is available through archive.org. It's easy to read and very informative for a beginner! \$\endgroup\$
    – Philip
    Aug 16, 2012 at 19:14
1
\$\begingroup\$

Scene graphs ftw. These can be used for game logic as well as rendering, and they let you really optimise your pipeline. If you're going to use them, you want to do it from the start.

\$\endgroup\$
4
  • \$\begingroup\$ If you want to make "one of those" first person shooters, go for scene graph. If you want to make games, use your brain. (I use scene graphs for teaching, but never for production code.) \$\endgroup\$
    – Andreas
    Jul 16, 2010 at 13:31
  • 1
    \$\begingroup\$ care to expand on that or provide a link? \$\endgroup\$
    – tenpn
    Jul 16, 2010 at 14:20
  • 2
    \$\begingroup\$ Scene Graphs - just say no home.comcast.net/~tom_forsyth/… \$\endgroup\$
    – user274
    Jul 18, 2010 at 15:01
  • \$\begingroup\$ TomF is talking there about graphs for graphics, and his criticisms are all based around graphics applications. This question was about general game architecture and that's the context in which I talk about scene grpahs. The dependencies between pathfinding, streaming, UI message handlers and audio are all static across the life of your game. However they're generally not understood, or if they are they're not expressed in code so you can't use those dependencies to thread nicely. That's where scene graphs come in. \$\endgroup\$
    – tenpn
    Jul 19, 2010 at 8:01
0
\$\begingroup\$

I think for overall architectural knowledge, experience/trial/error are the main resources.

Because the overall architecture WILL change so much based on the kind of game you're writing, looking at resources/papers on entity systems/engines/scripting/etc and putting it together into something that has meaning in your own application is the best way to learn.

That said, I really like the Game Programming Gems books for going into depth on the individual components that you can use in your games, I still commonly use a lot of the ideas published in them across my professional activities, as well as in my hobby-code.

\$\endgroup\$
0
\$\begingroup\$

An interesting source of game-building knowledge that I recently became aware of is Penny Arcade - Extra Credits. They are in the form of short (~5 minute) weekly videos. They have covered a variety of topics, all of which are available for viewing at the above link.

\$\endgroup\$
1
  • \$\begingroup\$ I don't think they really go into game architecture. \$\endgroup\$
    – Kylotan
    Aug 16, 2012 at 18:55

Not the answer you're looking for? Browse other questions tagged .