Enemy behaviors
Created four enemy families with different navigation, range, vulnerability, and death behaviors so each one changes how the player uses space.
Independent project · 2021–2022
A top-down survival shooter where distinct enemy behaviors and mid-run upgrades reshape an escalating wave challenge.

Overview
Light in the Dark began as a learning project and became the first game I carried through a complete release. I designed and implemented the core combat loop, enemy roster, wave progression, soul economy, upgrades, menus, controls, and supporting artwork.
Building the entire experience taught me how much work exists beyond an isolated mechanic. Difficulty, feedback, interface flow, content, and release preparation all had to support the same playable loop.
Playable result
Each run begins under immediate pressure. The player moves, aims, and fires while new waves introduce greater numbers and more varied threats. Defeated enemies provide souls that can be exchanged for upgrades before the pressure resumes.
View on itch.io ↗My contribution
I built the game as a connected set of systems rather than a collection of disconnected features.
Created four enemy families with different navigation, range, vulnerability, and death behaviors so each one changes how the player uses space.
Connected enemy spawning and escalating difficulty to an endless-survival structure that steadily increases pressure and variety.
Rewarded defeated enemies with souls and connected that currency to purchases made during a run.
Implemented improvements to firing speed, projectile output, and health that let the player respond to increasing danger.
Built the menus, upgrade interface, controls, win-and-loss flow, and restart path needed to make the project independently playable.
Created and adapted character, enemy, icon, animation, and menu artwork into a consistent grayscale presentation.
Enemy design
The roster was intentionally small. Each enemy received a readable rule that asked the player to react differently.

A direct melee pursuer that creates consistent close-range pressure and becomes dangerous when allowed to gather into a group.

A ranged attacker that throws bones from a distance but retreats when the player closes in, reversing the usual chase relationship.

A phasing threat that passes through obstacles and only becomes vulnerable near the player, forcing risky close-range timing.

A slower enemy that splits into two fast baby spiders when defeated, turning an apparent success into a new positioning problem.
Design challenge
The primary mechanic is intentionally straightforward: move, aim, and fire while surviving a growing horde. The challenge was making that loop remain interesting as pressure increased.
I combined enemy rules, wave pacing, and upgrades so the player repeatedly reevaluates positioning and priorities instead of only responding to higher enemy health.
Core gameplay loop
Faster firing
Double shot
Restore healthDevelopment process
I began with guided Unity material, then branched into independent research, additional systems, original enemy rules, and the work required to publish the finished build.
Used a structured course to understand Unity’s core workflow and establish a working player-and-enemy prototype.
Researched and implemented additional enemy behaviors, progression, interface, and artwork around my own design direction.
Recognized feature creep—including plans for an unnecessary multiplayer mode—and refocused the project on a finishable single-player experience.
Completed the menus and game flow, packaged the build, and released my first game publicly on itch.io.




Takeaways
Menus, controls, difficulty, feedback, and release preparation matter as much as the central mechanic.
Distinct behaviors create more meaningful decisions than simply increasing health or movement speed.
Reducing feature creep helped me turn a growing learning project into something people could actually play.