Devlog 4 - Procedural Dungeons (Part 2)


PCG Dungeons

I’ve been focusing on improving the randomly generated dungeons and have added regions. Regions determine the assets used for the environments, traps and enemies for the rooms. Using the scriptable objects system in Unity, I am able to easily create new regions with unique assets and enemies. Using the grammars technique I mentioned in the last devlog, I am able to determine the region for each room.

So far there are 4 regions; the crypts, the manors, the caves and the depths. Most of these regions use different assets to make the rooms and populate them so they look different, but they also have unique enemy types and traps to make them feel different.

The dungeon always starts with either the cave or crypt region for a few rooms, and it will regularly change themes throughout the dungeon. I have set rules for how each theme can transition into another, so you can fall down into the caves region from the upper levels, but the caves region can only transition to the depths region.

I plan to use the transition rooms between regions as opportunities for environmental storytelling. For example, portal rooms connect the manor and the depths area. The manor area is filled with knights and mages, while the depths will be filled with demons. This portal transition between the regions could hint that the mages were tampering with powerful magic and getting involved with demons and otherworldly entities.

After these changes, I also needed to make some optimisation changes. Now, only the next rooms will be populated with assets and enemies and the rooms will only load when the player opens the door of the previous room.

Combat Mechanics

In addition to adding regions to the random dungeon generator, I have also been tweaking the combat mechanics. I decided to add a limit to how many arrows the player can shoot. The player can now only shoot 5 arrows, but they regenerate over time.

To show how many arrows the player has, I decided to have them physically on the player in their quiver. I decided to do this as I’m experimenting with having all of the information the player needs about their character on or near their character, so the player does not need to look in the corner of the screen away from the action to see their health or arrows. To make the number of arrows clear, I decided to make them big, and only have a small number of arrows so it’s easy to see how many are left.

I also decided to change the input for switch attacks from attacking after the opposite attack type to attacking while blocking. I originally had switch attacks performed this way to encourage switching between melee and ranged combat and to limit them as you must use a different attack before using them. However, I found this awkward to use as it made it difficult to just perform a simple attack or a charged attack.

Switching to block attacks feels much more precise to control. Additionally, now that ranged attacks consume ammo, I don’t need to limit switch ranged attacks with the requirement to perform a melee attack first and it also allows you to perform the switch melee attack when you have no arrows left. As a result, I have renamed them to special attacks.

I added music, sound effects and a pause menu. Most of the sound effects were found on freesound.org, and I’ve linked all of them in the Credits post, in addition to all of the asset packs I’ve used.

Files

Enfabler 0.1.3.zip 82 MB
Nov 10, 2023

Get Enfabler

Leave a comment

Log in with itch.io to leave a comment.