Metroidvania Generation

 In 2015, l learned Unity by building a procedural Metroidvania game.

Rogue Legacy had just come out, and I was fascinated by the idea of a roguelike that feels like a Metroidvania game. Don’t get me wrong — RL is a personal favorite and the primary inspiration for this project! — but I really wanted each run to focus on exploring a cool new space, finding exciting upgrades and using them to fight monsters, unlock new locations, and uncover secrets.

To nobody’s surprise, this turned out to be a terrible idea for a first project!
Not only was the scope way too big, I later found out that my indie-dev idols (EXOK, Cellar Door Games) had already tried to do the same thing and largely abandoned their first attempts in order to focus on games that were much more fun and way easier to make.

Despite that, I’m still working on it, albeit slowly. With some help from my friends (thanks, Andrew!) I’ve been building (and discarding) prototypes, wrestling with tricky design challenges, teaching myself to make pixel art and game music, mastering CorgiEngine, and gradually chipping away at this thorny problem in my spare time.

I don’t know if I’m any closer to shipping this game, but I’ve certainly made some cool stuff along the way.

Gameplay

doublejump-item-gif.gif

Classic Metroidvania Action

Fill out the mini-map by wandering through a world full of upgrades, enemies, secrets, and shortcuts.

 
doublejump-adapter-grapple-gif.gif

Powerups Worth Hunting For

Exploring the a new world shouldn’t feel like a fetch-quest. That means avoiding simple lock + key systems in favor of upgrades that open up new areas to explore by changing the way you move and fight.

 
doublejump-challenge-gif2.gif

Tight Platforming

Movement upgrades synergize with one another, encouraging the player gain mastery by tackling familiar rooms in new ways.

CorgiEngine provides a solid base for building out lots of different platforming mechanics, including Celeste-style dashes, wall-jumps, and grappling hooks.

 

Generation

 
big_map_generation_0.gif

Big Dungeon Energy

The generator attempts to create a map feels like a physical, interconnected space. It has distinct zones, a clear gameplay narrative, and just the right amount of dead-ends, backtracking, and optional content.

 
mandatory_modulations_cropped.gif

Modular, Hand-Designed Rooms

Room templates are designed by hand in Unity using the native Tilemap and Prefab editors, along with a bunch of custom scripts.

Rooms are then modified as needed during dungeon generation by changing tilesets, enemy spawns, and even the exits to other rooms!

 
keypoint_route_placement_trans_4.gif

Narrative Planning

The generator starts with a narrative specification, which describes what items should exist in a given world, where they should be placed, how they block access to new areas of the dungeon as the player progresses.

These specifications are derived from a combination of hand-designed templates and random mutation, resulting in dungeons that always feel good but are never exactly the same.

 

 

Related Posts