top of page

Shroom & Doom

Roles
Date
Engine
Technical Lead, Main Engine/Systems Programmer
September 2022 - April 2023
Custom C++ engine
Project Type
Purpose
Platforms
2D shooter and tower defense game

Academic Project (DigiPen)

Shroom & Doom is a 2D top-down tower defense and looter-shooter. You play as a little robot with a gun that shoots down oncoming bugs impeding you from escape. You harvest biomass from them to build plant-based towers, and survive an onslaught of increasingly difficult rounds.


Contributions
  • I created an Entity-Component-System engine framework for the other programmers to build upon early into development. This allowed for the decoupling of systems and entities, making it easy for us to make changes and improvements over time.

    • It did make the concept of parenting entities a hell of a lot harder though!

  • Using the SOL2 header-only library, I integrated Lua scripting into our game. This vastly increased the productivity of those working on gameplay, eliminating the need to recompile the game when changing behaviors or UI.

    • Fun fact: SOL2 contains swearing in its comments, and normally that's not allowed when publishing student projects. Apparently, I caused some lively discourse with the professors on that one!

  • I integrated C++ RTTR (Run-time Type Reflection) into the engine. This was to make binding functions and systems between C++ and Lua easier.

    • Unfortunately, it did not end up being used that often, but when it was, it made it easier to script objects like particles.


Takeaways
  • This was my first project in a custom game engine! It's a lot tougher than using an existing engine, but the freedom of an original codebase allows not only for flexibility in the features we could put in the game, but for optimizations to the core of the engine that might be painful to implement in something pre-built.

  • This was my first project in which team members were lost; in particular, our artists. The reality is that not everyone who joins a team is willing to put in the effort to finish their work or fit the vibe, or has the time to. The game did not turn out as grand as we wanted it to be, but in the end, we made it work with the assets we had left.

  • This was my first project working with game designers. Although each discipline has a vastly different skillset, it is incredibly helpful to work side-by-side with them when implementing a feature they have proposed, especially when there isn't enough time to build an editor (or even if that's not the case).

bottom of page