Step 1 - Create a simple room. Use
obj_block for now, we will improve on this later.

Step 2 - Create an obj_character.
It can be anything you want. Use something simple for now, you can
improve it later

Step
3- Moving Left and Right

We
will move at a speed of 4 pixels (you can change this if you
want)

Left Key Event

Right
Key Event

Repeat
for the right key (this time x will be +4)

Step 4- Gravity

To let the character fall down
we can use gravity. But it should stop moving when we hit the
floor. Also, you normally want a maximum falling speed, otherwise
the character will move too fast.

Create a Step Event to check if
the object is in the air. If it is apply gravity. Also set the
maximum vertical speed

Next we have to land correctly on the platform.

Add
a collision event with obj_block

Step
5 - Jump

Finally we have to let the character jump when the
up arrow key is pressed. But this must only happen when the
character is currently on the floor(or the platform) . So
we first test whether the position below the character creates
a collision and, if so, set the vertical speed e.g. to -10.
You might have to play a bit with the value of 10 for the
vertical speed and may have to modify the gravity to get the
effect you want.

Better
Graphics

The
Character

Create a character with two different sprites: one
for the character facing to the left and one for the character
facing to the right. If your sprite is animated you will also
need a sprite for when the character is not moving.

On the left button change the
sprite to left and on the right button change the sprite to
right

The Platforms and Walls

We will use tiles for our background. Tiles are
pieces of background images that are drawn at particular places
in the room. They do not have associated events nor do they create
collision. The good part is that they are fast and use little
memory. So you can create large rooms without the need for large
images.

To add tiles to your rooms you first need a background
image that contains the tiles. Tiles in a background image preferably
have a fixed size and have a little (1-pixel) border between
them so that they can easily be separated. A small tileset is
in the resources folder on K:Drive but you can find

Now, when creating a room, you can click on the
tiles tab page. You can select the tile set (that is, the
appropriate background resource). Now you can draw tiles by clicking
on the appropriate tile and next placing them in the room, like
you would do for objects. The right mouse button deletes tiles.
Use your imagination to create challenging rooms. (Note that you
can place tiles on different depth layers by adding layers. For
example, you can make a layer of tiles that lie in front of the
moving characters. We will not use them here but they are great
for giving a better 3D effect.)

Make the block objects invisible s0 you will not
see them.

There might be one problem here. The 16x16 block
objects will be too large to cover the background nicely. So we
want to make a few other block objects of size 16x8 and 8x16.
Again we make them solid. To avoid having to specify collision
events with these as well, we use the parent mechanism.

Threats and
Treats

Just jumping around from platform to platform is
rather boring. You definitely need some more challenges and goals.
In this section we treat a number of these.

Monsters

Let us first add some monsters. We will make two
monsters, one that moves left and right on a platform and the
other that flies left and right in the sky. Jumping on top of
it can squash the first one; the second one should be avoided
at all times.

Platform Monster

We need two sprites for it, one with the monster
facing left and the other with the monster facing right.

And
we need to add invisible block to stop the monster from falling
off the platform.

Whenever a monster touches it, it reverses its direction
of motion.

1.
Start moving the monster on Create

2.
Use End Step to change sprite image based on direction

3. Revese Horizontal direction on collision with
marker(invisible) or block

4. Squashing the Monster

Create a obj_monster_dead

When the character hits a monster, the character
should die. But actually, as in most platform games we like
to make it possible for the character to jump on top of the
monster and squash it.

In the collision event of the character with the
monster we will check whether we hit the monster from above
to squash it.

Flying
Monster

The flying monster is even easier. Do the same thing
but in the collision event of the character with the flying
monster, there is no squashing the monster

You might want to add some more monsters, e.g. with
different speeds, to make things harder. You can also make a monster
or rock that falls down or moves up and down. Just use your own
imagination.

Pits

Most platform games require careful timing of jumps
to avoid falling into pits. Falling into a pit normally kills
the character. Add a new object, called death. This object is
a red block that again is not visible. You can place it at the
bottom of the pit. (In the tiled room you can put some spikes
there.) In the collision event of the character with the death
object it should play a sound, wait a while, and restart the
room.

Collecting points

Most platform games have some mechanism in which
the player can collect points. Normally you have to pick up certain
objects or catch certain things. In our example the player can
collect mushrooms. So we make a mushroom object. To give a bit
of variation, the mushroom sprite contains 10 different mushrooms
sub-images.

The mushroom object picks one at random upon creation
using the ChangeSprite action:

In the collision event of the character with the mushroom object:

- play a sound, destroy the other object (that is, the mushroom) and
add 10 to the score.

