What is Dungeon Resolver?

Dungeon Resolver is a project developed initially as a university assignment for the “Intelligent Systems” course, focusing on Automated Planning. The project utilizes the unified-planning library to implement a planner and simulator for resolving randomly generated dungeon instances.

Unified-planning reads the pddl dungeon domain file, that define the dungeon’s structure, specifying the problem types (object), predicates (fluents), functions (numerics) and the actions that a hero can performe inside the dungeon.

Note

A dungeon is made up of rooms, connected to each other, sometimes separated by closed doors: inside them it’s possible to find keys to open doors, treasures to collect, enemies to defeat, weapons to fight them and healing potions. All these items (except keys) can have different values (E.g. different strength of enemies or more valuable treasures). In an abstract way it’s possible to represent the dungeon as an undirected graph.

Instead, for the pddl dungeon instance file is possible to choose one of the following option:

  • Generate and solve a random dungeon instance: Dungeon Resolver generates a random pddl dungeon instance file after the user has specified the desired number of rooms and the seed for the random functions. Then calls a unified-planning function to solve the problem. Finally it’s possible to run the dungeon GUI and to view the abstract graphical representation of the dungeon.

  • Solve an already existing dungeon instance: It’s also possibile to read an already existing pddl dungeon instance file and to call the unified-planning function to solve the problem, printing the result. In this case the GUI is not available.

Note

To solve the problem hero needs to:
  • survive (hero life always greater than zero)

  • collect at least a pre-established percentage of treasures

  • defeat at least a pre-established percentage of enemies

  • reach the exit room and escape from dungeon