Dracomaton(2023)

Gameplay Programmer & UI Programmer

Play On Steam

About

Dracomaton is a top-down roguelike bullet hell where you swap between multiple playstyles on the fly. Equip yourself with various Forms that have different strengths and weaknesses, or Mod existing Forms with the characteristics of other ones!

Project Overview

Role: Gameplay Programmer & UI Programmer

Team size: 13

Engine: Unity


Contributions

Item System

In Dracomaton, items add variety to the gameplay by giving players positive or negative effects that impact their abilities and strategy.

I set up the item system’s foundation, including how new items are created, how each item’s unique effects work, and how these effects are applied to the player. Using Unity’s ScriptableObjects, I created a BaseItem class as the core for all items, establishing shared behaviors, such as cooldown management, while allowing specific items to have custom logic. This setup uses inheritance and polymorphism to make the item framework both scalable and adaptable.

Resource System Example

Resource Management System for organizing in-game assets.

To handle stat changes, I used a composition approach with StatsModifier collections that manage each item's status and stats modifiers. These modifiers are dynamically applied or removed when items are equipped, allowing for flexible adjustments to player stats like damage or health.

Since designers would be working with items too, I designed the system to be easy to adjust directly in Unity’s Inspector. This setup lets designers test and fine-tune item strength just by changing values in the Inspector, making it faster to balance items without needing to touch the code.

Resource System Example

Resource System

In Dracomaton, random items and rewards appear in different scenarios, such as shops or as rewards after clearing rooms. To manage these dynamic elements efficiently, I developed a Resource Management System as a central controller for all in-game assets, including UI icons, items, VFX, and more. This system acts as a flexible helper function, simplifying resource organization and retrieval for both the Reward System and the Shop System.

The ResourcesManager.cs is a singleton class that loads various resources (like prefabs) from project folders into organized lists when the game starts. To keep the codebase clear and maintainable, I used a partial class structure that separates each resource type into its own manager. This structure allows for easy access to specific resources through dedicated functions, making it simple to spawn any item as needed. Additionally, each resource manager operates independently, so programmers can create and manage single resource types without cluttering a primary script.

Reward System

In Dracomaton, players receive different rewards based on the type of room they complete. For example, completing a health room grants a health potion. As the game progresses, various room types appear, each offering unique rewards.

I created a Reward Spawner object that stores different reward prefabs, enabling dynamic and specific item drops.

When a room is cleared, the Reward Spawner selects the appropriate reward type and checks for nearby available tiles to place the reward. Since tile maps are grid-based, I searched the tiles in a Spiral Pattern outward from the player within a specific range. This will help find the nearest available tile by only checking necessary tiles.

Resource System Example Resource System Example

I implemented a responsive and event-driven reward system using UnityEvents and delegates. This approach enables the reward spawner to be triggered directly by room events, reducing redundant references and keeping the code structure clean and modular.

Shop System

For the Shop System, I was responsible for setting up three items in each shop room, providing players with varied options every time they entered. To achieve this, I created a Shop Item Position Prefab that can be easily placed anywhere in the scene. I also made a dynamic system that allows each shop item position to spawn either randomized or fixed items. The shop system also uses weighted randomization for shop item generation, making rarer items less likely to appear.

Resource System Example Resource System Example

Mod Menu

In Dracomaton, the Mod Menu is a key part of the game’s UI, built to handle two slot types: Form Slots (upper) and Mod Slots (lower). The menu allows players to customize their setup by dragging and swapping forms and mods between these slots.

To make sure the UI changes reflected in the gameplay, I used Unity’s Drag and Drop (IDropHandler, IBeginDragHandler, and IDragHandler) Interface with a custom Draggable Item class. I structured the slots into Form Slot and Mod Slots to simplify tracking and syncing the UI with the player's actual equipment status. If an item can’t be equipped, the system displays visual cues to guide the player.

Resource System Example Resource System Example

Top