Carleton University - School of Computer Science Honours Project
Winter 2019
Contrasting Game Architectures – Entity-Hierarchy vs. Entity-Component-System
ABSTRACT
This project will compare the development process, testing and quality metrics of a 2D platforming
game. There are two implementations, one uses an object-oriented architecture versus the other that
makes use of an entity component system. The typical object-oriented game development strategy
is to have all your entities: Player, Enemy, Projectile, etc. all inherit from a parent class ”Entity”
which would provide some functions for updating, drawing and attributes that most entities will
have: position, image, size. This allows the game loop to easily iterate through a collection of Entity
objects thanks to inheritance and call their update and render functions. The entity component
system will be trying to reduce the amount of overhead and complexity introduced by this hierarchy
and boost performance in-game and in development. Games are an interesting type of software to
create because performance gains are always in need and game development covers so many topics
of computer science. The approach to gain insights on two competing architectures was to build
the same game using each of the methodologies and afterwards compare the key software quality
metrics.