Dankest Dungeon (C++ UE4)

Dankest Dungeon was my final year group project. The composition of the team was as follows:

  • Two programmers (I was one of the two)
  • Two game designers

There were no artists available, so we needed to make use of freely available assets. This caused some limitations with regards to player animations.

The game is a side-scrolling role-playing game. The player would attempt to get through the entire dungeon, dealing with turn-based random encounters.

My responsibilities

  • Tooltip system
    • The tooltips appeared when hovering the mouse cursor over a UI interface object, such as your gold counter and an item in your inventory.
  • Item database system (JSON)
    • JSON was selected over other systems.
      • SQL: A SQL system needed to be set up, and the time cost of doing so and making sure it was working was not worthwhile compared to using JSON, which was already implemented and tested by Epic Games.
      • XML: JSON’s notation system was cleaner, mainly due to the absence of end tags, eg.


        compared to

        tag: Stuff

      • CSV: Easy to implement. However, not every item made use of every stat. It would introduce a lot of wasted space, and would make it more difficult to read. With JSON, you only include what is needed per item.
    • Each entry in the database included:
      • Item’s unique ID
      • The name and flavour text of each item
      • Any stats (if any) that would receive a boost when equipping said item
      • A reference to the image file used to represent the item
  • Procedural Generation
    • The following game features had elements of procedural generation:
      • Monster selection in random encounters
      • Dungeon rooms
        • Each dungeon room had variable lengths, as well as random placement of clutter.
  • User Interface Functionality
    • Unlike other aspects of the game that I was involved with developing, the functionality of the user interface was not done in C++. This was implemented using Blueprint.

Leave a Reply

Your email address will not be published. Required fields are marked *