During my last term at the University of Michigan, I had the opportunity to create a custom-built game engine. It is specifically designed for creating 2D games, leveraging a suite of powerful open-source libraries to provide comprehensive game development capabilities. The engine is built on SDL (Simple DirectMedia Layer) for handling low-level operations such as rendering graphics, managing windows, and processing user input, ensuring a seamless cross-platform experience. For UI elements and in-game debug tools, the engine incorporates ImGui, an immediate mode GUI toolkit, which allows for real-time user interface creation and interaction.
Physics simulation in the engine is powered by Box2D, a widely-used library that provides realistic physics behaviors, collision detection, and dynamics simulation. The scripting backbone is managed through Lua, integrated via LuaBridge, which facilitates seamless communication between C++ and Lua, enabling scriptable game behaviors and easy customization without recompiling code. GLM (OpenGL Mathematics) is used extensively for handling vectors, matrices, and other mathematical computations, essential for graphics transformations and physics calculations.
This engine architecture not only supports the rapid development of game features and mechanics but also provides a flexible and powerful platform for both beginners and experienced developers aiming to bring their game ideas to life efficiently.