Computer Engineering Department
BS in Computer Engineering
Game programming design and organization can be difﬁcult and complicated. To simplify the development process, frameworks with an array of tools and utilities known as game engines are used. The main goal of this project is to explore game engine designs and develop a design for a modular and expandable game engine. The designs covered in this paper are Object Oriented Programing (OOP) and two Entity Component System (ECS). OOP designs, commonly used in computer science, use a hierarchy of objects to share functionality. ECS designs are based off of the concepts Composition over inheritance in which objects contain features instead of inheriting them. However, designs have their own weaknesses, such as expandability in OOP design. The issue comes from the tightly coupled nature of a hierarchy where changes made near the root of the hierarchy requires signiﬁcant code reconstruction. ECS solves the coupling issue, however, problems exist with cross system communication and shared components across systems. The two ECS designs used, Cupcake and Artemis, aim to solve these issues. By writing simple game applications, the functionality of each design was tested and analysed. Using the two strengths of Cupcake and Artemis, this paper proposes a new ECS design to minimize architectural issues.