This was my first large-scale project. I had a lot to learn and a lot to prove, so I just kinda threw the whole kitchen sink into it. As a result, there's a lot of issues with things like turn flow. I struggled with game breaking null references when enemies died. That's how I learned to always be careful with destroying objects and object references.
It's an educational game, so you can click on elements to activate cutscenes and dialogue. We wanted to make something that could teach young kids, while still being fun and enjoyable. No kids gonna learn anything if their bored and unengaged, after all. We took influence from rail shooters like Star Fox and the Gummi ship sections from Kingdom Hearts.
To keep things interesting, I made a camera event system that lets you swing the camera around the player for different angles. I also set up the camera to zoom in on points of interest, typically for triggering dialogue. You can also move the camera around during 'exploration' segments, where you click on objects of interest to trigger educational dialogue.The main gimmick is a heat system; casting spells generates heat. The more heat you have, the more damage you do. Heat can be turned back into mana so you can keep attacking, but heat diminishes over time so you have to be fast. What's more, the faster you clear a floor or room, the more currency you get at the end. There's a variety of enemies, each with their own behavior, weaknesses, and resistances.
The part I put the most effort into, though, is the map generation, which you can read more about in my Code Snippets page. At first I followed a youtube tutorial, but the system they made in it was pretty limiting, so I had to heavily modify some things to allow for more unique rooms to be spawned.
I wanted to challenge myself and make something complicated in a short amount of time. I also wanted to tackle the strategy RPG format and break my fear of large, interconnected systems. Each action is logged, allowing for undoing/redoing of actions, in case you made a mistake. This is the basics of the command pattern, where each action is a piece of data that has an execute and an undo function, allowing them to be logged and referenced later. I learned a lot, not just how to use the command pattern and fully utilize a tile system, but also what not to do. The short timeframe resulted in me making a bunch of hacky design decisions that bit me in the rear as the project grew.