Northeastern University
Northeastern Computer Science 2020-2024
Computer Science, Engineering, Game Development
Automation Engineer Co-op
Frontend Software Engineer
Presentation Progammer Intern
Northeastern Computer Science 2020-2024
CS4580 Final Project '24
Dear ImGUI/SDL3 2D Game builder featuring Entity Component System
and Python Scripting.
Project Documentation generated with Doxygen
Project Documentation generated with Doxygen
Quick Start with MacOS
The Entity-Component-System (ECS) architecture used in this engine is very flexible for configuring entities. It provides an easy way to create new components and manage their lifecycle. The SceneView class allows for easy manipulation of entities and components, utilizing the bitmask data structure to iterate through components efficiently. This is much more efficient than the OOP approach of iterating through all entities and checking if they have the desired components covered in the Space Invaders project.
Given more time, I would prioritize enhancing the scripting capabilities of the engine. This would involve improving the integration with Python, providing more extensive scripting APIs, and enabling more seamless interaction between C++ and Python code. In the engine's current state, scripting is primarily used to create and add entities, but modifying entity properties and behaviors is limited. I would allow the update and input systems to call Python script methods to allow for more customization.
The engine currently only supports one scene at a time. Adding a scene manager would allow for multiple scenes to be loaded and managed at once. This would allow for more complex games to be created with multiple levels and scenes.
The engine currently uses a grid-based system to build the world. Each tile gets assigned a Box2D body and fixture. Box2D recommends using a single body for all connected tiles in a level. This fixes the issue of the player getting stuck on corners of tiles.
Resources, Articles, and Art used in this project