Pokémon Dungeoneer
it's a monster house!
overview
- Project Name: Pokémon Dungeoneer
- Project Length: 40+ hours
- Start Date: October 2022
- Technologies: Next.js, TypeScript, React, HTML, CSS
links
in short
Pokémon Dungeoneer is a generation and analysis tool for Pokémon Mystery Dungeon: Explorers of Sky's dungeons. It is the sister project to dungeon-mystery and serves as a front-end web application for experimenting with the dungeon algorithm's numerous settings.
how it works
Pokémon Dungeoneer provides the tools necessary to analyze PMD dungeon layouts and understand both how the algorithm settings work, as well as how the layouts themselves are built!
extensive customization

All of the options provided by dungeon-mystery are made available within Dungeoneer. This allows you to easily and quickly customize dungeon outputs to your liking, then generate dungeons as many dungeons as you wish to see how it impacts the output! You can also import and export your settings to use them again later!
help text

Every single option for the algorithm provides in-depth help text so that you can understand how they work! All of the values represent how they'd actually function in the algorithm itself, which means that some options may work in ways that might seem unintuitive otherwise!
For example, many options only use their starting value as a base, like Room Density, which is later randomized a bit more to ensure layouts with the same generation settings still have variety. Some options use negative values to represent wanting an exact value, while others are just very miscellaneous and only relevant in very niche scenarios.
generation steps

The most important, exciting, and fun part about Dungeoneer in my opinion is the Generation Steps. These mean you are not limited to just seeing what the final dungeon layout looks like. You can see exactly how it came to be in the first place, and potentially even prior layouts that were rejected in the midst of its generation!
a fun example!!
Above is an example video of Generation Steps in action. This is an Outer Rooms layout, which initially attempts to generate a 2x3, then a 2x2, then finally succeeds with a 4x3.
As I mention a bit on the dungeon-mystery page, Outer Rooms layouts with a grid size with x = 2 have a bug! This causes the two resulting columns of rooms to never be connected to each other by the expected connecting hallways, and the majority of the time these layouts fail the strongly connected validation check and are thrown out.

Pokémon Dungeoneer provides an optional fix for bugs like this, which allows these sorts of layouts to generate properly!
The existence of this bug has the potential to lead to very unique (but rare) layouts which, despite their intended connections not being fully complete, still manage to be strongly connected by the time it is checked.
Take a look at this video! It showcases an example of this phenomenon, and I intentionally slow down to show the end of the primary connecting hallways and the way the layout is miraculously saved!
This is made possible by Extra Hallways, which are essentially just winding offshoot paths from rooms that travel in a random direction, occasionally turning left or right until they run into something and stop. You might know these as the weird paths that loop on themselves and don't go anywhere, but there can be times where they actually are the only reason the floor is valid at all!
The joy of discovering unique quirks like these is why I really love this project. There's so much to find and learn that you wouldn't see from just playing the game!!
the story
This was actually my very first web development project! It takes heavy inspiration from a similar tool made by Corvimae called Pokémon Ranger (not to be confused with yet another side series of Pokémon games of the same name). If you compare the projects, you'll notice very similar structures and CSS, which is quite simply because I had never done this sort of thing before!
I knew from the start that I wanted both a web application and a dungeon algorithm library, modeled after how May did Pokémon Ranger (a suite of Pokémon speedrunning tools) and relicalc (the Pokémon math library).

The image above is the earliest concept I could find for the site layout, which I mean, ultimately does resemble what the design would end up looking like!

I initially started with a more purple color scheme, because I like purple (!!!), but it didn't end up sticking. Later on it developed into the more magenta-ish shade it has now.
Side note: Finding old concepts is hard, because often I'm stuck searching messages with people I told about the project (thank you to everyone I yapped to).
Now stop reading this and try the website for yourself!