You are on page 1of 13

SMB3 engine help guide

By Pwyskowski
Game Controls (keyboard):
MapScreen: Arrow keys move Mario around, End - Pause, Enter-Enter a level

Game Levels:
Left/Right Arrows walk
Ctrl - Run/Fire/tail
Alt - Jump/Fly/Swim
Alt+Up – Jump higher out of the top of the water
End –Pause
Up - Enter a door / Upper pipe
Down – Duck / Enter down pipe
Enter – Open Treasure Chest
Alt (while holding Down)-Turn Tanooki into Statue (let go of down to change back
to Tanooki)

Debug/Cheat Keys:
MapScreen: + goto next room, 1-6 Change Mario's Powerup, M - Toggle Music,
Backspace=restart

Game Levels: + goto next room, F – Cycle through PowerUP'ed forms,


Backspace=restart., 2 – Activate Invincibility (Sorry reg. Users only right now),
1 – Deactivate Invincibility.

Game Controls (Gamepad):


MapScreen: Dpad to move. Button 2 to enter a level. Button 3 to pause.

Game Levels:
Left/Right -- walk
Button 2 - Run/Fire/tail/Open big chests
Button 1- Jump/Fly/Swim
Button 1+Up – Jump higher out of the top of the water
Button 3–Pause
Up – Enter a door / Upper pipe
Down – Duck / Enter down pipe
Button 2 (while holding Down)-Turn Tanooki into Statue (let go of down to
change back to Tanooki)
*To use a gamepad you must press J to toggle between gamepad and keyboard

Last Updated 10-22-05 Page 1/13


Bosses:
Thus far, there are 3 types of bosses in the SMB3 engine.
Boom-Boom: This is the boss that you see in the fortresses. The basic strategy
to defeating him is to either stomp him 3 times, use 3 fireballs , or 1 hammer.
Boom-Boom comes in four variations.
1. Stompboss (he just follows you and can be stomped without any worry)
2. Stompboss2 (follows you, but temporarily grows spikes on his back after
stomping)
3. Jumpingboss (same as above, but randomly jumps at you)
4. Flyingboss (This boss takes flight and flies randomly around the room)
SMB1 Bowser: This is the boss that you would see at the end of a world in the
castle in the first Super Mario Bros. He cannot be stomped. To defeat him, it will
take 3 fireballs, 3 hammers, or Mario hitting the axe to the bridge he stands on.
SMB1 Bowser comes in 3 variations.
1. Bowser01 (Randomly jumps and shoots fireballs)
2. Bowser02 (Randomly jumps and throws hammers)
3. Bowser03 (Randomly jumps, throws hammers, and shoots fireballs)
Larry Koopa: (This is the boss from the first world in SMB3) He can be stomped
3 times or fireballed/hammered 10 times to be defeated. Larry will climb stairs
(not too steep) to get to Mario and shoots magic from his wand. When making a
lair for Larry try not to make too tight of spaces or make any steps too steep
otherwise he may get stuck.

Last Updated 10-22-05 Page 2/13


BGFlasher
This is an invisible object that you can place in a room where you want the
background to flash at regular intervals. An example of this would be a
doomship. The bgflasher has 2 variables that must be set.

The first is myflashcolor which default is c_red . This is the color that you wish
to have flash in the background.

The second is mybgcolor which default is c_black . This is the color that you
wish the background to be normally.

To setup the bgflasher object, put the following code into the creation code of the
room.
instance_create(0,0,bgflasher)
//or place them in the room using the room editor

with instance_find(bgflasher,0)
{
mybgcolor=c_black
myflashcolor=c_red
}

*Note as of 3/12/05, there is a 2 nd Bgflasher that makes cannon noises available


for use as well.

Bridge/Axe
When Mario makes contact with the bridge axe, each Bridgepiece is destroyed
one at a time (in order of instance). If Bowser exists in the room, he will be
destroyed as well. An animation of him falling off the bottom of the screen will
occur when all of the bridge pieces are destroyed. Since the Bridgepiece(s) are
destroyed in order of instance, it is best to place them in the room in the order
that you wish to have them destroyed.

Last Updated 10-22-05 Page 3/13


