Maze Warp
| Maze Warp | |||||||||||||||||
| |||||||||||||||||
| Animated GIF of the Maze Warp gimmick in action. | |||||||||||||||||
| |||||||||||||||||
The Maze Warp is a generic gimmick in the Make a Good Mega Man Level series. It is a device that can change the location of the camera and take Mega Man to another screen, allowing for the creation of infinitely-looping mazes and non-Euclidean level layouts.
Maze Warps first appeared in Make a Good Mega Man Level 2, and were created as a custom gimmick for the stage Cyber Man. They went on to be used in Null and Void, in Make a Good Mega Man Level Remastered for the remake of Be the Bigger Person, and in the Make a Good Mega Man Level: Episode Zero stages Defeat the Giant Spear Man!, Metropolitan Neapolitan, Stormy Spire, and Code Landfill.
Following MaGMML2, Maze Warps were included with the Megamix Engine as a devkit asset for Make a Good Mega Man Level 3 and Make a Good 48 Hour Mega Man Level.
Behavior
Maze Warps are an advanced object that can be difficult to set up. When placed in the upper-left corner of a screen, they will instantly take Mega Man and the camera to a new screen as specified in creation code. They will not work while a screen transition is occuring, and so draw any tiles at the destination to seamlessly make it look like the transition naturally leads to the destination. This often requires creating an empty "junk screen" that exists just for the Maze Warp.
Maze Warps have the following creation code variables:
- camX - Determines the new x coordinate of the camera. This is intended to match the top-left corner of the destination screen.
- camY - Determines the new y coordinate of the camera. Like camX, this is intended to match the destination's top-left corner.
- tileCheckStart - The lowest number tile layer to check for.
- tileCheckEnd - The highest number tile layer to check for. The distance between this and tileCheckStart should be kept as low as possible to avoid long room load times.
- tileDistanceCheck - The distance between tiles to check; by default, this is set to 16.
