0% found this document useful (0 votes)
1K views50 pages

Game Maker Studio Tips and Tricks

This document is the contents page for a GameMaker Studio book that provides tips and tricks for creating games. The contents page lists various chapters that provide instructions for implementing different game features and effects, such as advertising systems, basic artificial intelligence, blood effects, size changing, cheats, checkpoints, car drifting, circular health bars, clickable text and more.

Uploaded by

Mihai Basalic
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views50 pages

Game Maker Studio Tips and Tricks

This document is the contents page for a GameMaker Studio book that provides tips and tricks for creating games. The contents page lists various chapters that provide instructions for implementing different game features and effects, such as advertising systems, basic artificial intelligence, blood effects, size changing, cheats, checkpoints, car drifting, circular health bars, clickable text and more.

Uploaded by

Mihai Basalic
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 50

*DPH0DNHU6WXGLR%RRN

7LSV 7ULFNV


%HQ7\HUV

&RS\ULJKW%HQ7\HUV*DPH3XEOLVKLQJQHW
,6%1
,6%1

'(',&$7,21


0DQ\WKDQNVWR0DUN2YHUPDUVFUHDWRURIWKHRULJLQDO*DPH0DNHU




&217(176


^
/


^
^
W^

,
d
d


E
W

K

s
D
&
&^
&
'^
'^D

GameMaker Studio Book

,
,^D
:W
<K/Z
<
<K^
<^DD
>
>^
>^^
>dZd
D
D
D
Dd
DK
DK
DWW
D
D
DW
D<W
DZ
DW
D
DW
E
vi

GameMaker Studio Book

W&
W
W:
W>
WdE
WD
W
Wh
W
Z
ZE
Zt&d&
Zt&
Zd
Z^
Z
Zd
Z
^
^t>
^
^
^
^D
^
^d'
^Z
vii

GameMaker Studio Book

^
^W
^
^Z
^Z
^K
^
d^
d^
dt^
dD^
dZ
dZ^
d
h^
t
t
t^
t
tZ





viii

$&.12:/('*0(176


7KDQNV7R$OO7KHVH3HRSOH)RU+HOSLQJ0H:LWK7KLV%RRNDQG$OORZLQJ0H7R5H8VH6RPH2I7KHLU&RGH
7KDQNVDOVRWRWKH*0=IRUDQVZHULQJP\TXHVWLRQVLQDWLPHO\PDQQHU

,Q$OSKDEHWLFDO2UGHU


05GREL2
64 DIGITS
AMORBIS
CAHARKNESS
CPSGAMES
GMEXPERT
LEANDRO SACCOLETTO
ISMAVATAR
MANUEL777
NEHEMEK AMADOR
ROKAN
SIMON DONKERS
SMASH GAMES
TREVOR MADGE
T. WESTENDORP
WDALPHIN2
YELLOWAFTERLIFE
ZARNIWOOOP


6SHFLDO7KDQNVWR$OHVLD%XRQRPR)RU3URRI5HDGLQJ

7KDQNVWR$OH[DQGHU)RU7KH7HFKQLFDO5HYLHZ

Advert System
A simple system to create and show your own adverts, great for directing players to your website or app
store page.

Youll need to assign a sprite with 4 sub images for this example.
Create Event

alarm[0]=60;
ad_number=0;
total_adverts=4;;
Alarm[0] Event

ad_number++;
if ad_number==total_adverts
{
ad_number=0;
}
alarm[0]=60;
Left Released Event

if ad_number=0 url_open("www.google.com");
if ad_number=1 url_open("www.bing.com");
if ad_number=2 url_open("www.gamemakerbook.com");
if ad_number=3 url_open("www.bbc.com");
Draw Event

draw_sprite(adverts,ad_number,x,y);


1

GameMaker Studio Book

Basic AI
/


This example assumes you have a player object, obj_player and solid walls.

Step Event

GameMaker Studio Book

Ball Bounce
d


Just add the following the collision event of the ball with another object
Collision Event

move_bounce_all( true);
x=xprevious;
y=yprevious;

GameMaker Studio Book

Blood Effect
d



d
K
K


REMBEORRG
Create Event

speed = random(4)+4; //Give out a random speed.


