Professional Documents
Culture Documents
Particle effects
GMPhysics
Introduction to DLL making
Level editors
Smooth online movement
And Much More!
EDITOR’S DESK
Robin Monks Editor
How can you ensure your creation will your choice of programming language Eyas Sharaiha Editor
Andris Belinskis Editor
be around 10 years down the road and and development environment will
Leif Greenman Writer
still be enjoyed? That’s the topic for affect the about of time the game will
Rhys Andrews Writer
this month’s Editor’s Desk. remain operable. Game Maker has a José Méndez Writer
good record here, with a game made in Philip Gamble Writer
This month was a bit different, as you GM v6 being playable on Windows 98 to Gregory Writer
probably guessed by the late release Windows Vista, a time frame of 10 Bart Teunis Writer
date, mainly I headed off on a two years. Sean Flanagan Writer
month vacation and passed the mag Jake Writer
onto Eyas, who then left for vacation But, what can you do if you make a Stephan Writer
and passed it onto Andris, who then game, and there isn’t a great interest in Dan Meinzer Writer &
left. Long story short I’m finishing the it, or you are no longer able to maintain Graphic Designer
mag on my vacation time . We should it? How can you keep the game
be back on track for next issue, just progressing? Open Source it! Release it
keep those articles coming in! under a license like the GPL or Creative Table of Contents
Commons and let other continue to Editorials
But, heading back to the original learn from it and improve upon it. Your Future-proofing ............................... 2
question, how can you “future-proof” work lives on! Clone Games.................................... 6
your game and have it available for Make your code easier to read ....... 10
years to come? It’s a tough job, and it Not to mention open sourcing your Promoting your game to the GMC .. 20
has to start way back in the planning work under one of the aforementioned Tutorials
stage with you subject matter and licenses from the get go will allow you Particle Effects Tutorial .................... 3
Real time blur .................................. 7
target audience. Does your audience to get contributions and patches from
Cartesian and Polar Coordinates ...... 9
need knowledge of a current event (e.g. fellow game developers, and can also Binary for Beginners....................... 11
a sporting event?). Is the subject matter open up the opportunity for you to use Coding Styles ................................. 14
time-specific? This will limit the code and resources from other open Modulo in Computer Science ......... 15
enjoyable life of your creation. source games in yours. Smooth Online Movement ............. 17
Introduction to Making DLLs .......... 19
There is also the development side; Another way to keep your game living Level Editors .................................. 22
on is to have it hosted on many sites, so GMPhysics ..................................... 25
as sites begin to die out you’ll still have Graphic Design ............................... 31
Sound Effects: How Far? ................ 32
your game hosted elsewhere, and
Reviews
people will still have the opportunity
Textbar Maker ............................... 14
to download it. _FATAL_......................................... 33
Bounce 2 ........................................ 34
Keep up the games! I’ll see you Snow Ball War................................ 35
next month (hopefully ). Monthly Specials
Extension of the Month.................. 29
Script of the Month ........................ 30
Robin Monks,
Editor
MarkUp is a gmking.org publication;
please visit GMking for more free game
development resources!
2|P a ge July, 2007 http://markup.gmking.org
Photo © 2007 Robin Monks
GAME EFFECTS
Particle Effects Tutorial GAME EFFECTS
Introduction
Particle Effects are one of the most well
known visual/special effect methods
used in GML, and in many other
languages as well. Particles are various
shapes (and sizes), with very little
information. This information includes
where they’re supposed to go, their
appearance, and more. With such little
information, particles take little CPU
usage to calculate where and how to
draw them on the screen. This is why
particles are a great method to use if
you want effects such as rain,
explosions, smoke, fireworks, flames, within a
and more. In the GameCave Effects region in the room),
Engine, many engines are created on deflectors (which bounces
particles alone (and sometimes with particles off an invisible force), and
some non-particle effects attached). changers (which change particles into
Unfortunately, Particle Systems/effects other types of particles when they
collide with an invisible region/force). In //Create an attractor in the system
can take some time to get the hang of. 'system0'
They also take a lot of trial and error, this tutorial, only the emitter filter will
destroyer =
and patience to get individual particle be explained in detail. part_destroyer_create(system0);
//Create a destroyer in the system
types the way you want them.
'system0'
Inside a particle system are two types of Creating systems, filters, changer =
part_changer_create(system0);
elements. Particle Types, which are the and types //Create a changer in the system
particles themselves – what they look A game can have as many systems, 'system0'
like, how they move, how they live/die, particle0 = part_type_create();
filters, and particle types as you like. Of
//Create a particle type.
etc. Particle types are actually not a part course, the more you have, the more
of any system, and can be used by any memory they take up. To create one of If you do not assign these functions to a
system – however, for the sake of these, all you must do is use the variable, the system is still created
simplicity I like to think of particle types following functions: however you will not be able to access it
as part of a system. The other type is because the unique ID of the system,
system0 = part_system_create();
filters. Filters manipulate and change filter, or type was not saved to anything
the life of the particle as it is displayed //Create a System you can refer to. Remember, if you
on the screen. The most commonly used emitter = create a second system and assign it to
filter is an emitter. Emitters create the part_emitter_create(system0);
the same ‘system0’ variable, the old
particles in certain regions of a room. //Create an emitter in the system system will technically be lost and you
Other filters include attractors (which 'system0' will not be able to do anything with the
draw particles to a certain position with attractor =
system.
part_attractor_create(system0);
an amount of force), destroyers (which
destroys particles that come
system itself, this function will emitter. The x and y arguments
determine what depth the
EDITORIALS
Clone Games
“Clone games” is a subject that sound effects, programming, and more. tasks, such as creating a flawless
personally confuses me. On one hand it battle engine, etc.
is true what they say: people who do There’s also something else: and that is
clone games are just copying ideas of that making clone games requires a skill Basically, making clone games also
that no other type of games require: requires talent – just a different type
other games – they’re not innovating.
copying. of talent.
But that’s only one side of the story. It is
true that people who make such games To make a good clone game, the I made it clear that there’s nothing
are not innovating – but that’s only elements of the game need to be wrong with clone games, or people
when it comes to game design. replicated properly – the better the who make them – but does an
replication, the better the game. average gamer want to play a clone
There’s so much more in a game than game: usually, no.
game design, this includes graphics, Replication varies from using the same
effects and timing, to more complex Eyas Sharaiha
Let´s begin with the code: surfaces are surface_free(s); Original Sprite Gaussian Blur
surface_free(saux);
ideal to implement this. We will draw
our sprite in a surface, scale it down,
Now the cool part. We need to repeat a
draw the scaled surface on a second
few times the scale down, scale up
surface, scale it up, then draw the
process in the step event:
second surface on the first one, and
repeat the process. //clear the main surface and draw
the sprite there: Jittering Repeated 1f
First of all we need to initialize a few Finally, draw the main surface to the
things in the creation event of the surface_set_target(s);
screen in the draw event:
draw_clear_alpha(c_black,0);
object we want to blur:
draw_sprite(sprite_index,
draw_surface_ext(s, x-
image_index, sprite_xoffset,
s = surface_create(sprite_width, sprite_xoffset, y-sprite_yoffset, 1,
sprite_yoffset);
sprite_height); //main surface 1, image_angle, c_white, 1);
saux =
/*scale down (to 0.5) and draw in
surface_create(sprite_width*2, Execute it. As you can see, the quality is
the auxiliar surface, then scale up
sprite_height*2); //auxiliar surface
the auxiliar surface (to 2, because good. It almost looks like real gaussian
0.5 * 2 = 1, the original image blur. An higher blur value means less
//clear the main surface:
size) and draw it in the main
surface_set_target(s);
surface again (thus blurring the
speed but the same quality. So this is
draw_clear_alpha(c_black,0); ideal for very intense high-quality blur
image due to linear filtering),
repeat.*/ effects (if speed isn´t that important).
//clear the auxiliar surface:
surface_set_target(saux);
repeat(blur_amount)
draw_clear_alpha(c_black,0);
surface_reset_target();
{
Conclusion
surface_set_target(saux); Both methods work perfectly with
//enable linear interpolation:
draw_surface_ext(s, 0, 0, 0.5, 0.5, rotated, color blended and animated
texture_set_interpolation(true);
0, c_white, 1);
sprites (although a little bit of “ghosting”
surface_set_target(s);
//the amount of blur we will apply: takes place when using the repeated
draw_surface_ext(saux, 0, 0, 2, 2,
blur_amount = 8;
0, c_white,1); linear filtering method with animated
} sprites).
Ok? So now we´ve got two surfaces
ready to use, and linear interpolation surface_reset_target();
José María Méndez
Constants
The main idea behind this example is to
communicate between players with
simple variables which then translate
into movement. We start this off by
setting up constants as a form of packet
title. The packet title is simply used to
give each packet it’s own ID. By doing
Introduction
this, both client and server understand
The other day I was browsing the Game
Maker Community, testing some of the
what data you are trying to send, and Transforming Data into
can read it accordingly.
online games and engines made with Movement
Game Maker. A quick look at most of Now that we are successfully sending
the games and engines being coded Sending Data packets to the server and clients that
helped me come to the conclusion that Now that our constants/packet titles are
the community as a whole is still very set up, we can begin the process of
new to the world of online sending data to the server depending on
Dragger DLL
programming. This is made evident in what buttons have been pressed. For The dragger DLL allows
QUICK REVIEW
part by the lack luster games being example, if the player presses the left windows to be dropped inside a
programmed that make little to no use keyboard button, we send a packet to Game Maker window. A single
of a widely used technique called Dead the server which basically tells it what file or multiple files could be
Reckoning. This technique is used to button we’re pressing. Afterwards, it simultaneously dragged into a
save on bandwidth and lag in an updates our x and y position to re-sync Game Maker window. The DLL
attempt to guess what certain info is the player. Now that the server is up-to- can figure out the number of
depending on data already received. date on what the player is doing, it then files being dropped into the
The example I am about to talk to you forwards the received packet onto all window by using an index (0-
about is a form of Dead Reckoning. It clients connected to the server. These based). The DLL download
calculates the movement and fluidity of clients then do the same thing as the comes with an example in a
a player depending on certain data that server by reading the data sent. GM6 format.
has already been received. This is
Get it now!
http://xrl.us/draggerdll
17 | P a g e July, 2007 http://markup.gmking.org
MOVEMENT
Smooth Online Movement MOVEMENT
contain the info to what button the
player is pressing, we can begin the Physics checking, gravity, etc. This is a fairly
Unlike in online games where player easy part; just remember to make these
process of transforming these variables
movement is done by constantly physics exactly the same as the ones
into simple movement of the player. An
updating the x and y position of the affecting your own player. If not, it can
example of this in step-by-step order:
player, we must now program in some create quite a bit of lag.
1. Player presses left keyboard simple physics for the dummy player so
button that he acts in a manner that mimics
2. Packet is sent containing info The End
that of the actual players key presses.
for left keyboard button Hopefully by reading this little summary,
We do this by giving him some collision
3. Packet is received and read in you now have a decent insight on what
the form of simple variables it takes to program a more professional
4. The game checks those online game. If you have any questions
variables and translates them regarding the technique or the example,
into movement please e-mail me at
jakethesnake3636@hotmail.com. For a
As you can see, it is a pretty simple look at a full-fledged MMO using this
process. One in which only a little technique, please visit
common sense is required to create a nightfallonline.co.nr or stick-online.com.
highly used form of Dead reckoning.
Jake
EDITORIALS
Promoting your Game to the GMC
To start off with I will clarify that in this you should also try the same there. For to get your game reviewed or previewed
article the “Game Maker Community” example many Game Maker ‘teams’ have by one or, even better, both of the Game
refers to people who use, or are familiar their own forums, you can easily copy and Maker magazines. Provided you have put
paste the same post onto a number of a sensible amount of time into your game
with, Game Maker and not the name of
these, although I don’t condone spamming your review should in effect be free
the official forums. It is of course possible of any kind. advertising and you will also get some
to promote your game outside of the constructive criticism on top of that.
community, and this is something which Uploading at community based sites such These magazines also give free
more and more people are beginning to as 64digits won’t be a bad thing either, nor advertising in exchange for articles so if
do, however this article is only about will posting your game at YoYo Games, you get writing about something Game
promoting ‘internally’. where there is big audience. Maker related, not just shameless
promotion, and submit it to one of them
Affiliating (link exchange) with other sites you will probably be given a quarter page
Forum signatures are a great place to
is a good idea but you only get a small ad or something similar. From my
advertise since it is essentially free space,
canvas on which to show your message by experience ads in MarkUp do get clicked
and if you are an active poster it will
using this method. If your banner will and do get results.
quickly spread your message across many
appear at the bottom of a page alongside
different topics.
hundreds of others this will also be pretty As well as choosing the right place to
useless (says the man who runs a Game advertise your message also has to be
You can obviously start a topic promoting
Maker affiliation service). Textual links effective, you will only have a limited
your game in the Game Maker creations
may be more beneficial, particularly when amount of space so you need to make the
section of the official forums, and you
it comes to Search Engine Optimization, most of it and make sure you have got
could also post your website in the
however this shouldn’t be your primary everything right. Sloppy spelling and a
Website Announcements section to
concern when promoting to the misspelt URL won’t do you any favors.
coincide with your release. There isn’t just
community.
the one forum though, if you are a
Phil Gamble,
member of any other forums which focus
on Game Maker or game development
I believe it would be more valuable to try GameMakerBlog.com■
20 | P a g e July, 2007 http://markup.gmking.org
TUTORIALS
Introduction to DLL-making TUTORIALS
gives us a single mechanism for the file which can be imported into Game DLL's, good luck!
inclusion of a variety of file types: The Maker. To execute your DLL's functions
GEX file. all you have to do is call the name of the
function or the alternate name you Resources
The GEX file will act as a container for defined in the extension builder from Microsoft Visual C++ Express
our DLL file that will export it to a
within Game Maker! Visual C++ Developers Center
temporary directory at the start of the Dev-C++
game, call any initialization scripts that MinGW
need to be called, define every function Conclusion DLL Programming Resources on
within the DLL, and finally, when the GMC
You should now know enough about
C++ for Dummies
everything is all done, call any tear DLL creation to get out there and start Game Programming Gems
down functions and release the DLL creating some basic DLL's! Remember
from memory. Unfortunately, you though, DLL creation is a very advanced Footnotes
1
cannot create extensions from within form of programming which can be hard It is unfair to say that the inability of
Game Maker itself. To create your to debug. Before you start trying to C++ to access GM's resources is a con.
extension you will need the free utility make your own GMSoc or Xtreme3D, After all, this is the fault of Game
found here. From within the extension make sure you know enough about Maker, not C++
maker you can simply click "Add DLL" to calling conventions, memory allocation, 2
GM does not define pointers but they
import your DLL and then define your and data types to prevent memory leaks
can be emulated for resources.
functions by adding them to the and buffer overflows which can lead to
functions list (see Figure 2). Now, on the security vulnerabilities in your games. Leif Greenman
file menu, click "Build Package…" to Below is a list of resources which you
compile your project into a single GEX
may find useful when developing your
export double dTextBox( double dX, double dY, double dWidth, double dHeight, double dWinHandle)
{
HWND hwnd = (HWND)(int)dWinHandle;
CreateWindowEx( WS_EX_CLIENTEDGE,
"EDIT",
"Hello World",
WS_CHILD |WS_VISIBLE |WS_VSCROLL |WS_HSCROLL |ES_AUTOHSCROLL |ES_MULTILINE,
(int)dX,
(int)dY,
(int)dWidth,
(int)dHeight,
hwnd,
( HMENU ) MAIN_EDIT,
GetModuleHandle( NULL ),
NULL );
return (0);
}
22 | P a g e July, 2007 http://markup.gmking.org
TUTORIALS
Level Editors pt. 1: Format TUTORIALS
that need to be defined, it is a Though the use of commas, colons, or
good idea to include the object’s semi-colons is generally considered
name as the first part of each row, okay, many variables might store text –
to define which object is being and text generally contains all these. For
created. that reason, I suggest to use an
uncommon character as the separators,
For example, a certain object I use (`), (^), (|), etc.
might only need two variables
defined, while others might need To make things “nicer”, I often use two
several ones – that could separators: one to separate the object
introduce array index out of name from the rest of the variables, and
bounds or other types of errors so the other to separate the different
variables from each others.
it’d be better if object names are
Here’s an example of what a file could
defined at first.
METHOD 3: A special file look like:
format Character Separated Values EVIDENCE`96^336^blood_2.png^Evidence
There is no doubt making a special file vs. Fixed Length Record ^Sample evidence text.^/*none*/
format is the most secure and efficient
On one hand, reading and separating
method of storing level data. The idea is EVIDENCE`96^144^blood_2.png^Evidence
Character Separated Values is not a ^Sample evidence text. ^/*none*/
that values are stored in specific
native function in GM, and coding such
locations, and are separated by TILE`128^144^0^0
thing in GML could be difficult – and at
different separator characters (example:
the same time, Fixed Length handling is TILE`160^144^0^0
CSV). This way, the game could read a
easy in Game Maker, as functions like
value, either keep it as a string or turn it TILE`192^144^0^0
string_char_at() and string_copy()
to a real value using the real() function
could easily create parts of a string that
– and setting a variable to that value.
lies within a certain position.
Reading the Format
This is the method I personally use for
However, using fixed length records Using two separators means that
my project, and this is the method we
mean that there should be a maximum readings could occur on multiple stages.
will further discuss in this article.
length for all records, and it also means In the first stage, the strings are
that the file size would be much larger
The format than variable-length records.
AStar DLL
QUICK REVIEW
We could take advantage of Game Character Separated Values succeed in The AStar DLL is one of several
Maker’s ability to read only one time at every way when compared to Fixed path finding DLLs based on the
a row. Different pieces of data such as Length Records except for the fact that effective A* algorithm. It allows
different objects to be added to the they cannot be natively and directly for fast real-time path finding,
room will be stored in separate lines – used in GM. However, GMLscripts.com so that the object could move
this means each has come to the rescue – as shown in around blocks and other
file_text_read_string() carried out Issue 4, script of the month – and gave restricted areas (obstacles) to
would read a single line, and therefore a us the explode_string function. reach its target position.
single object. Which separates a string into multiple
It is very effective, and allows
strings in an array.
Since most games have different types for awesome AI!
of objects, each with different variables Separators
Get it now!
23 | P a g e July, 2007 http://xrl.us/astar
http://markup.gmking.org
TUTORIALS
Level Editors pt. 1: Format TUTORIALS
Table 1: First stage
SPR[0] SPR[1]
EVIDENCE 96^336^blood_2.png^Evidence^Sample evidence text.^/*none*/
EVIDENCE 96^144^blood_1.png^Evidence^Sample evidence text.^/*none*/
TILE 128^144^0^0
TILE 160^144^0^0
TILE 192^144^0^0
N E W S
Cage Match no more.. again?
Though not directly related to of a weekly Cagematch – until recently.
Following these events, the Game
development – the Game Maker The Cagematch was suspended after Maker Community moderation staff
Community’s Cagematch (once seen as a about 100 mysterious votes came from decided to suspend the Cagematch until
method of showcasing one’s work) – has nowhere to one of the games. However, further notice.
now been suspended until further notice. the creator of the game insists he has
It is not known whether the Cagematch
nothing to do with it.
The Cagematch used to be run by Dex in will reopen in the near future, and it is
the old days, until he became too busy to It now appears that a hidden iframe or a also not known whether it has only
handle it, and eventually the Cagematch similar trick in a certain site was placed, been suspended for inspections or not.
ceased to exist. which forced users to automatically Eyas Sharaiha
Not-so-long-ago, Ablach Blackrat took vote for that certain game.
over, and revived the long-liked tradition
Introduction
So, when you open it up, you see a
bunch of DLLs and a couple of example
games. Look through them, and when
you’re done playing, open up the
platform tutorial included.
QUICK REVIEW
shape is a plane, and the last argument
So, let me explain this. init_physics(); “Easy Inventory” is a set of
is the argument specific to that shape,
simply initializes physics to run. The Game Maker scripts designed
which is direction. Unlike Game Maker,
next piece of code is a bit more to allow you – the developer –
the directions are as follows: 0° is up,
complicated. We’ll take it step by step. to add inventories to your
90° is right, 180° is down, and 270° is
The function, create_body(), is pretty game. This is particularly useful
left. Because the plane is on the left side
self-explanatory. The first two in RPG games like Diablo, etc.
of the screen, we want it to stretch until
arguments are x and y. So, this creates a it reaches the other side, the right. It allow for the drawing and
body at the bottom-left corner of the Different shapes have different manipulation of the inventory
room. The next argument is the density. arguments, too. For example, a ball’s and the items in it using simple
This can be any positive number (for a only argument is its radius, and a lines of code.
good scale, use 1 as a small chapter rectangle’s two arguments are its width
book, 3 as a dictionary and 5 as a and height. Get it now!
http://xrl.us/inventory
25 | P a g e July, 2007 http://markup.gmking.org
ENGINE
GMPhysics ENGINE
{ Put a Create event in it, then put the
update_bodies(); {
following piece of code in its create
}
event: destroy_body(h);
{
Making Bodies Making Joints
object_update(h);
So, create a new object called obj_box Joints are pretty easy to make, and can
and give it a simple 32x32 box sprite. } provide you with pretty amazing results.
Make sure that the origin of the sprite is
in its center! This is very important! That simply updates it. The last thing There are three types of joints, which
you’ll want to do is make it so that when will all be explained.
Get it now!
http://xrl.us/d3d9w
26 | P a g e July, 2007 http://markup.gmking.org
ENGINE
GMPhysics ENGINE
{
create_joint(firstvar.h,
secondvar.h, JOINT_SLIDER,
get_body_x(firstvar.h),
are very easy to create, and link two
get_body_y(firstvar.h), 180);
objects together. To make one, use this:
}
{
create_joint(something.h,
Everything from the hinge joint is
something.h, JOINT_FIXED); included. The last argument, which is
new, is the direction in which the slider
}
joint points.
QUICK REVIEW
The first three arguments link the two This dialogue system imitates
{ bodies with a hinge joint. The last two is the one present in Baldur’s
firstvar = instance_create(100, 100,
where the joint is anchored. If you want Gate. This includes scrollable
obj_box); B to swing around A, anchor the first dialogues, with the ability to
one. If you want A to swing around B, use the script in conjunction
secondvar = instance_create(200,
anchor the second. (Usually this won’t with room views (early versions
200, obj_box);
matter unless you’re using a static body require editing, latest version
create_joint(firstvar.h, as one of the objects.) has it native).
secondvar.h, JOINT_FIXED);
The last kind of joint is a slider joint. Features include multi-line with
}
Slider joints are usually the hardest type setting line limits and
of joints to understand. Here’s an conjunction with scrollbars and
Take note that this assumes firstvar
example of the code used for creating a scrolling buttons.
and secondvar have already created
slider joint:
their bodies. If you put a create_body();
Get it now!
27 | P a g e July, 2007 http://xrl.us/dialogue
http://markup.gmking.org
ADVERTISEMENT
#define file_bin_read_word(fileid,
size, bigend) Download the extension
file_bin_read_word reads an integer word of the given http://gmbase.cubedwater.com/view_ex.php?ex=118
size (in bytes) from an open file stream in little or big- Leif Greenman
endian byte order.
QUICK REVIEW
file_bin_write_word(fileid, size, to optimize tile usage in Game Maker –
bigend) leading to a speed boost.
file_bin_write_word does exactly what it says, it writes a
little or big-endian formatted integer word with the given The author says the tile optimizer could
size (in bytes) to an open binary file. increase the FPS of a game (provided it
uses a sufficient amount of tiles)
dramatically – a figure that could rise up
#define radix_change(number, to (but not always) an 820% FPS gain.
old_base, new_base)
The script is very simple – however the
The radix, or "base" of a number (ex. Decimal, binary, or
author warns us not to use this script
hexadecimal) is notoriously difficult to change with
unless we have about 30 tiles in a room,
conventional mathematical methods. Rithiur however,
or more, otherwise the script would not
takes a different approach and uses strings to change the
be as effective.
base of any given number. I obtained permission long
ago to use this script, however, credit to Rithiur should The example is provided in the GM6
probably be given. format. You must have at least a
registered version of Game Maker 6.
Get it now!
29 | P a g e July, 2007 http://markup.gmking.org
http://xrl.us/tile
Script of the Month
SCRIPTS
file_text_close(fid);
SCRIPTS
Powered By: return 0;
}else{
GMLscripts.com return -1;
}
}
GRAPHIS
Graphic Design “But g00d gamezzz dont n33d graphix! „
Most developers using GM forget that mapping that makes your computer cringe.
their main way of conveying However, the game rocks - say what you
information to the user is through want – and it rocks without any of those
BAD
graphics. Nearly all the relevant info special effects.
'Chain Chomp' has a textured dark
the user needs to play the game is background. There is no need for a
given with sprites, backgrounds, text,
Style rocky looking background because it
and all sorts of images. Particles tell has nothing to do with the game and
Using real photos, or heavily textured
you when something is being hit, or graphics in puzzle games can make the only adds distraction. Even worse,
maybe when the thrusters are on. game all blend together and too hard to the main character has very few
Sprites animate to signify that play. They need simplified graphics, that colors, and it very dark like the
something is moving, or trying to at are easily recognized by the player. Some background. If the game were to use
least. And even when developers know of the best games you will notice, have better graphic techniques, it would
cartoon-like graphics, with a black 1 pixel look more professional.
how critical graphics are to their
games, they often overlook it. On any outline on everything. This makes it all
given day, you can find a handful of very easy to see, no matter what the
sprites are in front of. Now obviously, an
bad games, and a handful of good
RPG with more detailed graphics will take
games. In 95% of the cases, the good
much more time, but in the end, it will
games will have clear, easy to see
look amazing if done right.
graphics, and it will all look nice and
clean. The bad games will have GOOD
Priority 'Seiklus' has cartoon-like sprites that
distracting backgrounds, sloppy
The colors of your objects is very all have a distinct black outline. This
layouts, and sprites that make your
important in any type of game. Too many makes having a white character on a
eyes bleed. There is no reason for this! game makers use a stunning background bright background possible without
With little knowledge of even MS that is way too busy for their game. The making it hard to see. The simplicity
Paint, anyone can fix up their games to background is just what it sounds like, it's in the graphics is also consistent
look nice. to be left in the background and not throughout the game and nothing
distract from the rest of the game at all. looks out of place.
Uniformity
All games need to have a standard Effort!
drawing style for all the graphics. While Fixing up graphics really does not take up
this can sometimes be difficult with much time. I hope this article has taught all
multiple artists, but it's definitely the developers out there that putting a
achievable on any project. If anyone takes little more effort into the thought part of GOOD
a look at Company of Heroes, and then their games' graphic design can make all Objects in 'Wubly 2' are color coded.
takes a look at Command and Conquer, the difference! The most important objects are lime
they will definitely notice the different art green, crimson red, or sharp pink,
styles. Use whatever is best for your Dan Meinzer
while the walls are left a navy blue,
game! Puzzle games need simple art, that which is closer to the background
is easy to see and understand. color.
Minesweeper is a great example of this.
The game does not have any new next
generation blur affects and normal
31 | P a g e July, 2007 http://markup.gmking.org
EDITORIALS
Sounds in Games: How Far? EDITORIALS
There is no doubt that sounds and
Though it’s a good idea to make
music have a crucial part in games –
something “exciting” that would
but the true question is: How much is
generate some enthusiasm for the
too much?
player, you must remember it should
I’d certainly like to listen to background be low and transparent. That is not the
music, and I’d certainly like to hear case when the game is being played;
some sound effects whenever I do a sounds are now part of the gameplay –
certain action, but at what point does and should be louder, more exciting,
sounds become a downgrading and be directly related to the tone of
experience to the game? the game.
To be able to come to a correct, logical However, even in the Game, you must
cannot and should not be implemented be very careful that the background
answer – we need to differentiate
in certain areas. Though in menus, music does not degrade the sound
between various types of sounds – as
option screen, and other similar effects in the game; you should be
each one has its own type of
situations, there might be no need for able to hear all the players speaking,
limitations.
background music, I certainly think you should be able to hear the sounds
Sounds include background music, and there should be. of buttons you’re clicking, and steps
sound effects. The sound effects group the players are making.
The type of music to be present at such
itself could be divided into two: those
areas however must – I repeat: must –
you listen to when clicking buttons, and
interacting with the game’s UI, and
be different (in terms of tone and Sound Effects
mode) from what is present in the Sound effects that need to be in the
those you get form the characters
gameplay. Such music should be
themselves: such as the sound of them game form a huge range of different
talking, their steps, gunshots, etc.
calmer, and it must not be loud.
Though the article is more aimed at the
higher limit for sounds – how much is
GM Cash 1.1
GM Cash is a Game Maker 7 extension
too much – I’ll also be discussing the that adds more Drag n’ Drop actions to
QUICK REVIEW
must-have sounds as well – the the object properties window.
‘minimal requirements’ for games.
The library added allows the game
developer to add links and commands
Background Music that the user could use to donate to the
Background music is an essential part game’s developers, or just pay to get a
of a game, and my personal full version of the game.
recommendation is: at no point in the
game – be it Game Play or just The extension library supports 8 stores at
interacting with the interface – should its current version, these include PayPal,
there be no background music at all. ShareIt, Payson, Ebay, VSTORE, MyStore,
Mal’s Ecomerce, and OSCommerce. It
This may be thought of as – there is no also has support to be used with the YoYo
“too much” background music, and Games community and the Game Maker
when it comes to quantity: it’s true; but Community.
there are certain types of music which
The extension requires Game Maker 7.
_FATAL_ is described as a “fast paced use both hands and are spread out well the full version, but I hope it will be
SHMUP”. You’d be hard pressed to argue across the keyboard. The three action worth the money. It is certainly one of
against that. Within seconds of starting, keys are close together which may be the most underrated games in the GMC
you find yourself surrounded by bullets easy for some, but others may find at the moment.
from various enemy craft whilst you fire a difficult – slipping and pressing the
wrong key or doing so because of not Some Information
seemingly inexhaustible armory of bullets. Creators: ChIkEn AtE mY dOnUtS and
It’s hard to last for long at all and obvious paying enough attention proved
Coffee.
to see why you start with five lives rather problematic for me.
Download link: here.
than the more traditional three. As ever there are cons to the game.
You can automatically see that the game Being a work in progress, it is typically
will have a retro feel to it. The graphics lacking in features. But that will
are formed of very simple, similar looking undoubtedly change. ChIkEn believes
ships and lines to give a feeling of depth. that the game will eventually sell for
Similarly, the sound is the collection of almost 23 USD, so it will almost certainly
squeaks and beeps that one expects to be abundant in features.
hear off a classic arcade machine. To me, I look forward to the end version of this
this is a very admirable quality as I’ve game. With more craft to choose from
always been a fan of very retro game. and different modes of play, it will be “Grego” Tyler
The controls are fairly easy to grasp. You great to play. I probably won’t be buying
Information
Graphics Download Size: 2 MB
8
Download Link: xrl.us/bounce2
6 Download Type: Zipped Executable
Overall
4 Released: July 2006
SoundAuthor: SuperCasey4
SUMMARY
2
0 Review Summary
Graphics: Adequate, not perfect
Sound & Music: Becomes an
irritation, too repetitive.
By manoeuvring your ball so it hits Gameplay: Very simple controls,
Gameplay Music
different coloured blocks your bounce ‘sticky’ issue
Overall: A nice idea enhanced by
power-ups and obstacles
34 | P a g e July, 2007 http://markup.gmking.org
REVIEWS
Snow Ball War REVIEWS
and an added realism is that you can be
What they say hit by members of your own team.
They say it’s a classic game of Capture Perhaps one problem is the one-hit
the Flag. You and a team of blues fight health each snowballer has. You are
the reds for the flag. Click once to get a forced to respawn each time you are
snow ball ready, click again to throw. If snowballed – a health bar indicator
you get hit you will be sent back to the above a player with three-hit health
nearest spawn point. It’s primitive but would be more realistic and would give
addicting!! you a longer chance of fighting your
opposition.
SUMMARY
6
supportive of your efforts to go and
grab the enemies’ flag, instead tending Overall 4 Sound & Music
Review Summary
to throw snowballs at any opposition 2 Graphics: Could be easily improved,
they see and engage in their own mini no much variation
0
war against the computer’s team. Sound & Music: Non-existent
Gameplay: No real bugs, smooth
Unlike many mini-games there are a
AI Gameplay AI: Your opposition are effective in
number of levels to choose from, 4 in
both capturing the flag and
fact, each with its own terrain and a
defending their base. Let down by
different number of participants.
Level Design your own team’s choice of tactics.
One snowball can hit multiple people, Overall: Simple concept which
should have been built upon
35 | P a g e July, 2007 http://markup.gmking.org
further.
THE WRAP UP
Until Next Time! THE WRAP UP
And so it ends: another record- every month. the previous issues, and we’re looking
breaking, content-packed issue of forward for more participation in the
MarkUp magazine! Before I start with all of the thanks, I future.
have an apology first; sorry to Leif
MarkUp Issue 6 also celebrates the half- Greenman who also was a contributor MarkUp has grown in an overwhelming
year anniversary of MarkUp magazine! in the Script of the Month for issue 5 way in the past six months, but we still
We are thrilled by the amount of but was not mentioned. Contributors in aspire to more growth which can only
support, feedback, and contribution scripts at GMLscripts.com are now be done by your continued support and
MarkUp has gotten in the past six mentioned in articles. contributions. To contribute to the
months. magazine you could visit the MarkUp
Again I want to say how much I forum here.
We are also thrilled about the growth of appreciate the support we got from
MarkUp magazine, in terms of content, various Game Maker sites. First and The quality of MarkUp magazine is
readership, and yes: community foremost, thanks to YoYo Games for the expected to improve continuously as we
support. continued endorsement and support of get more readers and supporters.
MarkUp. Remember that even if you cannot
The entire MarkUp staff is contribute in terms of articles to the
overwhelmed with self-satisfaction. Thanks to GameMakerBlog.com and
Magazine, we won’t improve if you
After all, we have not only delivered an GMLscripts.com for the continued won’t give us your much appreciated
excellent publication for six months, but contribution to MarkUp Magazine. Also opinion.
also managed to deliver such a content thank you for GameMakerResource.com
packed issue on-schedule: each time, for all the work that they have done in Once again, thanks for your support!
The MarkUp Staff
MarkUp has sister projects, also developed and maintained by GMking.org, all meant to help Game Developers. To learn
more information about your Game Platform of choice, you could check out GMPedia.org. GMPedia is a game development
wiki with a growing community-base and content.
You can also listen to our audcast – GMPod – related to the Game Maker Community and its events by viewing the Audcast
page on the GMking.org main page.
Markup is an open publication made possible by the contributions of people like you; please visit markup.gmking.org for information on how to
contribute. Thank you for your support!
©2007 Markup, a GMking.org project, and its contributors. This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 License. To view a
copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/2.5/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
Additionally, permission to use figures, tables and brief excerpts from this work in scientific and educational works is hereby granted, provided the source is acknowledged. As well, any
use of the material in this work that is determined to be "fair use" under Section 107 or that satisfies the conditions specified in Section 108 of the U.S. Copyright Law (17 USC, as
revised by P.L. 94-553) does not require the author’s permission.
The names, trademarks, service marks, and logos appearing in this magazine are property of their respective owners, and are not to be used in any advertising or publicity, or otherwise
36 |ofPora affiliation
to indicate sponsorship ge July, 2007
with any product or service. While the information contained in this magazine has http://markup.gmking.org
been compiled from sources believed to be reliable,
GMking.org makes no guarantee as to, and assumes no responsibility for, the correctness, sufficiency, or completeness of such information or recommendations.