Making Video Games

Game Programming Tutorial RPG Chapter 1 Part 3

by Charles on Sep.25, 2009, under Game Programming

Create an original RPG game: Chapter 1, part 3.

 

You should start here to have a better idea where this is going!

 

Game programming – starting with the world view.

 

I started by creating a very basic world view, just for the sake of illustration.  There is a character, with a very prominent nose  that changes directions according to which arrow keys you use.

 

There are also a few walls, doors, and a table.  Each was added directly to “room0” by opening the room, selecting the objects and clicking at the appropriate spot.

 

 add-object-to-room

 

To make the character able to move around, you need to open the character’s Object Properties window.  It’s already created so just double click on the main_ch object in the object list.

 

Add the left keyboard event by clicking Add event, then selecting the bottom left option, then selecting <left> in the list that appears.

 

 add-left-keyboard-event 

 

At this point there are two options to consider.  The first is to use the point and click tabs in the move tab on the right.  The second is to insert a piece of code as seen previously.

 

Like I said before, I don’t like point and click.  It is too limited and you don’t truly learn to program games by relying on those.  It isn’t that hard to learn so… 

 

The left event triggers Execute a piece of code from the control tab.

global.heading=4;

if instance_position(x-10,y,all)=noone x-=4

    else if global.space_mess=0 global.space_mess=1;

 

This is the code when the left arrow key is pressed. 

 

- Global is necessary when the variable heading is meant to be used in scripts other than the one it is included in. 

- Heading = 4 means the character will be facing west (1 for N, 2 for E…).

- if instance_position(x-10,y,all)=noone checks for any type of object that intersects with the character’s x coordinate-10 (10 pixels to the left) and the character’s y coordinate. 

o       If there is anything just to the left of your character, that means the “if condition” is not met (it doesn’t find “no one” because it finds something).  In that case it runs the statement found in “else”.  “all” means it checks for anything at all – this can be replaced by specific object names.

o       If there is nothing there, then the “if condition” is met.  It moves the character 4 pixels to the left by subtracting 4 from its x coordinate.

else if global.space_mess=0 global.space_mess=1; is what happens when there is an object ten pixels to the left of your character while pressing the left arrow key.

o       If the variable global.space_mess=0, then it changes the variable to 1.  Space_mess stands for “space message”.  If you run into a wall or the table, a message appears that reads “When facing an object hit SPACE to see your options”.  This is just to demonstrate that you can trigger this.  Hitting SPACE doesn’t do anything at this point.

o       In the draw event, part of the associated code is:  if global.space_mess=1 {…} which means that if the variable’s value is one then it will run what is in between the brackets.

§        show_message(”When facing an object hit SPACE to see your options”);  This shows the message (the OK button is included automatically).

§       global.space_mess=2; This ensures that the message is only showed once.  If I wanted that message to appear each time the player runs into an object I would set it back to 0 so the entire process could run again, or even simpler simply not have created this variable at all.

 

The control bar.

 

Below the world view there is a control bar made up of five “squares”. 

 

control-bar

 

These don’t show much unless you run the mouse over them.  At this point they only react to Mouse Enter and Mouse Leave events.  Again, you add events by double-clicking on the object it will apply to on the left.  Then you add the Mouse Enter and Mouse Leave events the same way you added events previously.

 

At this point the game doesn’t require more than point and click so I used the Change sprite button in the main1 tab.  This could change later though if I need this to trigger code (it will).

 

 mouse-enter-leave

 

  1. Open the Object properties for a square object.
  2. Create Mouse Enter and Mouse Leave events.
  3. Select one of the two.
  4. Open the main1 tab.
  5. Click and drag change-sprite into the list of Actions.
  6. Double click on it then.
  7. Select the sprite you want it to change into.
  8. okand repeat for the other event.

 

In both cases, they change sprites accordingly.  For this I used the predefined action “change sprite”.

In later versions these will react to items being “dragged into them”.

 

Back to Game Programming 

Related Articles:

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

:, ,

Leave a Reply

Creative Lab

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit our friends!

A few highly recommended friends...

    Archives

    All entries, chronologically...