Dungeon Log #0 – Introduction

Welcome to my first (zeroth) dungeon log.

In this I will be showing what I have done during my final year project for my computing degree on a weekly basis.


My project, that I am attempting to make a reality, is a dungeon crawler where the level generation is based on how the player plays through the dungeon.

What has happened already?

Some may be aware that I have had some preparation before starting this project. In two of the modules I took during the first term I created prototypes of individual components, for this project, to try out some of my ideas before I started.

Natural Computing

During this module, I created a process to use genetic algorithms with trees. The tree structure was created in such a way that the level would have generated by the parent node connecting to the child nodes, meaning that the number of rooms is equal to the number of nodes in the tree. Due to this, the fitness of the level was based off of the average difficulty of the level, number of rooms and the split between combat and puzzle rooms. The fittest 10 levels in the collection of unused levels would then crossover with each other with the remaining ones mutating slightly.

Here is the implementation for this mini project.

Games AI Programming

I created a dungeon generator using binary space partitioning (BSP), for this module’s project. This meant that the tree structure had changed because for BSP to work, a binary tree must be used. A second thing to note, also, is the tree represents the amount of space a room has on the plane. This sorts out the big issue that was very prevalent in the other tree structure; displaying the phenotype. The issue however with this structure is that it is difficult to crossover features that make a certain level great with another level. This then means it might be necessary to look at a shift of perspective for this project in terms of what to look for to make a level great.

Here is the implementation for this mini project.

Share this post:
Follow by Email

Leave a Reply

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