Chests (Big and Small)
Variables that need to be set with Chests:
item_inside=Mush (set the item inside the chest)
roomdestination=room (if it is not set, collecting item inside will not send
the player to another room)
Big chests are usually for the Mushroom house but can be used in other rooms
as well. Mario must be standing in front of it (not moving) and the player must
press enter to open the chest.

with instance_find(big_chest,0)
{
roomdestination=room
item_inside=Mush
}

Note: when there are multiple Big Chests in the same room, all of the other Big
Chests will deactivate when one is opened.

Small chests are usually for hammer brother duels but can be used elsewhere
as well. By default they are invisible until all of the monsters in the room are
destroyed. However, you can make it visible in the room's creation code if you
wish to use it in another type of situation.

with instance_find(smallchest,0)
{
roomdestination=room
item_inside=Mush
}

Last Updated 10-22-05 Page 4/13


GameInit object
This must be placed on the title screen of any game you make with this engine ,
otherwise you will run into many errors. This object sets up and resets many
global variables. You can find this under objects/other.

lives=5 (Sets the number of lives a player starts with)

global.getcoin=0 (Sets the number of coins the player has)

show_score=false

global.savepowerup="small" (sets the starting powerup)


global.BigRed=false (Toggle for Big Red Switch)
global.BigGreen=false (Toggle for Big Green Switch)
global.BigYellow=false (Toggle for Big Yellow Switch)
global.Music=true (Toggle for Music being on/off)
global.current_map=TestMap (Sets the room/map that Mario
returns to when he dies)

global.just_died=false

global.gamepad=false (false for keyboard, true for gamepad)


global.outpipe="right"
global.stomp_tally=0
global.card1="blank" (initializes the card system)
global.card2="blank"
global.card3="blank"

Last Updated 10-22-05 Page 5/13


Map Screens: (see TestMap for example)
Put this code in the creation code of the room

With (instance_id)
{
sprite_index=maplevel1
roomdestination= room
instant_entry=false
blocking=false
}

instance_id represents the instance number of the MapLevel that you wish to
set the destination of.

sprite_index is used for choosing the Map Level icon for the instance. Default is
maplevel1.

Room is where you put the room name for the destination. Just using the word
"room" will just make it so nothing happens when Mario is on the icon with the
player pressing enter.

Instant_entry can be set to either true or false. If it is set to true, the player will
automatically enter the level upon contact with the Map Level icon.

Blocking is used to make it that Mario cannot pass a Map Level icon without
completing it first. The default is false for most MapLevel object except for the
MapFortress object, which is set to true by default.

MapFortress/MapLocks
The MapFortress object has 2 variables that can be set:

Destroylock Setting this to True will destroy an object on the MapScreen


which is set by using the mylock variable, usually this is a MapLock but you can
get creative with it if you’d like.

For example, in the engine demo:

destroylock=true
mylock=114649

mylock is set to 114649 which is the ID number of the instance of the MapLock
on the MapScreen. So when the fortress is destroyed, the lock is destroyed as
well.

Last Updated 10-22-05 Page 6/13


MapPipe:
This has 2 variables that can be set.

Roomdestination is used just like any MapLevel object to set the room you wish
Mario to travel to when enter is pressed while standing on it. If it is not set to a
room name, the pipe won’t send Mario to another room. Instead he will be sent to
another location in the same room by using the pipe_exit variable.

Pipe_exit is set to an object’s ID number (usually another MapPipe) that Mario


will be teleported to when enter is pressed while Mario is standing on the
MapPipe.

* See TestMap or TestMap2 creation code for example.

Maze Pipes:
Maze Pipes have 2 variables that can be set

Pipedestination must be set to in the room’s creation code to set where Mario
emerges when he enters this pipe. This variable MUST point to another Maze
Pipe or Mario will not emerge from anywhere. If this variable isn’t set at all, Mario
won’t enter the pipe. This can be helpful in making a one-way pipe.

Example (from Maze Room Creation Code):

with (118448) // Instance_Id of the first end of the pipe


{ pipedestination=118452 } // Instance_Id of the other end

with (118452) // Repeat with the other end and set its
{ pipedestination=118448 } // destination to the first pipe

Now you have a 2-way pipe. J

Scrollspeed is an optional variable that can be set. Its


