Devlog 7 - Procedural Dungeons & Combat
I have been revising my systems for generating procedural dungeons, and have now made a system that can generate non-linear dungeons that sprawl out into multiple pathways and a much better object spawning system that gives me better control over the kind of objects that get placed in the levels. I’ve also been working on some combat features, like equipping different weapons that have unique properties and offer different attacks.
Procedural Dungeons
Dungeon Rooms
The new system still uses the grammars system (more details in Devlog 3 - Procedural Dungeons Part 1) to generate the main path of the dungeon, which ensures that the main path is varied and helps to make it more interesting, but it adds the ability for rooms to spawn side paths, which can yield additional treasure or earlier exits from the dungeon so you don’t have to go through the entire dungeon and defeat the boss. However, defeating the boss rewards the player with much more treasure.
To make this new system, I added additional door points to the room prefabs that can spawn additional rooms. The main path can be spawned from any one of these door points, which helps to make the dungeons less 1-dimensional, as before it felt like you were just going from 1 room to the next, and they were all spawned in the same direction. Now, dungeons can have twists and turns to make the layout more interesting, and additional paths allow for optional side challenges.
Currently, it’s difficult to tell what room leads to the main path, and this makes if feel like you are just going through the dungeon aimlessly. To improve this, I want to find a way to make it clearer which paths lead to optional side challenges, but not be too obvious about it. I also want to try to come up with a way for side paths to lead back to the main path, which will make the dungeon feel more connected.
Object Spawning System
I’ve updated my object spawning system, allowing me to add a lot more features and have more customization of the objects that spawn there. This new spawn system uses enums to determine which object types can be spawned at each spawner, allowing me to spawn wall and ceiling objects. I can also set a boundary for the objects, which allows objects to be spawned at any position within a small area, shown by a blue box around the spawner. These objects have a value to show how strictly they spawn, so some objects that would be placed at specific intervals, like wall sconces and statues, would be placed at the exact position of the spawner, while crates, barrels and other items would have more leeway. The same applies to the objects rotation.
Other features include linked spawners, theme changes and traps. Linked spawners can share some object types. For example, structural elements like wall sconces would likely be placed on both sides equally, and so if a wall sconce is spawned, the linked spawner will also spawn a wall sconce. Some objects, like paintings will ignore these links as they are decoration. Theme changes allow object spanwers to spawn objects from the next theme. This is used in rooms that transition to another theme, like the portal rooms.
I’ve also added more traps, included buzz saws, spike traps and spinning blades and I’ve added chains and webs that can hang from the ceilings in certain themes.
Combat
Player Moveset
I’ve also been working on a new attack system, which allows me to have greater control of the player’s attacks an combos, and I’ve been working on some new features to give the player more attacks. Charged attacks now hit in a wide swing, which makes it easier to hit multiple opponents. I’ve also added quicker follow-up attacks if their previous attack lands and a combo finisher if the final hit in the combo lands.
If the player attacks after parrying, they will perform a powerful riposte attack. These changes make the gameplay more varied and interesting and give the player more options when it comes to approaching melee combat.
Weapons
With the changes to the player’s attacks, I’ve added a weapons feature that sets the player’s combos and moveset depending on the equipped weapon. I want to try to have different weapons feel unique and not just like stat changes, so I’ve started giving weapons unique special attacks.
Heavier weapons like maces and hammers deal slightly more damage and get unblockable chains which allow them to get to their powerful combo finishers easier, but are a bit slower to hit compared to other weapons. These weapons are the simplest to use, and allow the player to get by with just using their basic combo string, but does not offer as many tactical options.
Swords are a bit more complicated compared to the other weapons, but they have unblockable riposte attacks and can use the lunge attack mid-combo to perform a unique spin attack while moving quickly. They can also use this spinning lung attack as a riposte, though it deals much less damage. This is a more challenging play-style, but offers more mobility and counter-play and it rewards switching up attacks more than the other weapons.
The final weapon that has been added is the staff, which has no combo finishers and has little melee strength, but allows the player to cast spells in place of ranged attacks, which do not consume arrows. This offers a pure ranged combat style as you don’t have to worry about arrows, but is far riskier to fight in melee as it offers fewer melee options.
Combat Feel
I’ve also been working on small touches to make the combat feel better to play, and have added camera and music changes when in and out of combat to make it clearer when enemies are nearby. When out of combat, the camera zooms in over the shoulder to get closer to the character and it will zoom out when in combat to give the player more vision over the encounter. Additionally, on the final kill in combat, the camera will quickly zoom in and a triumphant sound effect will play.
I’ve improved the target snapping, adding a small amount of rotation to make it easier to hit enemies with melee attacks. I’ve also made some changes to parrying, adding an animation and small movement to make it feel much more impactful when a parry is performed. It also makes the difference between a blocked and parried attack much clearer.
Enemies
Additionally, I’ve made some adjustments to the enemy AI to try to give them more natural responses to getting hit. They now take a few attacks before reacting to starting to block or dodge to make it seem like they are taking time to react, and they now hold their block for a few seconds instead of just blocking the incoming attack and instantly going back to normal. Also, they now roll away from the player when they dodge, which feels more realistic compared to enemies dodging into you. Enemies also ping other enemies when in combat, alerting other nearby enemies to the fight.
I’ve also adjusted their attacks, some of which are now unblockable without charging and charging an attack will transition to a different animation to make it more readable when they do release the attack, as opposed to releasing instantly.
Graphics
I’ve upgraded the project to URP, which allows me to add a lot of visual effects and post-processing. I’ve added local volumes for each region, which help to make the environments stand out more. Additionally, I’ve improved the materials for ghosts, phase gates, slow fields and other objects, and they now have a much better ethereal effect to them.
Files
Get Enfabler
Enfabler
Explore dungeons, defeat monsters and thwart villains to earn your place as a hero. Will you answer the call?
Status | In development |
Author | Andrew Scott |
Genre | Adventure, Action |
Tags | Action-Adventure, Fantasy, Prototype |
More posts
- Devlog 6 - TutorialJan 13, 2024
- Devlog 5 - Puzzles, AI Managers & The CutteryNov 24, 2023
- Devlog 4 - Procedural Dungeons (Part 2)Nov 11, 2023
- CreditsNov 11, 2023
- Devlog 3 - Procedural Dungeons (Part 1)Nov 03, 2023
- Devlog 2 - Enemies & ShrinesOct 27, 2023
- Devlog 1 - Game Overview, Combat Design & Arena Mode DemoOct 22, 2023
Leave a comment
Log in with itch.io to leave a comment.