Building My First Brogue-Like Dungeon Crawler

  • mdo   Sergio
  •   Game Dev
  •   October 5, 2025


I realized I should start using this blog as a way to show off my accomplishments and keep track of progress, so here's my first one :)


For this project, I built a small turn-based dungeon crawler where you play as a cute armless diamond wizard trapped in hell. The goal: escape through a glowing portal while avoiding traps and demonic flying monkeys that block your way. The assignment required building core mechanics like tile-based movement, walls, doors, keys, traps, and exits — plus modeling the main assets in Blender.


🗺️ Setting the Scene in Hell

The dungeon takes place on a checkerboard floor of lava stones, surrounded by magma walls. Instead of generic walls to block sections of the checkerboard, I decided to get creative and use flying monkeys with demon wings as the “enemies” that block paths between tiles. They give the game a chaotic and fever-dream vibe, perfect for the hellish setting and my developer art style.

⌨️ Smooth Grid-Based Movement

The diamond wizard moves one tile at a time with WASD. Movement glides smoothly across tiles, and input is locked while moving to keep things turn-based. To make sure the monkeys properly block the player, I used Physics.Linecast to check the line between where the character is and where the target location is before moving. If there was any object tagged as a wall blocking that line by collider, my program could know and report it instead of just teleporting through the monkeys.

🔑 Keys, Doors, and Portals

  • Keys: glowing pickups that the wizard collects. Once picked up, the wizard can unlock doors.
  • Doors: locked until you have the key. Otherwise, they block you with a fitting "locked" sound effect.
  • Portal Exit: instead of a staircase, the level ends when you step into a hell portal, complete with a Minecraft nether sound effect.

💀 Traps and Death by Physics

The floor is scattered with traps. Stepping on one triggers a Lose screen. But instead of a boring “Game Over,” I added a ragdoll effect: when the Lose scene loads, the wizard gets flung backwards with random torque, spinning wildly out of frame. It’s chaotic, funny, and very “Unity physics.”

🎧 Sound Design

To make interactions feel more alive, I added sounds for every action:

  • Wall bump: loud smack when you try to move into a monkey or into lava.
  • Locked door: it'll literally block you, bro.
  • Key pickup: all I could hear in my brain when searching for a sound was Zelda.
  • Trap: Fortnite-style death sound.
  • Exit: nether portal sound effect when escaping.

I also delayed scene transitions just long enough so the sounds play fully before loading the next scene, or else the scene reload would kick in before any sound was heard.

🎬 Scenes, UI, and First Time Using Scene Switching

One of the biggest learning experiences in this project was setting up multiple Unity scenes and switching between them. Up until now, I had only worked inside a single scene. For this project, I created:

  • MainGame Scene: where the dungeon crawler gameplay takes place.
  • WinScene: shown when you reach the portal exit, with a “Play Again” button.
  • LoseScene: triggered when you step on a trap, featuring my ragdoll fling effect and a retry button.

Each scene needed its own setup in Unity’s Build Settings so that I could load them with SceneManager.LoadScene(). This was my first time really working with scene transitions, and it helped me understand how Unity organizes larger projects.

UI Buttons

Another new skill I picked up was Unity’s UI system. On both WinScene and LoseScene, I created a Canvas with a Play Again button using TextMesh Pro. By attaching a simple script, I linked the button’s OnClick() event to reload the main game scene:

public void PlayAgain() {
    SceneManager.LoadScene("MainGame");
}

This was my first time making functional UI elements, and it felt really rewarding to click the button and see the game restart smoothly. Between the portals, ragdoll chaos, and buttons, the project felt like a complete little game loop by the end.

🎨 Assets

I made the core assets required by the rubric in Blender (exit, key, door, player), but also mashed up some external models to really add the vibe I wanted:


© 2026 YazdiLabs - All rights reserved.