Metroidvania Generation
Non-Euclidean Trickery
A major challenge shared by both Metroid-style generators and randomizers is that it’s really hard to shuffle existing room designs into a novel arrangement that can still be drawn accurately on a 2D map.
One common solution is to teleport between rooms, which lets you place and “connect” them however you like, but itresults in spaces that don’t really feel like Metroidvania dungeons anymore. Since replicating “Dungeon Feel” was the main goal for this project, I had to find a better way to keep generation fast while still making everything feel cohesive.
My solution to this problem was to “spoof” perfect connectivity between adjacent rooms using Non-Euclidean Trickery™.
By instantiating and aligning rooms dynamically, we can place room exits anywhere we want along room edges, getting us the best of both worlds — flexible rooms that are just as easy to place as their rigid counterparts while being way more fun to design and play.
With some clever camera movements, we can almost completely disguise the discontinuities. I was really surprised by just how normal this feels in context — you may not have even noticed it in the other gameplay videos!