squid-man / MegaMan2Randomizer2

Mega Man 2 Randomizer
8 stars 4 forks source link

Reminder: Research level generation #79

Open dagit opened 3 years ago

dagit commented 3 years ago

One style of level generation that may be a good fit for us is level-headed: https://github.com/Coolcord/Level-Headed

madewokherd commented 3 years ago

It's a bit far down my todo list but I was thinking of working on this.

My thinking was to start by changing our approach to patching the levels to disassemble them, modify them, and then reassemble them into the ROM. This would hopefully be easier to understand than patching hard-coded offsets. Changing enemy types could also be done in a more generic way.

We could then work on enemy placement randomization within the current levels. The rules should be specific to enemy type. Examples: Sniper Joe only really makes sense when placed on the ground, but bats could be anywhere including in walls. We might want to eventually come up with more advanced restrictions for tin cans or fan friends.

Level geometry could then be randomized, gradually adding "styles" based on existing stages and replacing bits of them. Boss rooms would probably be simplest to start out with. Once we have randomized geometry for the regular stages, we could use the existing enemy placement randomization with them.

I do need to look into how Level-Headed does this.

I was thinking for "sparse" areas like air stage, we could place platforms based on gaps that are within Mega Man's jump arc (starting with the assumption that you jump from the center of one tile to the next, which should prevent barely-doable jumps, and maybe that could be relaxed for more platforming difficulty). It'd be cool to also add "side paths" containing pickups but with the possibility of requiring movement items to get there. I'm not sure how to approach interior/tunnel/maze styles.