What is the Megamix Engine?
Megamix Engine Logo

The Megamix Engine is a fan-made, general-purpose software for GameMaker Studio 1, created to help people make their own Classic-style Mega Man fangames. It boasts an absurd number of assets, including an ever-growing assortment of enemies, bosses, gimmicks, weapons, tilesets, music, and sound effects from Mega Man 1-10, Mega Man & Bass, all five Mega Man Game Boy games, Powered Up, The Wily Wars, and even the DOS games and Rockman & Forte: Challenger From the Future! The later MaGMML games run on Megamix.

If you're looking for a modern, robust engine for your Mega Man fangame, this is it! We're continually expanding and polishing the engine, so check back periodically to see what's new.


Getting Started With Megamix
Step 1: Download the latest public release of the Megamix Engine (currently 1.0.3.1) here.

Step 2: Download Batch 1 and Batch 2 of the updated devkit assets and extract them into the "objects", "sprites", and "sprites/images" subfolders (as appropriate) within the "MegamixEngine-1.0.3.1" (or whatever you named it) folder on your computer. Select "Yes to All" when asked if you want to replace the existing files.

Step 3: Download GameMaker Studio (GMS) 1.4 (abandonware) here.

Step 4: If you've never used GMS, search for resources online to teach you how. Members of our community have recommended the video tutorials on the Let's Learn GameMaker: Studio YouTube channel. This tutorial assumes you have at least a basic understanding of GMS and coding.

Step 5: Open GMS and load "MegamixEngine.project.gmx", then BE PATIENT: Megamix can take as long as 30 minutes to fully load, during which time the drop-down menus will flicker and disappear, making it impossible to work.

TIP: To speed up load times, go to File > Preferences... > General and check the box for "Disable Thumbnail Icon Generation". The project will load much faster, but the drawback is that you won't be able to tell at a glance what each asset is, so we recommend leaving this setting alone until you're sufficiently familiar with the engine.

ADDITIONAL LINKS: Megamix Tutorial Videos | Megamix Documentation Wiki | GMEdit


