Dungeon Delvers
A first person procedurally-generated online multiplayer dungeon crawler game made in Unity for Windows and WebGL.
About the game
A small project for a game programming class at JCCC. I worked in a small team of three over most of the semester. The goal was to create a playable prototype of a first-person dungeon crawler game using procedural generation and featuring online multiplayer.
In the game, you to join up with other players in a lobby and choose a starting class. The starting class determines your stats and what weapon or spells you start with. After killing enough enemies, you level up gaining more stats, and sometimes even better weapons/spells!
The player who created the lobby is first given a key. Any player who touches another player with the key steals it. There is a exit room some where deep in the dungeon, and the first player to the exit door with the key wins! Kill enemies to level up and get an advantage over your friends!
Requirements for the project:
- A dungeon crawler game
- Features procedural generation of some kind to generate the game scene
- Features online multiplayer with any number of players (1 player minimum)
- A class system that allows you to choose from a list of classes each with unique access to items, spells, and specialized stats
- Collecting experience points allows a player to level up
- Leveling up allows for stat growth (health, mana, etc)
- Leveling up grants access to weapons or spells at definable thresholds
- A traversable UI/Menu inventory to select the weapon/spell to use
- Enemies must be able to spawn and use some kind of AI system that can attack the player
- All interactions are networked for all other players
- Awards experience points in some way to the player(s) upon death
- All characters must be fully animated
- This assessment must be submitted as a build
Here is the list of requirements that we were tasked to fulfill for this project.
Controls:
- WASD: Movement
- Mouse: Aim
- Left Click: Fire Weapon / Cast Spell
- Scroll Wheel: Select Weapon / Spell
- Spacebar: Jump
- P: Pause
- Enter/Button South: Menu Confirm
- Left Click: Menu confirm
Keyboard & mouse are supported. Controllers are not supported.
My contributions
I worked in a small team of three to produce this title. I implemented synchronized scene generation into a networking package for Unity known as Photon.
My goal was to only have to send the seed value over the network to get the generation synced on both sides. So, I went through all of the code in our project and read up on Unity's scripting API documentation for all of the functions we used, to make it as deterministic as possible. I created an RNG pooling system to ensure that random rolls during generation are kept separate and therefore cannot interfere with each other.
I also created the stats/weapon/spell system, the in-game UI for the game, the player attack system, and enemy states (dead/alive, damage dealt, what player attacked, etc), all synced over the network.
My other teammates handled the module prefabs and their 3D models, in-room object spawning, in-room enemy spawning/initial synchronization, enemy AI (patrol, chase, attack states), and animation/position/rotation syncing of players and enemies.
All of the game art and 3D models came from the Unity asset store.