default is 16. This is used to adjust the scrolling speed
used when Mario is moved from one end to the other. If you
don’t want any scrolling (instant jump to the other end),
just set the variable to –1. Also remember that if you
adjust this variable, you must set it to the same variable
in both connected pipe maze objects or one will scroll
differently than the other.

Last Updated 10-22-05 Page 7/13


NoteBlocks:
Mario bounces when standing on these blocks. If jump is held down while Mario
bounces, he will bounce much higher.

Warning: DO NOT PLACE ANY OTHER OBJECTS (LIKE OTHER BLOCKS)


UNDERNEATH A NOTEBLOCK BECAUSE IT WILL GET STUCK WHEN
BOUNCED ON!

Quicksand:
Mario sinks when standing on or in quicksand. Also, walking through quicksand
will slow Mario down. If Mario falls too deep (about 6-8 pixels from the bottom)
into a quicksand block, he will fall out of the bottom of it. If you have quicksand at
the bottom of room, I would recommend placing an extra layer of it underneath it
off the bottom of the room to keep Mario from falling through prematurely.

Roulette Block:
These are used at the end of levels. When Mario hits one of these from
underneath, he will get a ‘card’ and then return to the current mapscreen.
When Mario gets 3 cards, he will be rewarded with extra live(s).
If all 3 cards match, you will be rewarded as follows: Mushrooms (2 lives),
Flowers (3 lives), Stars (4 Lives).
If they don’t match, you will receive only 1 extra life.

Last Updated 10-22-05 Page 8/13


Scroller object:
Place the scroller object on the 7th square up and 7th square in for best results.
Change View 0 to follow scroller object. Keep Mario fairly close to the starting
point of the scroller object to avoid any bugs.

To get the scroller moving just use vspeed(negative values to scroll up) and
hspeed(positive values to scroll forward). The best place to do this is in the
room's creation code.

As a side note: I added what I call a "scroll trigger" to the engine example
(vines_to_climb room). This shows how you can make an object quickly change
to a scrolling screen when Mario reaches a certain point to give an extra effect or
to activate a boss.

2/21/2005 – Added an example of how to do complex scrolling using paths (See


Ship_Test room)

Start Pipes:
Start Pipes are for levels where you want the level to start up with Mario coming
out of a pipe. Simply place the start pipe that you want Mario to begin the level at
wherever you want but do not place a Mario object in the room. Also, you need to
set the view_object for view 0 to the start pipe that you used in the room. For
example in the “pipe_corridor” rooms, since Mario is coming out of a
startpipe_down that is the object that view 0 is set to.

Switches:
There are 3 types of switches.
The first is the coinswitch. This switch turns all coins into dud blocks and all dud
blocks into coins. The second type is the Bluebuttonu. This switch will destroy
all of the Blueblock(s) in a room. The third type is the giant switch. These
switches will turn empty blocks of the corresponding color into powerup blocks of
the corresponding color. Since the giant switches use a global variables, any
empties in other rooms will also be effected when Mario steps on it as well as
any other giant switches of the same color. This was designed to help make
multi-room puzzles.

Last Updated 10-22-05 Page 9/13


Teleport Doors:
These teleport Mario to another Teleport Door in the same room. To use just set
the destination_door variable in the room’s creation event. This variable MUST
point to another Teleport door or it will not work. It works exactly the same way
the Maze Pipes do. For example:

with (118487)
{ destination_door=118486 }

with (118486)
{ destination_door=118487 }

By using the proceeding code in the room’s creation code event, 118487 and
118486 are two Teleport Doors and they are now linked to each other. When
Mario is standing in front of one of the doors and up is pressed, he will be
teleported to the other door.

VineBlocks: (see flower_room for example)


Vineboxes are like item boxes except they produce a vine to climb if hit. To set
one up place it in a room using the room editor and then in the room’s creation
code, add the following code:

with(Instance_ID)
{
vines_inside=9
}

Instance _ID represents the instance_id of the VineBlock and vines_inside is the
number of segments long you want the vine that is generated to be. In this case
the vine is 9 segments long.

Vines: (See Vines_To_Climb room for example)


Here is a little trick to let Mario climb to the top of a vine and stand on it.

If you overlap a jumpthrough block with a climbable_object (vine), you can stand
on top of the vine (but not climb back down it). Then using Tiles, create a layer
(set the layer to 1) and place a graphic over it (in this case I used a cloud) to give
the effect that Mario climbed up onto the cloud.