Basic Concepts in Megamix
Assets in Megamix are divided into categories for easy reference (see the folder structure in the sidebar of the main GMS window). Note that these categories have no effect on how anything functions; they simply make it easier for you to find what you're looking for.
Megamix Folder Structure Example
A few categories are subdivided by the game in which the assets first appeared; these include the first ten main games in the series (MM1 [which includes Powered Up to MM10), Mega Man & Bass (MM&B), the five Game Boy games (GBI-IV and GBV), Mega Man: The Wily Wars (WW), the two DOS games (DOS), and Rockman & Forte: Challenger From the Future (CFTF).


ROOMS

Rooms (asset prefixes: lvl, rm) are where everything in the game takes place. The title screen is a Room. The credits screen is a room. Each hub in the MaGMML games is its own Room. Levels are often one Room, but they may be made up of several Rooms; for example, MaGMML2's "A Mega Man For All Seasons" uses a different Room for each season, and teleporters take the player from one Room to the next.
Megamix Room Example
Megamix includes two premade rooms worth mentioning here. "lvlCopyThisRoom" is a template for creating your own levels and hubs. "rmInit" is a special Room that is required for the game to run; don't mess with it!

Because the default screen size is 256 pixels wide by 224 pixels high, Room width and height should be divisible by 256 and 224, respectively. This can be adjusted in the "settings" tab of the Room Properties window. Ideally, Rooms should be slightly larger than you actually need for your level (usually 1-2 screens of empty buffer space along the edges of the Room), in case you need to expand or reshape the level later on.


OBJECTS

Objects (asset prefixes: prt, obj) are everything visible and invisible that make the game work and give the player things to interact with. Spikes, icy floors, conveyor belts, Metalls, the hippo miniboss, E-Tanks, Mega Buster bullets, Guts Man, the boulders Guts Man throws, the shrapnel from the boulders Guts Man throws, boss explosions, NPCs, NPC dialogue boxes, checkpoints, the autoscrolling gimmick, the invisible dividers that keep your screen from scrolling too far, the pause menu, and Mega Man himself are all examples of Objects.
Megamix Object Example
There are several "Don't Use" subfolders, which contain Objects that work behind the scenes to make the engine function correctly. One example is "prtEntity", a parent Object that acts as a template for most of the things the player can interact with in a level. Unless you're designing your own game or investigating how the engine is coded, everything under "Don't Use" should be left alone.

Some Objects require helper Objects (such as "objGenericStopper" and "objFallingTowerStop") or customized Creation Code to operate correctly. If you're unsure how to use an object, either consult the documentation wiki or open the Object's code. Many Objects have comments in their Create Event describing their function. If you see "@cc" in a comment, it means that information is included in a table on the documentation wiki.
Megamix Creation Code Example
It also helps if you've played or watched a playthrough of the Mega Man games represented in the engine; the Mega Man Knowledge Base is a great resource if you want to learn more about how these Objects are used in the official games.


SPRITES
Megamix Sprite Example
Sprites (asset prefix: spr) are graphics that represent Objects. A Sprite may have multiple frames (for example, "sprSplash", which is used to create the splash effect when certain Objects enter and exit water), and an Object may use multiple Sprites (for example, "objCrashMan" uses one Sprite for walking and another Sprite for jumping). You probably don't need to worry about Sprites unless you are modifying existing Objects or creating new ones.


TILESETS / BACKGROUNDS

Tilesets (asset prefix: tst) and Backgrounds (asset prefix: bg) are graphics used to decorate Rooms. Whereas Tilesets are broken into individual tiles that can be pieced together as you see fit, Backgrounds are intended to be used in their entirety, often with a scrolling or parallax effect (see the "backgrounds" tab in the Room Properties window and "objParallax"). Tilesets and Backgrounds are both found in the "Backgrounds" asset folder.

Note that Tilesets and Backgrounds are purely aesthetic; floor tiles aren't solid and spikes aren't hazardous unless you place the appropriate Objects.
Megamix Tileset Example
It's good practice to place foreground and background graphics on different Tile Layers; you're less likely to tile over something by mistake that way. Also, some Objects interact with the tiles on a specific layer (for example, "objTileAnimation" and "objRevealingTiles").

Remember that Tile Layer is essentially the same thing as Depth (for Objects), and that graphics with lower numbers are displayed in front of graphics with higher numbers. Because most Objects have a Depth of 100 or less, the default Tile Layer is 1000000 to ensure that tiles never block the player's view. However, there are situations where you might want to place tiles in front of objects (for example, a secret passageway or a translucent fog effect covering the screen); a Tile Layer of -5 is usually ideal.


SOUNDS / MUSIC

Sounds (asset prefix: sfx) are sound effects intended to be played once or looped indefinitely. Sound assets are loaded directly into GMS. You probably don't need to worry about Sounds unless you are modifying existing Objects/Scripts or creating new ones.
Megamix Sound Example
Music (file types: .gbs, .nsf, .ogg, .spc, .vgm, .vgz) is saved externally in the datafiles/Music subfolder. Music is implemented by adding the "playMusic" script to a Room's Creation Code or by adding "objMusicChanger" to a Room.


SCRIPTS

Scripts (no prefix) are lines of code that perform special and often complicated functions. For example, "loopSFX" can be added to the code of an Object, Room, or Script to play a Sound on infinite repeat. Scripts are beneficial because they allow you to use a single line of code to run multiple lines of code.
Megamix Script Example
For example, if you wanted an Object to instantly end the level, you could either use this complicated chunk of code...
assert(global.inGame, "Tried to end stage without being in a stage");
global.endStageOnRoomEnd = false;
ds_list_clear(pickups);
global.timeStopped = false;
print("Ending Stage");
with(prtLevelCallbacks)
{
    event_user(1);
}

...or you could use the simpler "stageEnd" Script, which looks like this:
stageEnd();
Both options perform the exact same function, but the Script is faster and easier to add, with less room for error. Another benefit of Scripts is being able to make changes to frequently used code without needing to manually update every single Object, Room, and Script that uses it.

Needless to say, you probably don't need to worry about Scripts unless your level or game uses a lot of custom code.



GMEdit
The default GMS editor has a lot of annoying shortcomings. Running big projects such as Megamix can be very time consuming; even single line edits can take ages to test. Editing multiple resources at once can be awkward with all the popup windows. GMEdit is a third-party program that addresses these shortcomings, allowing you to more effectively edit and test code for GMS projects.

GMEdit only saves the individual files that were edited instead of re-saving the entire project every time, and by opening everything in tabs in a single window instead of in individual popup windows. We highly recommend you try it out if you're having issues with the normal GMS editor.
GMEdit Window
Note that GMEdit can't edit Sprites, Sounds, or Rooms, among other things. It is primarily for quickly editing and testing code. You still need to open the project with GMS in order to test or build the project. Changes that you make to new objects also won't appear in GMS until you close and reopen it. That being said, GMEdit is still very worthwile to use if you are doing a lot of programming.

For more information about GMEdit, including how to download, click here.


Good Luck, Mega Man!
There's far more to Megamix and Game Maker: Studio, but this should be enough to get you started. Also be sure to check out the video tutorials!