
Deck Mech was my first chance to step into a Game Designer role at Duke. Built for our Game Engines course, it is a two-player deckbuilding game where players first assemble mech armor pieces with different resistances, then battle using elemental attack cards whose damage is shaped by the suits they built.
Armor-Building Phase

The Hangar with some pieces selected and cards drawn.

When each category has at least one piece, the player is prompted to build their full armor set.
Fighting Phase

Both armored Mechs have been built. Time to fight!

Some attack cards have been drawn.

The player has chosen an attack card! Damage is done to their opponent and the mech sprites are animated.

After attempting one "Last Stand" draw, a player fails to deflect their finishing blow and is defeated.
Development Process
This project was developed over a few weeks for the Game Engines course taught by Dr. Arnav Jhala. My main focus was designing the core loop, balancing card stats, and shaping a system that mixed strategic drafting with enough unpredictability to keep matches lively.
Key Takeaways
- Game design and balance is very delicate - When building something like a card game, it is important to have a sensical game flow and a balanced set of stats. A few simple additions or subtractions can mean the difference between a well-balanced game and an unplayable mess. We ran into issues where most attacks would not do any damage for several turns in a row, so we had to compensate by buffing Attack cards.
- If you're using AI, use it to analyze and calculate, NOT to generate - AI (with proper verification of results) is a useful development tool for mundane calculations, function/library searches, and prototyping. However, be sure to keep your core gameplay design, art, sounds, assets, etc... human-made.
- Keep data lightweight - While it may be tempting to make a GameObject for each individual card, this would have made the game much larger than it needed to be. If you can find a way to store your data using simple data structures like arrays, JSONs, or Scripted Assets, you can simply extract the data you need when you need it and dynamically add it to a Prefab.
View on GitHub