top of page

Cursed Bastion

Dungeon crawler with unique enemy behaviors. Producer and tech lead on this team project.

​

Role(s): Producer, Designer, Programmer

Team Size: 4

Time Frame: 3 months

Tools: C++, Custom Engine

Project Summary

Cursed Bastion is a top-down, 2D dungeon crawler set in a haunted castle. As the player ascends each floor, they face an ever-growing horde of ghosts, ogres, slimes, snakes, and a menacing Sorcerer who appears throughout the castle. The ultimate goal is to defeat the Sorcerer and break the castle’s curse.

 

I created Cursed Bastion with a team of four for my Master’s Game Project at DigiPen. We decided to build it using a custom C++ engine I’d developed the previous semester. This allowed the team to hit the ground running, stress-test the engine’s stability, and make targeted improvements as needed. Ultimately, the project was a success, earning an A+—with my professor noting he would have given an even higher grade if possible.

Gameplay

The player moves in eight directions using WASD (or a d-pad/left analog stick). Initially armed only with a ranged fireball attack that fires in cardinal directions, the player later acquires a melee sword (dropped after defeating the Sorcerer in Room 3) for higher damage. Weapon switching is done via Q/E or controller bumpers.

​

Enemies each have unique behavior:

  • Sorcerer teleports around (except in boss-prep rooms), casting ranged spells and special attacks during boss fights.

  • Ghosts patrol between two points and charge at the player if nearby.

  • Ogres wander randomly, then charge straight if aligned horizontally or vertically with the player.

  • Slimes & Snakes emerge from Urns or move randomly, sometimes colliding with other enemies to create emergent chaos.

The castle features nine rooms, with mid-boss Sorcerer battles in Rooms 3 and 6, and a final showdown in Room 9. The player’s health is represented by three hearts (six hit points). Losing all hearts restarts the current room with two hearts remaining.

Technical Highlights

  • Robust AI & State Machines: Implemented multiple AI behaviors for different enemy types. The Sorcerer uses teleportation and ranged attacks, while ghosts, ogres, snakes, and slimes each feature distinct movement and combat logic.

  • Custom Engine Expansion: Added new features (e.g., improved collision, UI system, room transitions) specifically for the project.

  • Complex Multi-Room Structure: Designed a multi-level castle environment featuring progressively challenging enemies and three boss fights with the Sorcerer.

  • 60 FPS Target & Optimizations: Leveraged a custom frame rate controller and efficient component lookups to ensure consistent performance.

Challenges & Solutions

  • Balancing Gameplay: We discovered early on that the difficulty spike in certain rooms was too steep. Through regular playtesting and iteration, we refined enemy quantities, movement speeds, and player health mechanics to achieve a smoother difficulty curve.

  • Team Engagement & Production: As Producer, I initially struggled to motivate my teammates to take ownership of tasks. By coordinating with our professor and holding more focused scrum meetings, I helped them see the project’s potential. Eventually, their contributions picked up, especially after they saw the prototype come to life.

Achievements

  • A+ Grade: Received top marks for the final project and class grade (based mostly on this multi-milestone project); the professor commented he would have awarded me an even higher score if possible.

  • Successful Engine Test: The codebase withstood multiple teammates’ additions and large gameplay features, confirming its stability.

  • Positive Feedback: Playtesters praised the game’s classic dungeon-crawler feel and found the Sorcerer a memorable antagonist.

Lessons Learned 

  • Iterative Development: Maintaining weekly milestones, thorough playtesting, and incremental refinements was key to delivering a polished final product.

  • Flexibility & Ownership: A custom engine provides a lot of freedom, but it also requires proactive debugging and documentation so teammates can contribute effectively.

  • Leading a Less-Experienced Team: Having come from Amazon, I was accustomed to highly driven teams. This project taught me how to effectively mentor peers with varying motivation levels—focusing on clear deliverables and supportive guidance.

Conclusion

Overall, Cursed Bastion allowed me to merge my love for game development, AI systems, and efficient coding practices, while honing my leadership skills in a challenging team environment. By project’s end, we delivered a fun, polished experience that showcased our strengths—and pushed us to grow.

© 2025 Marco Aguilar

bottom of page