Dungeon Crawler Toolkit

Welcome to the support thread for the Dungeon Crawler Toolkit! This toolkit, which is available for purchase in the Unreal Engine marketplace.​
https://forums.unrealengine.com/core/image/gif;base64

This asset provides all the essential components you need to start making your own first-person grid-based dungeon crawler, in the style of classics like Eye of the Beholder, Dungeon Master and Legend of Grimrock. Let players create a party of varied character classes and have them fight, solve puzzles and loot their way through intricate, multi-level dungeons. The project is built on well-organized and commented blueprints, using a heavily data driven design which makes modifying and extending the toolkit simple, even for non-programmers.

Feature Trailer

https://forums.unrealengine.com/core/image/gif;base64
​​

https://forums.unrealengine.com/core/image/gif;base64
​​

Feature list

  • Character creation
  • Inventory system
  • Stats and abilities
  • Powers and spells
  • Grid-based real-time movement
  • Multi-level dungeons
  • Monsters with AI
  • Saving, loading and level transitions

Join the DCT Discord!

Tutorial Playlist:

Creative Commons Assets:

This toolkit contains many assets that were not made by me, but which are licences under liberal creative commons licenses. I am extremely grateful that these amazing content creators have made their assets freely available. Without having access to these assets it would have been a much bigger challenge to create good looking game examples. You do not need to buy the toolkit to use these assets as they are freely available elsewhere. The included assets are as follows:

Models by Quaternius (dungeon, items and monsters)

Sounds by HaelDB (footsteps), qubodup (impacts), JaggedStone (ambiance), Kenney (Various)

Portraits by Buch

Icons by Lorc

3 Likes

Click for Trello with more detailed changelog, known issues and planned features](Trello)

**Changelog:

A new update is out for UE5.3 with several new additions.

v.1.6 (live 13.09.23): (for UE5.3)

  • Player light source manager that lets the player equip light emitting items, cast light spells etc. Added glowing sword and Light spell to demonstrate this.
  • Scrolls (single use items for Powers).
  • Added skill tomes that permanently increase stats when read.
  • Optimization: Slots enabling on level up (for powers) now event based rather than on tick and only for Power slots.
  • You can now specify which slot effects should run when an item is loaded
  • FIXED: Dart was missing the Consumable use rule and did not decrease on use.*
  • FIXED: Reverted LevelTransition actors to use name variables to hold the target level. Workaround for engine bug that clears soft references at runtime.

v.1.5 (live 25.05.23): (for UE5.2)

  • UI Arrow button input option for movement (for an old school feel or for touch screens).
  • “Max load” stat based on strength. If carrying items waying more than max load for any character the player cannot move.
  • Instantaneous movement option (can be toggled in menu).
  • Fresnel outline is displayed on items and interactables when they are in range and the player mouses over them.
  • Added two new monsters made by Quaternius. A dragon and a mushroom. These replace the fire and ice slimes in the demo maps.
  • FIXED: Curve_Float_Steps did not output correct values, resulting in several derived stats (like Ability Points) not updating properly (UE5.2 specific)
  • FIXED: Monsters sometimes turn back and forth a few times when blocked by another monster.
  • FIXED: Check to see if monster was facing player was too sensitive. Sometimes caused monsters not to attack or to path incorrectly.
  • FIXED: The key for the keyholes in the demo dungeon would sometimes drop to the floor instead of unlocking doors.
  • Improved lighting performance.
  • Number keys can now be used to activate mini character slots.
  • Adding powers to starting equipment of character classes by default (so they are already equipped at startup).
  • Parameter for showing and hiding the debug decal helper grid of the Dungeon Manager (and is now enabled by default).
  • Improved the look of the default UI somewhat.
  • Replaced the default fonts with Source Sans and Source Serif
  • Using metasound for choosing random step sounds in pawn
  • Translucent backgrounds for powers
  • Replaced BP_Item adjacency check with interact range set in the item for picking up items.