Last Updated 10-22-05 Page 10/13


Warp pipes: (also applies to doors and locks)
Put this code in the creation code of the room

with (instance_id)
{
roomdestination= room
}

Instance_ID is the instance_id of the Warp Pipe that you wish to set the
destination.

"room" is where you put the room name for the destination. Just using the word
room will just return you to start point of the room you are already in.

Water:
When Mario comes in contact with water, he will go into swim mode.

There are 3 different sized water blocks to make placing it easier than ever.
When Mario is at the top of a body of water, the player may press up and jump at
the same time to jump higher out of the water. As a cautionary note, Mario will
fall out of the bottom of a water block if he is too close to the bottom of it(about 8
pixels). In a level where you have nothing under the bottom of the water (like a
pit), it's a good idea to put a couple of the smaller water blocks underneath it off
the bottom of the screen to keep Mario from falling prematurely, the same goes
for quicksand.

Last Updated 10-22-05 Page 11/13


Special Enemies:
Angry Sun: Best placed about 8 blocks up from where Mario Starts. The Angry
Sun will follow Mario and randomly dive down at Mario. The Angry Sun can only
be destroyed by a hammer or by an invincible Mario. There are 2 versions of the
Angry Sun. Both behave the same, however angrysun2 will repop shortly after
being killed.

Bob-Ombs: These little buggers will start flashing and then explode after a
random amount of time. They can be stomped to stop them from moving and
then kicked around by Mario. The only way they can be destroyed is by hammer
or by an explosion by another bomb. There are 2 versions that can be placed in a
room. The first starts its countdown to explosion immediately after being created.
The second waits until it comes into view. I would recommend using the second
version for most stages. The first version is generally used with the
Lakitu_bomber object. As a side note:explosions from bob-ombs destroy
breakable bricks.

Bombing Lakitu: This guy drops bombeggs down at Mario. There are 3 versions
of it. The first drops bombeggs that become bob-ombs. The second version
drops bombeggs that explode on impact with any solidblocks. These explosions
will destroy any breakable bricks that they come in contact with. The third version
of the lakitu_bomber randomly drops bombeggs that explode on impact and
those that turn into bob-ombs. Bombing Lakitu's just like any Lakitu, is best
placed above Mario about 9 squares or about 11 squares from the bottom of the
view.

Blooper: These squids will stalk Mario wherever he is. There are 2 versions. The
first can be placed anywhere in a room and will start moving towards Mario when
they come onto the screen. The second type are best placed outside of the room
(far left or right, I don't recommend having them off the bottom of the screen) and
they will periodically repop if destroyed.

Cheap-Cheaps: Cheap-Cheaps come in 4 versions. The first is a stationary fish.


The second moves left and right (use blocks or blockers to keep in an area). The
third works like the second except that it moves up and down. And finally the
fouth just moves to the left from off the screen and repop periodically. These are
best placed off the right of the screen.

Flying Fish: These cheap-cheaps continually fly up from the bottom of the
screen towards Mario. Place them off the bottom of the screen and they will
continue to repop after being destroyed by Mario of by falling off the screen.

Last Updated 10-22-05 Page 12/13


Invincible Flowers: These baddies cannot be destroyed. There are 3 versions
available for use. The first do not move and can be walked on by an invincible
Mario. The other 2 move up and down (best placed inside mini-pipes). The
moving invincible flowers by default will always pop in/out at the same time. To
get them to come out at different periods use the following code in the room's
creation code.

with (instance_find(invincible_flower02,0))
{alarm[2]=105}

alarm[2] is the alarm used for the initial delay before the
flower first starts moving up/down.

Please see the flower_room for an example

JellyFish: These are completely indestructible and do not move. Mario will take
damage it he comes in contact with one (unless he is invincible).

Paragoombas: These come in 2 versions. The first moves like a regular goomba
except that it hops every once in a while. The second hovers in the air, dropping
baby goombas like they were bombs.

Ptooie Plants: These come in 2 versions. One walks back and forth, while the
other is stationary and should be placed atop of a pipe.

Spiny: Use the Spiny2 when placing them directly in a room. The other is used
by Lakitu and self destruct when out of view.

Last Updated 10-22-05 Page 13/13

You might also like