█ Solo project – Procedural Action-RPG | 2024
Technologies used
Unity
C#
JSON (save system)
Addressable Assets
Scriptable Objects
Dynamic cameras / Render Textures
Project vision
Aethernal Dungeon is a dungeon crawler inspired by Diablo and Dark Souls. The goal is to descend as deep as possible into an infinite, procedurally generated dungeon — but the only way out… is death. In this game, even dying is part of the progression.
Development process
The project was developed over two semesters, in four phases: prototype, alpha, beta, and gold. It reflects the culmination of my learning in gameplay systems design, object-oriented programming, and software architecture.
Key systems implemented
Procedural dungeon: infinite floor generation
Gravity system: the player slows down the deeper they go
Scaling difficulty: enemies get stronger floor by floor
Combat system: melee and ranged attacks
Dynamic inventory: uses Unity’s Addressables to change character visuals based on equipment
Loot system: custom algorithm based on cumulative probabilities (via ScriptableObjects)
JSON-based save system: stores player name, inventory, gear, and highest level reached
Minimap: secondary camera renders to a texture
In-game tutorial
Attributes, stats & level-up system
Dynamic camera zoom when opening inventory
What I’m proud of
Procedural dungeon: Several instructors told me it would be too hard to pull off — but I proved it was possible.
Loot system: After struggling to find usable resources online, I built a robust loot system from scratch.
What I’d do differently
When I started, I lacked some key knowledge. I only learned about design patterns like State Machine and Event Manager halfway through the project. If I had known them earlier, I could have created more dynamic AI for the enemies.
In the future, I plan to refactor my entity system using a clean, modular architecture:
A generic EntityData script for base values
An EntityController to manage movement
A universal State Machine that can be attached to any entity
JSON-based save system: stores player name, inventory, gear, and highest level reached
In progress ! Come back in a few…
Contact us
Interested in working together? Fill out some info and we will be in touch shortly. We can’t wait to hear from you!