**A Very Simple Example in GameMaker**

(Adapted from "Designing Games with Game Maker" by Mark Overmars)

**Requirements**

The first step is to describe the game we want to make. (You should
always do this first; it will save you a lot of work later.) The game
will be very simple: There is a ball bouncing around between some walls.
The player should try to click on the ball with the mouse. Each time he
succeeds he gets a point.

**Design**

As can be seen, we will require two different objects: the ball and the
wall. We will also need two different sprites: one for the wall object
and one for the ball object. We will just use one room in which the game
takes place. There are two events in this game: the mouse clicking on
the ball, and the ball hitting the wall. When mouse clicks on the ball,
several actions take place: a sound is played, the ball changes the
direction it is moving, and one point is added to the score. When the
ball hits a wall, the only action is that it bounces off of it.

**Code**

Let us first make the sprites.

-   Create a wall sprite:

    -   From the **Add** menu select **Add Sprite** (you can also use
        the appropriate button on the toolbar). A form will open.

    -   In the **Name** field type "wall".

    -   Select the **Load Sprite** button and choose an appropriate
        image.

    -   You can close the form.

-   In the same way, create a ball sprite.

Next, we make the sound.

-   From the **Add** menu select **Add Sound**. A different form opens.

-   Give the sound a name.

-   Choose **Load Sound** . Pick something appropriate and check whether
    it is indeed a nice sound by pressing the play button.

-   If you are satisfied, close the form.

The next step is to create the two objects.

-   Make the wall object.

    -   Again from the **Add** menu choose **Add Object**. A form will
        open that looks quite a bit more complex than the ones we have
        seen so far. At the left there is some global information about
        the object.

    -   Give the object an appropriate name.

    -   From the drop down menu pick the correct wall sprite.

    -   Because a wall is solid, you should check the box labeled
        **Solid**. That is all for now.

-   Create the ball object in the same way you created the wall object,
    except:

    -   Name this object "ball".

    -   Assign it the ball sprite.

    -   Don\'t make the ball solid.

Now we need to define some behavior for the ball object.

-   Define what happens when the ball is created.

    -   In the middle of the ball object's form you see an empty list of
        events. Below it there is a button labeled **Add Event**. Press
        it and you will see all possible events.

    -   Select the **creation event**. This is now added to the list of
        events. At the far right you see all the possible actions in a
        number of groups.

    -   From the **move** group choose the action with the 8 red arrows
        and drag it to the action list in the middle. This action will
        make the object move in a particular direction. Once you drop it
        in the action list, a dialog pops up in which you can indicate
        the direction of motion.

    -   Select all 8 arrows to choose a random direction. You can leave
        the speed as 8.

    -   Close the dialog. So now the ball will start moving at the
        moment it is created.

-   Define what should happen in the case of a collision event with the
    wall.

    -   Again, press **Add Event**.

    -   Click on the button for collision events and in the drop down
        menu select the wall object. For this event we need the bounce
        action. (You can see what each action does by holding the mouse
        cursor still above it.)

-   Finally, we need to define what to do when the user presses the left
    mouse button on the ball.

    -   Add the corresponding event and select the left mouse button
        from the pop-up menu.

    -   For this event we need a few actions:

        -   play a sound (can be found in the group of **main1**
            actions)

        -   change the score (in the group **score**)

        -   move the ball to a new random position and start it moving
            in a new direction (in the same way as in the creation
            event).

    -   For the sound action, select the correct sound.

    -   For the score action, type in a value of 1 and check the
        **Relative** box. This means that 1 is added to the current
        score. (If you make a mistake you can double click the action to
        change its settings.)

Define the room.

-   Add a new room to the game, using the **Add** menu. At the right you
    see the empty room. At the left you find some tabs, one for setting
    the background, one for setting some global properties like the
    width and height of the room, and one where you can add instances to
    the room. At the bottom you can select an object in the pop-up menu.

-   Select the wall object to allow you to add instances of it to the
    room.

-   Click in the room to place instances of the wall object there. You
    can remove instances using the right mouse button. Create a nice
    boundary around the room using the wall object.

-   Finally, place 1 or 2 ball objects in the room. Our game is ready.

**Document**

If the programming is complex, you might need to keep notes on how you
created this game. (This document can serve that purpose.)

In addition, consider whether players need instructions for how to run
your game.

**Test**

Now it is time to test our game. Press the **Run** button (the green
triangle on the button bar at the top of the window) and see what
happens. If you made no mistakes, the ball starts moving around. Try
clicking on it with the mouse and see what happens. You can stop the
game by pressing the \<Esc\> key. You can now make further changes.