shooters in gamemaker

Post on 31-Dec-2015

74 Views

Category:

Documents

12 Downloads

Preview:

Click to see full reader

DESCRIPTION

Shooters in GameMaker. J Parker. Scrolling Shooter. In a scrolling shooter the player controls an object, for example a plane, spaceship, or car, which moves over a scrolling background. Obstacles appear on the background that must be avoided and enemies appear that must be shot. - PowerPoint PPT Presentation

TRANSCRIPT

Shooters in GameMaker

J Parker

Scrolling ShooterIn a scrolling shooter the player controls an object, for example a plane, spaceship, or car,

which moves over a scrolling background.Obstacles appear on the background that must be avoided and enemies appear that must be

shot.Often bonus objects appear that can be picked up for addition benefits.Examples: Space invaders, Galaxian

1945The player flies in a plane over a sea and enemy

planes try to destroy the player.

Variable

A new concept in GameMaker, a variable is a property of an object that can be changed.

- The position of an object has an X and Y value- The speed of an object has a horizontal and a

vertical part- The score is a variable- The height and width of the room are variablesEtc etc etc

Variable

A variable can be used to save an important value for later use (EG position of an enemy)

A variable can represent a property of an object that is important and needs to be used by the game.

A variable can be modified by the game, thus modifying how the corresponding object looks and behaves (EG change object’s speed)

Variable

Changing a variable’s value is done as follows:On the CONTROL tab find

Testing a value uses the button.

Setting a variable

Testing a variable

1945 Design• Description• In this game you control a plane flying over a sea. You encounter an increasing number of enemy planes that try to destroy you.

You should avoid these or shoot them. The goal is to stay alive as long as you can and to destroy as many enemy planes as you can.

Game objectsThe background is formed by a scrolling sea with some islands. The player’s plane flies over this sea. You can shoot bullets that

destroy enemy planes. There are four types of enemy planes: a plane that you encounter and should be destroyed, a plane that fires bullets downwards, a plane that fires bullets towards the player’s plane, and a fast enemy plane that comes from behind rather than from the front.

1945Game objectsThe background is formed by a scrolling sea

with some islands. The player’s plane flies over this sea. You can shoot bullets that destroy enemy planes. There are four types of enemy planes: a plane that you encounter and should be destroyed, a plane that fires bullets downwards, a plane that fires bullets towards the player’s plane, and a fast enemy plane that comes from behind rather than from the front.

1945SoundsThere are some explosion sounds and there is

some background music.ControlsThe player controls the game with the arrow

keys. With the space key you fire a bullet.Only one bullet can be fired every five steps.

1945Game flowThe player immediately jumps into the game.

The player has three lives. When all lives are gone a high-score table is shown. Pressing the <F1> (help) key will give a brief explanation. Pressing the <Esc> key will end the game.

LevelsThere is just one level, but more and more

enemy planes will arrive: first only the easy type but later the more difficult types.

Motion – An IllusionThere are two possibilities for creating the motion illusion:• use a tiling background image that moves downwards through the room. • build a much larger room but only show part of the room using a so-called

view. This view slowly moves upwards over the room. We will use a moving background.

WaterWe need a background image that looks like a

sea viewed from above. We add the following small image as a

background resource to the game and give it the name back_water:

Filling the background with it will give a nice looking sea.

WaterIn a scroller, the background image should move. To create a room with a moving background, add

a room to the game in the familiar way. At the left click on the tab labeled backgrounds. We need to change three settings here.

1. First of all, because we are going to fill the whole room with the background image, so uncheck the box labeled Draw background color.

WaterSecond, in the middle click on the menu icon

and select the back_water background image. The default setting is to tile the whole room with it so this is what we want.

Finally, we need to make the background move. To this end, at the bottom, set the Vert. speed to 2.

Now try it.

Motion, water, islands, ...• To enhance the feeling of motion we are

going to add a few islands to the sea. • An easy way would be to create a larger

background image and add the island to this background. Iislands will appear in a regular pattern, which the player soon notices. (Bug Bunny) So we choose a slightly more complicated approach and add the islands as objects.

Motion, water, islands, ...Create three sprites with the following images

We will never use them for collision checking so uncheck the box Precise collision checking.

For each of the islands we create an object. In the creation event we give the object a

vertical speed that is the same as the scrolling speed of the background.

Motion, water, islands, ...• To make sure that all other objects will stay

above the islands we give the island objects a Depth of 10000.

• (You must run Game Maker in advanced mode to be able to do this!) Instances of objects are drawn in the order of the depth. The instances with highest depth are drawn first. Instances with lower depth are drawn on top of them. So by giving the islands a high depth they will always be drawn first and lie below the other objects.

Now – a trick!When the island disappears below the bottom

