Carleton University - School of Computer Science Honours Project
Contrasting Game Architectures – Entity-Hierarchy vs. Entity-Component-System
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.