Component based game engine design

Update 2013-01-07: If you want to see a good mix of component-based game engine with the (in my opinion) superior approach of reactive programming take a look at the V-Play engine. It very well integrates QTs QML property binding functionality.

We did some research on CBSE in games at our university and I collected some material over the years:

CBSE in games literature:

  • Game Engine Architecture
  • Game Programming Gems 4: A System for Managin Game Entities Game
  • Game Programming Gems 5: Component Based Object Management
  • Game Programming Gems 5: A Generic Component Library
  • Game Programming Gems 6: Game Object Component System
  • Object-Oriented Game Development
  • Architektur des Kerns einer Game-Engine und Implementierung mit Java (german)

A very good and clean example of a component-based game-engine in C# is the Elephant game framework.

If you really want to know what components are read: Component-based Software Engineering! They define a component as:

A software component is a software element that conforms to a component model and can be independently deployed and composed without modification according to a composition standard.

A component model defines specific interaction and composition standards. A component model implementation is the dedicated set of executable software elements required to support the execution of components that conform to the model.

A software component infrastructure is a set of interacting software components designed to ensure that a software system or subsystem constructed using those components and interfaces will satisfy clearly defined performance specifications.

My opinions after 2 years of experience with CBSE in games thought are that object-oriented programming is simply a dead-end. Remember my warning as you watch your components become smaller and smaller, and more like functions packed in components with a lot of useless overhead. Use functional-reactive programming instead. Also take a look at my fresh blog post (which lead me to this question while writing it :)) about Why I switched from component-based game engine architecture to FRP.

CBSE in games papers:

  • Component Based Game Development – A Solution to Escalating Costs and Expanding Deadlines?
  • A Flexible And Expandable Architecture For Computer Games (404)
  • A Software Architecture for Games
  • A Generic Framework For Game Development (WebArchive)
  • Smart Composition Of Game Objects Using Dependency Injection

CBSE in games web-links (sorted by relevancy):

  • Component based objects Wiki (Empty wiki)
  • Evolve Your Hierachy
  • Game Object Structure: Inheritance vs. Aggregation
  • A Data-Driven Game Object System (PDF)
  • A Data-Driven Game Object System (PPT)
  • Component-based prototyping tool for flash
  • Theory and Practice of Game Object Component Architecture (404)
  • Entity Systems are the Future of MMOs
  • ogre3d.org forum: Component Based Objects
  • gamedev.net: Outboard component-based entity system architecture
  • gamedev.net: Entity System question
  • Brainfold entity-system blog (WebArchive)

There does seem to be a lack of information on the subject. I recently implemented this system, and I found a really good GDC Powerpoint that explained the details that are often left behind quite well. That document is here: Theory and Practice of Game Object Component Architecture

In addition to that Powerpoint, there are some good resources and various blogs. PurplePwny has a good discussion and links to some other resources. Ugly Baby Studios has a bit of a discussion around the idea of how components interact with each other. Good luck!


While not a complete tutorial on the subject of game engine design, I have found that this page has some good detail and examples on use of the component architecture for games.