of the room we want to make it reappear at the top. In the Step event of the island we test whether the island disappeared below the screen and, if so, let it reappear at the top.

Note that the variable y indicates the vertical position of the instance.

...... a trick!A value of 0 corresponds to the top of the

room. The variable room_height indicates the height

of the room. So the island disappears below the bottom of

the room when y is larger than room_height.We can use the action to test variable values to

see whether the island lies below the room...

...... a trick!So: When the island moves off of the screen at

the bottom, and can not be seen any longer, it causes a copy of itself to be made above the screen (where it can not be seen) and at a random horizontal position.

It will then move down, onto the screen (becoming visible) and off again, repeating...

Only one instance will be seen at a time.

This is actually computer programming!

...... a trick!

Motion Motion

...... a trick!You can use a variable name, and can actually

type full expressions here.

So the process is:In Island object select a STEP event and choose

the ‘If a variable has a value’ action.The room (what you can see) has a vertical size

(in pixels) of room_height, and starts at a value of 0. This is the ‘y-axis’ as they told us in high school.

The position of the island is the variable y.So if y > room_height then we want to move

the island.

Where to move to?Negative values of y are above the screen

(room). Move islands to y = -65

Moving to the same x position is dull. Select a random x within the room

random (room_width)This is in a jump to a given position box in the

same STEP event.

The player’s airplaneIs controlled by keys.The sprite we’ll use is a small GIF animation.

Makes it look like the propellers are moving.Can shoot – space key.Should look like the shooting comes from the centre of the plane. Sprite is 65 pixels, centre is 32,32

PlayerMotion events (initially) are the arrow keys.Plane must not leave the room, so check!

<left> if X is larger than 40 Jump to given position -4, 0 relative to current.

PlayerSimilar for the other 3 directions:

<right> if X is smaller than room_width-40 Jump to 4, 0 relative to current. <up> if Y is larger than 40 Jump to 0, -3 relative to current. <down> if Y is smaller than room_height-120 Jump to 0, 3 relative to current.

The player’s cannonWe need a bullet sprite. We put its origin in the centre as we did for the main plane. To make it a bit spectacular we use a rather large bullet. Exaggerating things is often important in games.Create an object with this sprite.Creation even: give it a vertical speed of –8 to make it move upwards.Destroy it once it leaves the room - in the step event we test whether the variable x is smaller than –16.

The player’s cannonIn the plane’s object box, make an event for pressing the <space> key.

This event creates a new bullet instance.

An idea: only create one if there are no others. Use the TEST INSTANCE COUNT as we did with diamonds before.

The player’s cannonWe don't want too many bullets too fast. How about two bullets every second?This is one bullet every 15 steps.

Use a variable can_shootThis is created in a create event for the plane by using a set variable command box. We initially

set can shoot to 1 (true)

CAN SHOOTNow in the event, keyboard, space key event:– Is CAN SHOOT equal to 1? If so, create a new bullet in front of the plane (0,1-6) set CAN SHOOT to 0. Set alarm0 to 15.

alarm0 ???

AlarmsAn alarm is an ‘automatic’ event that happens

when a specified number of game steps have taken place. It is like a timer.

If we set alarm0 to 15, then it becomes 0 in 15 steps. At that time and alarm0 event happens, and we can use that to set the CAN SHOOT variable back to 1 again.

Thus we can shoot every 15 steps.

BlocksWe also need to group actions in the <space>

event.

Enemy PlanesType 1: It is a small plane that simply flies downwards.

It does not shoot but when it hits the main plane the game is lost.1. Create sprite, read it in.2. Create object, assign sprite, vertical speed=43. When plane hits the botton it redraws at randome above the room.Needs: collision with bullet, with player.

Enemy 1Collision with bullet: it explodes and vanishesUse ADD SOUND and load an explosion noise.

These are WAV files, prerecorded.Need a sprite for the explosion, origin 16,16. It

is a small animation.Once it finishes playing there is an event called

ANIMATION END that we use to destroy the sprite (actually, we’ll MOVE it)

Bullet action,collision with plane1: delete self

Enemy 1Collision with player: it explodes and vanishesUse an explosion noise. Game is over: print message and stop.

High Score

The Game should get harder...

We start with one enely plane, and spawn more and more, and different kinds.

How do we do that? Using a game agent.

We create one more object: controller_enemy. It will control the creation of enemy planes.

We make the object invisible during the game by unchecking the box labeled Visible. A sprite is not required for it.

The Game should get harder In its creation event we create an enemy place at a

random location just above the room. (the first enemy) We also set the alarm clock to 200.

In the event for this alarm clock we create another enemy plane and set the alarm clock again, but this time to 500.

The effect is that at the beginning of the game there is one enemy plane. After 200 steps, that is, about seven seconds, a second

• enemy plane appears. After about 15 seconds, a third plane appears, etc.

High Score

top related