A downloadable game for Windows

Demo Video:

This project was a collaborative effort, with the following highlighting my specific contributions.

Project Overview:

In this project, I developed a procedural room generation system for a 2D dungeon crawler using breadth-first search (BFS), depth-first search (DFS), and Dijkstra algorithms. This system creates dynamic, grid-based levels. Additionally, I incorporated gameplay mechanics such as teleportals, ricochet guns, pinball swords, and an explosive multiplier, ensuring proper element spawning within the procedural grid.

Game Description:

The game is a 2D horror themed dungeon crawler featuring a custom shader for a dark environment with limited visibility. The player's objective is to find a key to open a door, triggering a boss level and eventually leading to their escape.

Navmesh AI agents patrol the dungeon, attacking the player when in their field of view. Players have access to items like teleportals, ricochet guns, pinball swords, and an explosive multiplier. These items provide varied gameplay mechanics, such as teleportation, boomerang bullets, bouncing explosive balls, and explosive multipliers with delayed detonation.

After finding the key, the player must backtrack to the start to open a door, triggering a boss level where fire spreads using a search algorithm. The player must evade fire and enemies to reach the exit room.

Key Features:

Procedural Room Generation:


  • Utilized BFS, DFS, and Dijkstra algorithms for interconnected rooms with varying layouts.
  • Implemented dead-end detection for special element placement.
  • Designed dynamic wall removal for diverse room structures.

Gameplay Elements Spawning:

  • Flexible system supporting enemies, teleportals, ricochet guns, and pinball items.
  • Logic for spawning elements in suitable locations, ensuring unoccupied positions.

Advanced Room Features:

  • Key spawner in the farthest room, adding challenge and exploration.
  • Sets of game objects spawned together for varied gameplay experiences.

Occupancy Management:

  • System to track occupied positions, preventing overlaps and ensuring clear paths.

Code Structure and Extensibility:

  • Structured code for easy addition of new elements and room features.
  • Used inheritance and polymorphism to extend base room generation class.

Classes and Implementations:

KeySpawner Class:

  • Description: Places key in the farthest room from the start.
  • Implementation: Uses DFS to identify farthest room, integrates with room management.

PinballSword and Pinball Explosive Class:

  • Description: Sword that interacts with pinballs, causing them to bounce.
  • Implementation: Applies custom forces, added audio and visual effects, Balls bounces before exploding, realistic physics, color change cues.

Pinball Mulitplier  Class:

  • Description: Pinball with explosion multiplies into larger number of small sized explosives.
  • Implementation: Slower movement, different particle effect, color change cues.

RicochetGun Class:

  • Description: Fires multiple bullets with cooldown and recoil.
  • Implementation: Handles aiming, shooting mechanics, bullet instantiation, muzzle flash, and recoil effects.

Bullet Class:

  • Description: Custom bullet with damage threshold, boomerang effect, and color change.
  • Implementation: Reflects off surfaces, dynamic color changes, trail rendering.

Teleportal  Class:

  • Description: Teleport tile that teleports the player to another random teleport tile within the dungeon.
  • Implementation:
    • Audio & Effects: Plays a teleport sound effect and particle effect upon teleportation.
    • Teleport Logic:
      • Stores and finds all teleport tiles in the scene.
      • Excludes the current teleport tile when choosing a random teleport position.
      • Uses a coroutine for teleport cooldown to prevent rapid consecutive teleportations.
      • Applies raycasting to ensure teleport destination is clear.
    • Occupancy Management: Keeps track of occupied positions to prevent overlap and ensure clear paths

Technical Skills

  • Proficient in C# programming within the Unity engine.
  • Experience with procedural generation algorithms (BFS, DFS, and Dijkstra).
  • Knowledge of dynamic object spawning and game balance techniques.
  • Ability to design and implement extensible and maintainable code architectures.

Conclusion

This project demonstrates my ability to develop complex procedural generation systems and integrate diverse gameplay elements, showcasing my proficiency in gameplay programming and commitment to creating engaging game experiences.

Reference:

NYU Game center provided the foundational project upon which this work was built upon.

Download

Download
Build.zip 38 MB

Install instructions

Download and extract the build file. 

The game main menu allows you to choose three different procedural content generators which can be run together or individually. 

Leave a comment

Log in with itch.io to leave a comment.