Waterwheel

Waterwheel is a custom game engine I built from the ground up to deepen my understanding of game engine architecture and development. I utilized SDL2 for core rendering and input functionality for 2D games. To ensure practical application and avoid development in a vacuum, I am simultaneously developing a game alongside the engine, allowing for continuous testing and refinement of its capabilities.

Programming

Developing the Waterwheel engine has been a surprisingly engaging and insightful journey. The level of control inherent in building a game engine from scratch has been a powerful motivator, driving me to achieve new levels of productivity. Structuring the project provided valuable insights into the design decisions behind established game engines like Unity.

Certain engine systems presented unexpected complexity. Implementing collision detection and resolving for even a limited set of collider types (tilemap, rectangle, and sector) required a deep dive into geometric algorithms and mathematical calculations. Similarly, navigation and pathfinding, while conceptually familiar, proved challenging to optimize for both path quality and runtime performance within a dynamic game environment. It took multiple iterations to get the pathfinding into a satisfactory state given the plans for my game.

williamhalpin.com

Art Direction

Initially, I envisioned no accompanying GUI for the engine, choosing to just edit the game’s text files directly. However, this quickly proved inefficient and unsatisfying when translating my first test scene into a textual representation. Recognizing the need for a more intuitive and engaging workflow, I shifted gears and started development of a dedicated GUI for the engine. This decision greatly transformed the editing process, allowing for a more visual and enjoyable experience.