friction = 0.3; //Make the gore slow down from friction.
direction = random(360); //Random Direction
image_angle = random(360); //Random Angle
image_single = random(image_number-1); //Pick a random look.
image_xscale = random(1); //Random Size
image_yscale = image_xscale; //Restrain Proportions (aspect ratio)
fade = true; //Whether to fade the gore out or not.
Step Event

image_angle += speed/2; //Spin according to speed.


if fade=true{image_alpha -= 0.01;} //Fade out if relevant.
if image_alpha <0.1{instance_destroy();} //If completely faded, destroy.

GameMaker Studio Book

2EMHFWREMBEORRGB

Create Event

fade = true; //Whether to fade the gore out or not.;


Step Event

if fade=true{image_alpha -= 0.01;} //Fade out if relevant.


if image_alpha <0.1{instance_destroy();} //If completely faded, destroy.

2EMHFWREMBVSDZQBEORRG
Moouse Global Left Button (or whatever trigger you are using

x = mouse_x
y = mouse_y
repeat (10) {instance_create(x,y,obj_blood)}
repeat (3) {instance_create(x,y,obj_blood_2)}

GameMaker Studio Book

Blood Effect 2




Create Event

globalvar flow;
Alarm [0] Event

visible = true;//as needed


Script blood

// example blood(50,50); or blood(x,y);


spotX = argument0;
spotY = argument1;
flow = part_system_create();
droplet = part_type_create();
spatter = part_type_create();
b_color = c_red;
part_type_shape(droplet,pt_shape_pixel)
part_type_size(droplet,0.10,0.10,0.05,0)
part_type_color1(droplet,b_color)
part_type_alpha2(droplet,1,0)
part_type_speed(droplet,1,6,0,0)
part_type_direction(droplet,-30,210,0,10)
part_type_gravity(droplet,0.2,270)
part_type_orientation(droplet,90,90,0,0,1)
part_type_life(droplet,30,40)
6

GameMaker Studio Book

part_type_death(droplet, 1, spatter)
part_type_shape(spatter,pt_shape_disk)
part_type_size(spatter,0.3,0.3,.05,0)
part_type_scale(spatter,.35,.35)
part_type_color2(spatter,make_color_rgb(255, 0, 0), make_color_rgb(192, 0,
0))
part_type_alpha2(spatter,.15,0)
part_type_speed(spatter,0,0,0,0)
part_type_direction(spatter,0,0,0,0)
part_type_gravity(spatter,0,270)
part_type_life(spatter,50,60)
wound = part_emitter_create(flow);
part_system_depth(flow, -25);
part_emitter_region(flow,wound,spotX+10,spotX+22,spotY+10,spotY+22,ps_shape_
line ,ps_distr_gaussian);
effect_create_above(ef_explosion, spotX +16, spotY + 16, .5, c_red);
effect_create_above(ef_flare, spotX +16, spotY + 16, 25, c_orange);
obj_blood.visible=false;
part_emitter_burst(flow,wound,droplet,500);
obj_blood.alarm[0] = 120;




GameMaker Studio Book

Change Size


Youll need two additional objects for this to work, obj_grow and obj_shrink

Step Event

if (instance_place(x,y,obj_grow))
{
if (image_xscale < 2) //or whatever size you want
{
image_xscale += 0.5;
image_yscale += 0.5;
}
}
else if (instance_place(x,y,obj_shrink))
{
if (image_xscale >0.5)//or whatever size you want
{
image_xscale -= 0.5;
image_yscale -= 0.5;
}
}
To destroy obj_grow / obj_shrink, but the following in their create event
if (instance_place(x,y,obj_player)) instance_destroy();

GameMaker Studio Book

Cheat System
^t




Create Event

keyallowed=true;

Alarm[10] Event

keyallowed=true;

Step Event

if keyallowed=true
{
if
keyboard_check(ord('A'))
keyallowed=false;}

{cheatstring+="A";

alarm[10]=5;

if
keyboard_check(ord('B'))
keyallowed=false;}

{cheatstring+="B";

alarm[10]=5;

if
keyboard_check(ord('C'))
keyallowed=false;}

{cheatstring+="C";

alarm[10]=5;

if
keyboard_check(ord('D'))
keyallowed=false;}

{cheatstring+="D";

alarm[10]=5;

GameMaker Studio Book

if
keyboard_check(ord('E'))
keyallowed=false;}

{cheatstring+="E";

alarm[10]=5;

if
keyboard_check(ord('F'))
keyallowed=false;}

{cheatstring+="F";

alarm[10]=5;

if
keyboard_check(ord('G'))
keyallowed=false;}

{cheatstring+="G";

alarm[10]=5;

if
keyboard_check(ord('H'))
keyallowed=false;}

{cheatstring+="H";

alarm[10]=5;

if
keyboard_check(ord('I'))
keyallowed=false;}

{cheatstring+="I";

alarm[10]=5;

if
keyboard_check(ord('J'))
keyallowed=false;}

{cheatstring+="J";

alarm[10]=5;

if
keyboard_check(ord('K'))
keyallowed=false;}

{cheatstring+="K";

alarm[10]=5;

if
keyboard_check(ord('L'))
keyallowed=false;}

{cheatstring+="L";

alarm[10]=5;

if
keyboard_check(ord('M'))
keyallowed=false;}

{cheatstring+="M";

alarm[10]=5;

if
keyboard_check(ord('N'))
keyallowed=false;}

{cheatstring+="N";

alarm[10]=5;

if
keyboard_check(ord('O'))
keyallowed=false;}

{cheatstring+="O";

alarm[10]=5;

if
keyboard_check(ord('P'))
keyallowed=false;}

{cheatstring+="P";

alarm[10]=5;

if
keyboard_check(ord('Q'))
keyallowed=false;}

{cheatstring+="Q";

alarm[10]=5;

if
keyboard_check(ord('R'))
keyallowed=false;}

{cheatstring+="R";

alarm[10]=5;

if
keyboard_check(ord('S'))
keyallowed=false;}

{cheatstring+="S";

alarm[10]=5;

if
keyboard_check(ord('T'))
keyallowed=false;}

{cheatstring+="T";

alarm[10]=5;

if
keyboard_check(ord('U'))
keyallowed=false;}

{cheatstring+="U";

alarm[10]=5;

10

GameMaker Studio Book

if
keyboard_check(ord('V'))
keyallowed=false;}

{cheatstring+="V";

alarm[10]=5;

if
keyboard_check(ord('W'))
keyallowed=false;}

{cheatstring+="W";

alarm[10]=5;

if
keyboard_check(ord('X'))
keyallowed=false;}

{cheatstring+="X";

alarm[10]=5;

if
keyboard_check(ord('Y'))
keyallowed=false;}

{cheatstring+="Y";

alarm[10]=5;

if keyboard_check(ord('Z')) {cheatstring=""; alarm[10]=5; keyallowed=false;}


}
if cheatstring="SPEED"
{
speedcheat=true;
cheatstring="";
}

Draw Event [as needed]


draw_text(x,y,cheatstring);
if speedcheat=true
{
draw_text(100,100,"speed cheat active");
}

11

GameMaker Studio Book

This Book Is Available Now as Paperback or PDF at: www.GameMakerBook.com


12

GameMaker Studio Book

Check Point System


d








3OD\HU2EMHFW
Create Event Example

lives=5;
checkpoint_x=50;
checkpoint_y=50;
x=checkpoint_x;
y=checkpoint_y;
Step Event

x+=4*(keyboard_check(vk_right)-keyboard_check(vk_left));
y+=4*(keyboard_check(vk_down)-keyboard_check(vk_up));
if keyboard_check(ord('D'))// or your own trigger/death code
{
lives-=1;
x=checkpoint_x;
y=checkpoint_y;
}
Collision with Object obj_checkpoint

checkpoint_x=other.x;
checkpoint_y=other.y;

13

GameMaker Studio Book

Car Drift






z

Create Event

car_speed=0
direction=0
tire_rot=0
friction=1
drift=0

Step Event

if keyboard_check(ord("W")){if car_speed<7{car_speed+=.3;}}
if keyboard_check(ord("S")) {if car_speed>0{car_speed-=.5;}
else if car_speed>-3{car_speed-=.05}}
if ! keyboard_check(ord("S")) && ! keyboard_check(ord("W"))
{if car_speed<-.5 car_speed+=.5; else if car_speed>.5
car_speed-=.2;
else car_speed=0;
}
if keyboard_check(vk_space) {if abs(car_speed)>0.7
{
car_speed-=sign(car_speed)*0.7
}
Else car_speed = 0;
14

GameMaker Studio Book

}
if keyboard_check(ord("D")){if tire_rot>-40 {tire_rot-=5;}}
if keyboard_check(ord("A"))
{if tire_rot<40
{tire_rot+=5}}
if ! keyboard_check(ord("A")) && ! keyboard_check(ord("D"))
{if tire_rot<-5 {tire_rot+=5;}
else if tire_rot>5{tire_rot-=5;}
else tire_rot=0}

if car_speed>0 image_angle+=car_speed/30*tire_rot;
else
if car_speed<0 image_angle+=car_speed/20*tire_rot;
if image_angle>360 image_angle=0;
if image_angle<0 image_angle=360;
friction=speed/10;
motion_add(image_angle,car_speed/6);
if tire_rot>30 && speed>6.5 drift=1
if tire_rot<-30 && speed>6.5 drift=1
if abs(((((image_angle-direction) mod 360)+540) mod 360)-180)<5
{
drift=0
}
if speed<3 drift=0
if drift=0
{
if car_speed>0 direction=image_angle;
}

15

GameMaker Studio Book

Circular Health 2



d
Script: draw_circle_health2
//x,y,radius,value,colour1,colour2,outline)
//draw_circle_part_color(200,200,health,c_red,c_red);
//
0
1 2
3
4
//draw background in colour argument4
draw_set_color(argument4);
draw_circle(argument0,argument1,185/4,0);
//draw propotion in colour argument 3
draw_set_color(argument3);
draw_circle(argument0,argument1,(85+argument2)/4,0);
//draw outlines and health value
draw_set_color(c_black);
draw_circle(argument0,argument1,(185/4)+1,1);
draw_circle(argument0,argument1,(85/4)-1,0);
draw_set_color(c_white);
draw_set_font(font_health);
draw_set_halign(fa_center);
draw_set_valign(fa_center);
draw_text(argument0,argument1,health);
Example Usage (in Draw Event):

//x,y,radius,value,colour1,colour2,outline)
//draw_circle_part_color(200,200,health,c_red,c_red);
//

draw_circle_health2(200,200,health,c_blue,c_red);

16

GameMaker Studio Book

Circular Text





Script: draw_text_circular

/*
draw_text_circular(x,y,string,xscale,yscale,speed,rad,fir angle,sec angle)
-------------------------------------------------------------------------------------------------------------------------x - X position
y - Y position
string - The text you want to show
xscale - The width of the text
yscale - The height of the text
speed - The speed in which the text rotates. This must be a varible declared
in the step event
rad - The radius of the circle.
fir angle - The direction of the first character in the text.
sec angle - The direction of the angle relative to the first. Moves
clockwise. Set to 360 to make a full circle
-------------------------------------------------------------------------------------------------------------------------other info:
This function sets the halign to fa_center and the valign to fa_top.
The basic idea is to seperate every character and give it a x/y position and
an angle value, then draw it
V.1.0
17

GameMaker Studio Book

*/
var xx,yy,text,xs,ys,dd,length,dir,a,b,bb,tt,dir;
xx=argument0;
yy=argument1;
text=argument2;
argument2 = text;
xs=argument3;
ys=argument4;
dd=argument5
length=argument6;
dir=min(argument7,argument8);
dir2=max(argument7,argument8);
tt=string_length(text)
a=+1;
b=0;
bb=b;
repeat(tt) {pos[b]=string_char_at(text,a); a+=1; b+=1;}
b=0;
bb=b;
draw_set_valign(fa_top);
draw_set_halign(fa_center);
repeat(tt) {draw_text_transformed(xx+lengthdir_x(length,dir+dd),
yy+lengthdir_y(length,dir+dd),pos[bb],xs,ys,dir-90+dd); bb+=1; dir-=dir2/tt;
}

Example Usage:

2EMHFWREMBWH[W
Create Event

ss=0;
Step Event

ss+=0.25;
Draw Event

draw_text_circular(200,200,"Example Circular Text",1,1,ss,90,90,180);

18

GameMaker Studio Book

Clickable Text

Script Code draw_text_click

/// draw_text_click(x,y,string,margin,hover_color,hover_transparency);
var c;
c = draw_get_color();
var sx,sy,ex,ey;
sx = argument0-argument3;
sy = argument1-argument3;
ex = argument0+argument3+string_width(argument2);
ey = argument1+argument3+string_height(argument2);
var h;
h = (mouse_x>=sx && mouse_y>=sy && mouse_x<=ex && mouse_y<=ey);
draw_set_alpha(argument5);
draw_set_color(argument4);
if(h)
{
draw_rectangle(sx,sy,ex,ey,false);
}
draw_set_alpha(1);
draw_set_color(c);
draw_text(argument0,argument1,argument2);
// Returns 1 if the text is currently pressed - change to
mouse_check_pressed for different affect.
return(h && mouse_check_button(mb_left));
Example Usage

if draw_text_click(16,16,"You Can Click Here!",4,c_red,0.5)=1


{
draw_text(50,50,"Clicked");
//or do something else
}
19

GameMaker Studio Book

Countdown Bar
This example creates a counting down bar, great for visualizing temporary power ups.

Youll need two sprites for this spr_countdown_bar1 610x30 pixels (background) and
spr_countdown_bar2 590x20 pixels.
Create Event

maxcount=600;
count=maxcount;

Step Event

count-=1;
if(count<=0){
//any code triggered by the ending of counting
instance_destroy();
}

Draw Event

draw_sprite(spr_countdown_bar1,0,x,y);
draw_sprite_ext(spr_countdown_bar2,0,x+5,y+5,count/maxcount,1,0,c_white,1);


20

GameMaker Studio Book

This Book Is Available Now as Paperback or PDF at: www.GameMakerBook.com


21

GameMaker Studio Book

Countdown Clock




Create Event

// Set Your Time Start Time


seconds = 20; //Set The Starting Seconds
minutes = 1; //Set The Starting minutes
hours = 0; //Set The Starting hours
alarm[0]=room_speed; //Set alarm for one second (room_speed)
Alarm Event

seconds-=1;
if seconds < 0// checks if seconds is less than 0
{
seconds = 59;//resest seconds
minutes -=1;// take one off minutes
}
if minutes < 0 // check if minutes less than 0
{
minutes = 59;// resiest minutes
hours -=1;//take one of hours
}
alarm[0]=room_speed;//reset alarm
if seconds==0 && minutes==0 && hours==0 // check if countdown has reached
00:00:00
22

GameMaker Studio Book

{
// Do Something, for example@
room_goto(room_game_over);

}
Draw Event

show_hours=string_repeat("0", 2string_length(string(hours)))+string(hours);//if single digit add a leading


0
show_minutes=string_repeat("0", 2string_length(string(minutes)))+string(minutes);//if single digit add a
leading 0
show_seconds=string_repeat("0", 2string_length(string(seconds)))+string(seconds);//if single digit add a
leading 0
draw_text(view_xview+5,view_yview+5,"Time: " + show_hours + ":" +
show_minutes + ":" + show_seconds);//draw variables

23

GameMaker Studio Book

Day Night Engine








Create Event

global.daytime = 0;
hour = date_get_hour(date_current_datetime());
minu = date_get_minute(date_current_datetime());
sec = date_get_second(date_current_datetime());
fase = 0;
to = 1;
color = c_black;
col = 0;
red = 0;
alarm[0] = room_speed;

24

GameMaker Studio Book

Step Event

sec +=30;//More than 30 to set the time too fast, or directly replace "sec"
for "minu"
if sec > 60
{
sec = 0;
minu += 1;
}
if minu > 59
{
minu = 0;
hour += 1;
}
if hour > 23
hour = 0;
hh = (hour)+(minu/60);
to = -1;
if hour > 12
{
hh = (hour-12)+(minu/60);
to = 1;
}
fase = ((12-hh)/12)
if to = 1
fase = 1-((12-hh)/12);
if to = -1
fase*=1.6;
if hour = 18
red = ((minu)/60)*255;
if hour = 19
red = 255-(((minu)/60)*255);
if fase < 0.5
//Day
global.daytime = 0;
else if fase < 0.64
//Morning
global.daytime = 0.5;
else
//Night
global.daytime = 1;

Draw Event

25

GameMaker Studio Book

if fase < 0.5


col = make_color_rgb(255,255,255);
else if fase < 0.6
{
ff = (fase-0.5)*10;
col = make_color_rgb(255-(ff*31),255-(ff*79),255-(ff*111));
}
else if fase < 0.7
{
ff = (fase-0.6)*10;
col = make_color_rgb(224-(ff*65),176-(ff*17),144+(ff*94));
}
else
col = make_color_rgb(159,159,238);
draw_set_color(c_white);

show_hours=string_repeat("0", 2string_length(string(hour)))+string(hour);//if single digit add a


show_minutes=string_repeat("0", 2string_length(string(minu)))+string(minu);//if single digit
show_seconds=string_repeat("0", 2string_length(string(sec)))+string(sec);//if single digit
draw_text(view_xview+5,view_yview+5,"Time: " + show_hours + ":" +
show_minutes + ":" + show_seconds);//draw variables
draw_set_color(col);
background_blend = col;

26

GameMaker Studio Book

Disappearing Platform
A simple disappearing platform.





Youll need to assign a sprite to your object.


Create Event

image_alpha=1;
disappear_speed=0.01;//how quicly to disappear

Step Event

if image_alpha<0 instance_destroy();
Collision With Object Player Event

image_alpha-=dissapear_speed;

Set disappear_speed=0.01; to disappear_speed=1; so object disappears after one collision.

27

GameMaker Studio Book

Do-until




That is the basic structure of do-until:


do{
code 1;
}until( statement 1);

First, the code 1 is executed. After the statement 1 is checked. If it is true, the loop ends. But if it is false,
the code 1 is executed again and this process continue until the statement 1. The code 1 is always
executed at least once.
First example:
do{
y+=1;
}until( not place_free(x,y) or y>200);

In this example, a object is shifted by 1 in the y-direction until it collides with a solid instance or its
position is higher than 200.
Second example:
do{
image_alpha-=0.05;
}until(image_alpha<=0);

This is a simple fade effect for an object, remember to destroy it when alpha == 0.

28

GameMaker Studio Book

Dragging Object



Create

dragging=true;
Step Event

if(dragging==true)
{
with(self)
{
x+=mouse_x-x;
y+=mouse_y-y;
}
}
Left Pressed Event

instance=instance_position(mouse_x,mouse_y,self);
dragging=true;
Global Left Released Button

dragging=false;

29

GameMaker Studio Book

Draw Array Contents in Boxes


h

6KRZLQJFRQWHQWVRIDUUD\GUDZQRQWKHVFUHHQ
Create Event (if needed, provided here for example purposes).

var i,j;
for (i = 0; i < 10; i++)
{
for (j = 0;j < 10; j++)
{
array[i,j] = i*j;
}
}
Draw Event

var i,j;
for i= 0; I < 10; i++)
{
for (j= 0; j < 10; j++)
{
cellsize=32
xpos=i*cellsize
ypos=j*cellsize
border=8
draw_rectangle(border+xpos,border+ypos,
border+xpos+cellsize, border+ypos+cellsize,2);
draw_text(border+xpos+5,border+ypos+12,array[i,j]);
}
}

30

GameMaker Studio Book

Dual View



dz

Script: view_control

var o1, o2, x1, x2, y1, y2, vw, vh, vb, vscale;
o1 = argument0; x1 = o1.x; y1 = o1.y
o2 = argument1; x2 = o2.x; y2 = o2.y
vb = argument2; vw = view_wport; vh = view_hport;
vscale = max(1, abs(x2 - x1) / (vw - vb * 2), abs(y2 - y1) / (vh - vb * 2))
view_wview = vscale * vw
view_hview = vscale * vh
view_xview = (x1 + x2 - view_wview) / 2
view_yview = (y1 + y2 - view_hview) / 2
Example usage:

Place the following in the step event of a control object:


view_control(obj_player1, obj_player2, 150);// where 150 is room border from
object

31

GameMaker Studio Book

This Book Is Available Now as Paperback or PDF at: www.GameMakerBook.com


32

GameMaker Studio Book

Ellipse Movement



d

This code just a basic concept of Analytic geometry to make a object moves counterclockwise in a ellipse
with parameters rx and ry, centered in the point (xc,yc), with angular speed angle_speed. In the case r1=r2,
the case reduces to a circle.
Create Event

angle=0;
rx=16;
ry=24;
angle_speed=0.05*pi;
xc=xstart;
yc=ystart;
End Step Event

x=xc+rx*cos(angle);
y=yc-ry*sin(angle);
angle+=angle_speed;
if(angle>2*pi) angle-=2*pi;
else if(angle<0) angle+=2*pi;

//

W&

End Step Event

xc+=2;

33

GameMaker Studio Book

Fire Effect



Youll need to assign a sprite to your object.


Script fire

//example fire(x,y);
spotX = argument0;
spotY = argument1;

flow = part_system_create();
flame = part_type_create();
smoke = part_type_create();

part_type_shape(flame,pt_shape_flare) // the fire


part_type_size(flame,0.5,0.8,0.30,0)
part_type_scale(flame,0.10,0.10)
part_type_color3(flame,c_white,c_yellow,c_red)

part_type_alpha3(flame,1,0.70,.30)
part_type_speed(flame,0.20,.50,0,0)
part_type_direction(flame,0,359,0,20)
part_type_gravity(flame,0.10,90)
part_type_orientation(flame,0,180,0,0,1)
34

GameMaker Studio Book

part_type_blend(flame,1)
part_type_life(flame,1,40)

part_type_shape(smoke,pt_shape_smoke) // where there's fire, there's smoke


part_type_size(smoke,1,1,0,0)
part_type_scale(smoke,0.25,0.25)
part_type_color2(smoke,c_gray, c_black)
part_type_alpha3(smoke,0.30,0.2,0.1)
part_type_speed(smoke,0.25,0.25,0,0)
part_type_direction(smoke,0,359,0,0)
part_type_gravity(smoke,0.10,90)
part_type_orientation(smoke,0,359,0,1,1)

part_type_blend(smoke,0)
part_type_life(smoke,60,60)

part_type_death(flame,1,smoke)

wound = part_emitter_create(flow);
part_system_depth(flow, -25);

part_emitter_region(flow,wound,spotX+8,spotX+24,spotY+16,spotY+32,ps_shape
_line ,ps_distr_gaussian);
part_emitter_stream(flow,wound,flame,1);

35

GameMaker Studio Book

Flashing Sprite
A simple method of making a flashing sprite.



Youll need to assign a sprite to your object.


Create Event

flashon=false;
flashing=false;
flashingspeed=5;
flashinglength=100;

Step Event

if flashing==true
{
flashingspeed++;
if flashingspeed mod 5=0
{
flashon=true;
}
else
{
flashon=false;
}
else
{
flashon=false;
}

36

GameMaker Studio Book

if flashingspeed==flashinglength
{
flashing=false;
flashon=false;
flashingspeed=0;
}
Draw Event

if flashon==false
{
image_blend=c_white
}
else
{
image_blend=c_yellow;
}
draw_self();

d

37

GameMaker Studio Book

Following Object


This example assumes you have two objects with sprites assigned, obj_player and obj_follow.

2EMHFWREMBSOD\HU
Step Event

x+=4*(keyboard_check(vk_right)-keyboard_check(vk_left));
y+=4*(keyboard_check(vk_down)-keyboard_check(vk_up));

2EMHFWREMBIROORZ
Create Event

point=obj_player;
Step Event

dir = point_direction( x, y, point.x, point.y );


x = point.x - lengthdir_x( 32, dir );
y = point.y - lengthdir_y( 32, dir );

38

GameMaker Studio Book

For

That is the basic structure of for:


for(statement 1; condition ; statement 2)
{
code 1;
}

First is executed the statement 1 (normaly initialize a variable) and is check the condition, if the
condition is false, the loop ends. But if it is true, the code 1 is executed. After that, the stament 3
(normaly is a variable increment or anything that can turn the loop main condition false).
Lets show a simple example:
var i;
for(i=0;i<9;i+=1)
{
instance_create(12+24*i,36,obj_ball);
}

In this example we created 10 obj_ball at y=36 , with a distance of 24 pixels. You can notice that in this
way is more easy than create use the function instance_create 10 times.
Another example:
for(times=0;x<9;x=irandom(12))
{
times+=1;
}

This example counts how many tries took to obtain a number x equal or higher than 9 from 0 to 12.

39

GameMaker Studio Book

Glowing Sprite



d

Script: draw_glow
//draw_glow(border,sprite,subimage,xpos,ypos,color);
if glow=true
{
border=argument0;
draw_set_blend_mode(bm_add);
draw_sprite_ext(argument1,argument2,argument3-border,argument4border,1,1,0,argument5,0.8);
draw_sprite_ext(argument1,argument2,argument3border,argument4+border,1,1,0,argument5,0.8);
draw_sprite_ext(argument1,argument2,argument3+border,argument4border,1,1,0,argument5,0.8);
draw_sprite_ext(argument1,argument2,argument3+border,argument4+border,1,1,0,
argument5,0.8);
draw_set_blend_mode(bm_normal);
}





40

You might also like