v.1.4 (live 10.01.23): (for UE5.1)

  • Updated all input to Enhanced Input
  • Monsters now prioritize moving forward if the remaining distance to the player is equivalent to turning AND turning would not line the monster up for a ranged attack (if in range)
  • Added randomness to monster pathfinding to make them less predictable/exploitable
  • Debug option that display’s a monster’s location on the grid
  • Debug option for showing monster pathfinding
  • FIXED: When PlayerStart is placed on a higher level, the player pawn will occasionally spawn on the level below
  • FIXED: Carrying item through level transitions removes the held visual and throws an error
  • FIXED: Using shield of faith and moving to another level will make the increase permanent
  • FIXED: Pathfinding movement cost calculations were incorrect (which was inconsequential as they were not used before, but now they are)

v1.3.1 (live 07.12.22) (for UE5.1)

  • FIXED: Picked up item widgets no longer following the mouse (5.1 issue)
  • FIXED: Compile error for player character (5.1 issue)
  • FIXED: If you no longer have the mana to use a power due to using another power, the first power will not be greyed out
  • FIXED: Save and wave text blocks input
  • Enabled one way level transitions if setting Transition Target to None
  • Level transitions now handled by object references (fixes a 5.1 error that causes maps not to be packaged if they are only reference by name)
  • Removed some ugly geometry in Dungeon level

v1.3 (live 03.11.22) (for UE5.0)

  • FIXED: Items on the ground could be picked up through stats and powers menus
  • FIXED: Updaing derived stats and switching classes during character creation lets you increase derived stats to infinity
  • FIXED: Items can be dropped through inventory if moving mouse quickly enough that cursor overlaps the dragged item icon
  • FIXED: Name and graphics settings in character creation is hard to see due to text color
  • ESC and “M” now close the character sheet instead of opening the menu if it is open
  • Made floating text sharper
  • Preventing monster movement while attacking
  • Improved formatting of graphics quality button

v1.2 (live 24.09.21) (for UE4.27)

  • Starting items can now be added to character classes in DT_CharacterClasses
  • Items dropped on character portraits will now be added to the first available slot in their inventory
  • Fixed issue where clicking the split stack button would let you stack non-stackable items in hand
  • Fixed issue where items without a tooltip implementation (like the Key) said “Stats” in their tooltip
  • Fixed issue where clicking a power while holding an item left the item widget floating on the screen
  • Removed EStat enum (was unused)

v1.11 (live 18.08.21) (for UE4.26)

  • Improved turning precision
  • Item weight from data table. Currently used for pressure plates.
  • Fixed issue where stat penalties would not be subtracted when switching classes/races during character creation.
  • Fixed issue where weapon damage was always displayed as 0
  • Various bug fixes (see Trello)

v1.1 (live 12.12.20) (for UE4.26)

  • Modular item rules for when items can be added to/removed from slots and when they can be used
  • Secret doors
  • Bows with ammo
  • Two-handed weapons
  • Warning text for illegal actions

v1.01 (for UE4.25)

  • Splittable item stacks
  • Fixed issue with incorrect dungeon bounds displayed for non-standard tile sizes
  • Friendly names for items and powers
  • Warning message display
  • Varous fixes
1 Like

[Reserved for other updates]

First tutorial video is up! This one explains the basics of how to set up a level, including items, monsters and some interactables:

The Dungeon Crawler toolkit is currently part of Epic’s marketplace showcase, and will be 20% off for the duration!

A new tutorial video has been added. This one goes through how to add new items and item effects:

A new tutorial for the Dungeon Crawler Toolkit is live. The tutorial explains how to add new stats to DCT and use these to add new game mechanics. As an example I show how to implement a hunger system in DCT.

After creating a brand new project from the Toolkit, I’m seeing the following error on Launch:

[SPOILER]
[FONT=Courier New]LogPlayLevel: Error: [2020.09.09-23.23.53:275] 0]LogShaders: Error: Missing shader resource for hash ‘66D0E04516F84ADE66F2F0601826AF6190E6870C’ for shader platform 16 in the shader library
LogPlayLevel: Error: [2020.09.09-23.23.53:275] 0]LogMaterial: Error: Tried to access an uncooked shader map ID in a cooked application
LogPlayLevel: Warning: [2020.09.09-23.23.53:275] 0]LogMaterial: Warning: Invalid shader map ID caching shaders for ‘WorldGridMaterial’, will use default material.
LogPlayLevel: Error: 2020-09-09 16:23:53.275 UE4Game[44247:3497465] [UE4] Fatal error: [File:/Users/build/Build/++UE4+Licensee/Sync/Engine/Source/Runtime/Engine/Private/Materials/MaterialShared.cpp] [Line: 1810]
LogPlayLevel: Failed to find shader map for default material WorldGridMaterial(/Engine/EngineMaterials/WorldGridMaterial.WorldGridMaterial)! Please make sure cooking was successful (No inline shaders, null GTSM)
LogPlayLevel: Error: [2020.09.09-23.23.53:275] 0]LogMac: Error: appError called: Fatal error: [File:/Users/build/Build/++UE4+Licensee/Sync/Engine/Source/Runtime/Engine/Private/Materials/MaterialShared.cpp] [Line: 1810]
LogPlayLevel: Failed to find shader map for default material WorldGridMaterial(/Engine/EngineMaterials/WorldGridMaterial.WorldGridMaterial)! Please make sure cooking was successful (No inline shaders, null GTSM)
LogPlayLevel: Error: ERROR: Client exited with error code: 1
LogPlayLevel: AutomationTool exiting with ExitCode=1 (Error_Unknown)
LogPlayLevel: Completed Launch On Stage: Build Task, Time: 10.147129
LogPlayLevel: Error: RunUAT ERROR: AutomationTool was unable to run successfully.
PackagingResults: Error: Launch failed! Unknown Error
[/SPOILER]

Is this a known issue?

Hi Schoonology, this is not a known issue. Are you seeing this error in the log? Does it crash the engine or the game? Are you running this on Windows or something else?

have you ever planned more enemies than that one which is currently? bigger and more difficult maybe

There are five enemies included. Three different slimes (normal, fire and ice) and two skeletons (normal and lich). They have varying difficulty, size and abilities. But perhaps you meant something else?

Edit: But yes, more enemies are also planned.

Hi All, What Could be the best way to incorporate a third person view showing the actuals 4 characters? and how one could link the animation, items, and characters to the DCT RPG Logic…? Thanks again

Hi DredyKabal, this is a pretty complex question, so I thought the best way to answer is would be to give you the steps for achieving this. The suggestion below is a relatively quick mock up, so there is plenty of room for improvement, and depending on how you’re designing your game you might want to do things differently. But this should hopefully be enough to get you started.

I will be using the SK_Slime skeletal mesh as a placeholder for representing the player characters. I modify the skeleton of this skeletal mesh and add two sockets to its hands for holding items:

https://i.imgur.com/ijvmmqJ.png

Next I’m creating a new blueprint for representing our visual player characters in the game. I’m calling it BP_CharacterActor. I add the slime skeletal mesh and a couple of empty static mesh components for holding items. I attach these components to the two sockets we just made:

https://i.imgur.com/AND8sPt.png

Next in the event graph of this actor I add two events that respectively move or turn the actor. These will be driven externally by our DungeonPawn:

https://i.imgur.com/WqqsfTZ.png

I also add some code for changing the appearance of our held item meshes when an item is equipped, as well as an event for animating the skeletal mesh when an item is used:

https://i.imgur.com/k7yPMqx.png

Ok, our new blueprint is done. Time to hook it up to our DungeonPawn. In BP_DungeonPawn I’m creating a new variable that will hold references to all our CharacterActors, as well as keep them paired with the appropriate BP_PlayerCharacter object. It is a TMap with a BP_PlayerCharacter reference as a key and BP_CharacterActor as a value. I’m calling it CharacterActors. At BeginPlay I loop through all the PlayerCharacters stored in the game state, create a CharacterActor for each, place it in a simple grid surrounding the center of our pawn and add them to our CharacterActors TMap, like so:

https://i.imgur.com/8mzjIEN.png