In some platform games, collecting things has a
more important function than just raising your score. For example,
you might get an extra life when you collect enough objects. Also
there might be objects that restore your health (assuming monsters
don't kill you but simply weaken you), make you move faster, jump
higher, etc. Try adding some of these

Next Level

Of course there should be a way to finish a level,
so that the player can move on to the next level.

Create an obj_levelexit object. When
the character gets there you are moved to the next level.

Make the level exit only appear when for example
all mushrooms have been collected.

In the creation event of the obj_levelexit object, move it to a position – 100,-100 (so off
the screen).

Now in the step event of the object we check whether
the number of mushroom objects is equal to 0, and, if so, move
the object back to its starting position).

Level 2 -
More Motions

Ramps

It is nice if the player can walk up sloping ramps.
We will do this on the left and right keys

Rather than just testing whether the position to
the right is collision free we also test whether a position
8 pixels higher is collision free. If so we move the character
there and use the landing action to move it down to the contact
position.

Add an
Else to your if's

Repeat
with the left arrow key!!!!!!!!

Remember to change + to -

Ladders

People always want ladders in platform game along
which the character can move from one platform to the other.
This requires a bit of work. A ladder will be represented by
a thin vertical block that is invisible (the real ladder or
vine or whatever is used for climbing is drawn again using tiles)
and not solid. When the character is not in contact with a ladder,
motion should be as before. But when it is in contact with the
ladder things will be different. First of all, the character
should not fall down. So in the step event we have to make a
change, adding some actions that set the vertical speed and
gravity to 0 when in contact with a ladder. Also we set the
sprite to the climbing sprite in that case.

On the Step of the Character

Note: Make sure the mask of your ladder is set
to full block and check your center point

The second thing that needs to change is the event
for the up key. When the character is at a ladder, the up arrow
key should move it up, rather than jump. Again we need a few
additional actions for this. We test whether the character is
in contact with a ladder and, if so, move it up a bit.

Add an
if at the start of your up key and cha

nge
the current code to an else

Do
something similar for the Down Key

Using a view

Click on the views tab. Click on the checkbox
Enable the use of Views to start using views. Select the first
view andcheck the box Visible when room starts
to make sure this view can be seen. Give it a width of 300 and
a height of 200 (or something else that you like).At the bottom we can indicate which object to follow.
Here we choose the character. The view will now automatically
move to keep the character in focus. We don’t want the character
to get too close to the border. To this end we set the Hbor
and Vbor values to 64. There will now always be a 64 pixel
area visible around the character. Finally, to get a smooth view
motion we set the maximal view speed to 4. (This also gives a
very nice effect at the start because the character comes slowly
into view.)

Having the view is nice but it makes the window
in which things happen rather small. To avoid this, in the Global
Game Settings indicate a fixed scale of 200 percent. Clearly
you can play with these values to get the effect you want.

Shooting monsters

The next step is to enable the player to shoot monsters.
To make things a bit more interesting, the player first needs
to find some ammunition to be able to shoot. A

1. On create of the character
set an ammo variable to 0

2. On collision with obj_ammo
add 10 to the ammo variable (or whatever you want)

f. Destroy the bullet when it
leaves the room, hits a wall, or the monster.

g. Destroy the monster when it
is hit

A Score Panel

(We will use drag and drop to speed
things up)

A player now has a score and ammunition. We are
also going to give it some lives. Hitting a monster or falling
in a pit will cost a life. When the player has No More Lives show the
highscore table and restart the game.

Display the number of lives, the score, ammunition,
etc. on a panel. We are going to draw this in the Draw
event of the controller object. There is though a problem here.
Where should we draw it? We cannot draw it at a fixed place in
the room because the view changes and we want the panel always
in view. Fortunately we can ask for the position of the view.
This is indicated by the two variables view_xview and view_yviewthat indicate the left position and top position
of the view respectively. So we can drawthe panel with the information relative to this position. Here is a start
.... try the rest on your own.

Also draw an image when the player can shoot.

What next?

The sections above have explained some of the basics
of making platform games. Now it is your turn. Use these ideas
to create at least 3 additional levels.

Here are
some ideas you might try

·different
monsters, e.g. bouncing balls and monsters that shoot

·keys that
you need to find in order to open doors

·mines that
you can place somewhere and that go off when a monster (or yourself)
steps on them

·water to swim
in (this will completely change the motions; no gravity anymore,
or a mild upwards gravity until you reach the surface, limited
time before you run out of air, air bubbles to grab, etc.)

·walls and
floors you can destroy, e.g. by shooting them or jumping on them
with force