I increase the length of the SpringArm to 200 and hit play. We’re getting somewhere:

https://i.imgur.com/cv4BIRZ.png

As soon as we move the slimes stay put, though. Time to hook up the pawn movement code to the events we made in our CharacterActors earlier.

This is part of the MoveStep event:

https://i.imgur.com/aAwNrnQ.png

And this is part of the MoveTurn section:

https://i.imgur.com/qmndKYI.png

Great, now we’ve got our slimes moving along with our pawn, but we still cannot visualize them equipping items. This is going to take some work.

We go to WBP_Slot, the widget blueprint representing inventory slots. We want to add functionality that can affect other blueprints in our projects, like our CharacterActors without making our code too spaghettified. Event Dispatchers are a good fit for this. I add two new event dispatchers to WBP_Slot, to be called when items are equipped, unequipped or used. I have them take a WBP_Item blueprint as a parameter:

https://i.imgur.com/3PLArgg.png

I call them in them in the following places:

https://i.imgur.com/dVLsw6C.png

https://i.imgur.com/19vZw6f.png

Ok, so far so good. Now we need to tie these interface events to the appropriate slots and call our item equip and use events from there. We can use WBP_MiniCharacter for this, which is the tiny “character sheet” that shows our portrait, health and what items are equipped in our hands. Here is what I do:

https://i.imgur.com/g1COQI6.png

https://i.imgur.com/cxbQgKG.png

And there we are! We are visualizing our characters, they are moving along with our pawn, can equip items and animate when the items are used. Clearly there is much room for improvement, but this should give you something to build upon:

1 Like

Hi, I asked this on the discord, but maybe it’s better here for posterity. Does the DCT integrate with your other kit, the Advanced Turn Based Tile Toolkit? That would be some awesome functionality if it did.

Hey, they don’t integrate super easily out of the box, but with a bit of work it should be possible for them to borrow quite a lot from each other. I am planning on creating a tutorial for this in the future.

Just submitted a new DCT update to Epic! It should be live in a few days. Check out my Trello for an overview (The list titles v.1.1): Trello

The biggest change is the modular item rules, which allow you to define rules for when and where items can be added to/removed from slots and when they can be used. Rules are added to two new arrays in the item data table and defined within two new types of Object blueprints. This consolidates a lot of the rules that were previously spread over multiple locations, such as needing to have enough mana to use an item, not being allowed to pick up passive powers, having to wait for item cooldown etc.

Utilizing these new rules I’ve also added bows that require ammo and a greataxe that requires two hands to use.

Also: Secret doors!

v1.1 (sent to Epic)

  • Modular item rules for when items can be added to/removed from slots and when they can be used
  • Secret doors
  • Bows with ammo
  • Two-handed weapons
  • Warning text for illegal actions
1 Like

A new tutorial is up on how to add and modify monsters:

I have tested converting DCT to UE5 early access and everything seems to be working fine. The appearence of the UI is different due to different defaults in the engines, but I can’t see any issues in the gameplay logic. If you are porting over a dungeon map from UE4 to UE5 you might have to recompile some of the BP_Interactable actors in the scene to make sure their grid placement is updated, but that is the only small issue I’ve encountered so far. I’ll be continuing to test DCT out in UE5 and will do my best to make sure that converting a project is hassle free.

v1.11 (live 18.08.21)

  • Improved turning precision
  • Item weight from data table. Currently used for pressure plates.
  • Fixed issue where stat penalties would not be subtracted when switching classes/races during character creation.
  • Fixed issue where weapon damage was always displayed as 0
  • Various bug fixes (see Trello)

v1.2 (live 24.09.21)

  • Starting items can now be added to character classes in DT_CharacterClasses
  • Items dropped on character portraits will now be added to the first available slot in their inventory
  • Fixed issue where clicking the split stack button would let you stack non-stackable items in hand
  • Fixed issue where items without a tooltip implementation (like the Key) said “Stats” in their tooltip
  • Fixed issue where clicking a power while holding an item left the item widget floating on the screen
  • Removed EStat enum (was unused)