Professional Documents
Culture Documents
DEVVING IN
SOUTH
DURBAN
A F R I C A’ S
FIRST
GAME MAKER
COMMUNITIES
GAME
DEVELOPMENT
8 GOLDEN RULES OF
GAME DEVELOPMENT
MAGAZINE
04 - DIGITAL STOMPIES
FEATURE
05 - FUN AND GAMING IN DURBAN
REVIEW
08 - THE CLEANER
DESIGN
10 - 8 GOLDEN RULES
TECH
19 - DATA STRUCTURES: PART 3
MOBILE
22 - GAME DEVELOPMENT IN JAVA:
MULTI-PLATFORMER
TAILPIECE
25 - GAME MAKER COMMUNITIES
21 11 16
33
N
o lies -- this has been quite a month. There’s a big bad boil-up near the end
of every year, with this annum being no exception. During the production DRIVER’S SEAT
of this issue, work commitments took from us one of our dear designers, Stuart “GoNzO” Botma
several of our writing staff and six packets of greatly cherished peanuts (which, the
witty may suggest, are used to pay these staff in the first place).
PASSENGER’S SIDE
Thankfully, the scantness of this issue is going to be cancelled out by the size of Rodain “ Nandrew ” Joubert
our two-month special, due for release in late January and promising over 50 pages
of game development goodness. Why late January? Well, like everyone else, Dev.
Mag enjoys a holiday now and again, and our brief sabbatical from the field will FURNISHERS
hopefully do good in refreshing us for another year of writing. So, be sure to stick Brandon “CyberNinja” Rajkumar
around, and don’t worry -- we won’t be dropping off the face of the earth. Not for Paul “Higushi” Myburgh
longer than a month, anyway.
From the looks of things, Durban is rapidly heating up as a secondary base for ENGINEERS
local Game.Dev activities, moving from its successful D# Hotlabs onto its very Simon “Tr00jg” de la Rouviere
own DevLAN held in November. Two prestigious Game.Dev figures were there to Ricky “Insomniac” Abell
give talks and host workshops over the course of two days, much to the delight of William “cairnswm” Cairns
local devvers. Read more about this rewarding experience in this month’s featured Bernard “BurnAbis” Boshoff
article. Danny “dislekcia” Day
Andre “Fengol” Odendaal
Adios, enjoy the holiday, and we’ll catch you early next year! Heinrich “Himmler” Rall
Matt “Flint” Benic
Deputy Editor Luke “Coolhand” Lamothe
Rodain “Nandrew” Joubert “Skinklizzard”
WEB ACCESS
Claudio “Ch1ppit” de Sa
Robbie “Squid” Fraser
WEBSITE
www.devmag.org.za
http://www.khronos.org/podcasts/
FEATURE
FUN AND GAMING IN
DURBAN
saw its first DevLAN/Game. this country, games are needed card game so as to emphasize
Dev workshop. Held in the – good quality games mostly, but the importance of good design
local branch of I.T. Intellect, it games nonetheless. Not ideas, and planning. To help them all
received a score of budding as the lack of local publishers out with this strenuous challenge
and enthusiastic developers means that local companies are he even gave a small talk on
who gathered to listen, watch hard-pressed to sell game ideas. game design to nudge them in
FEATURE
and most of all absorb valu- This little speech put a purpose the right direction.
game development gurus, game development industry by and early at nine o’clock. This
Danny Day and Miktar Dracon. making the best, most ultra awe- was when the real fun began.
some game ever. But, rather than After a quick introduction to the
The weekend kicked off on let them all run off, cause havoc basics of Game Maker 6.1, a
Friday evening with an introduc- and ultimately get nowhere, very powerful little game creation
tory presentation by Danny Danny moved on to the process tool, along with a demonstration
on game development in SA. of sound game design by giving of just how much could be done
The avid listeners were quickly the attendees a challenge. This with it, the developers were once
by Miktar. The challenge was finish. Being the kind soul that he Johns life: for waking up, one
simple, or so it seemed: one is, he generously gave his half group decided to have the player
had to write a game about a day eaten chocolate to a ravenous (or throw John off of his bed and
in the life of fictional character so it seemed) growing boy who try and hit an X on the floor with
John. How hard could that be? needed the energy, on one condi- him, while another game had the
Well, it turned out to be tougher tion (yes, he puts conditions on player firing neurons into Johns
than the developers thought, not giving away food) – the chocolate synapses to wake him up. For
FEATURE
because of a lack of inspiring was not to be sold on eBay (it’s work, John was anything from a
and awesome ideas but rather going for free but shipping to bling thief to a policeman to the
the lack of experience working anywhere will cost R250). only thing between this world
with Miktar taking the reins and Having replenished their energy,
setting up a projector to do a it was back to work for the devel- All in all, the weekend was a
few tutorials in the one lab and opers. Interestingly, Miktar’s great success with fun being
Danny the same in the other, this tutorial digressed from the life of had by all, in the process of
problem was overcome. John to a tutorial on how to make learning how to make a game…
Lunch break. Ahhh, that dot against a horde of yellow arch devvers Danny and Miktar,
wonderful point when you stand dots. In his defence though, not turning normal innocent humans
up, rub your eyes to try and only was John allowed to dream, into rampaging devlings, but hey
remove the purple spots of retina but the chain reaction caused – who doesn’t want to be a dev-
burn and take a break from by the power pickup was totally ling with the chance of one day
strenuous coding to get food. and completely awesome. Think becoming a great arch devver?
The developers dispersed: some power bullet hits enemy releasing SKINKLIZZARD
T
he Cleaner sees the behind him as he flies through fights becomes part of the
player adopting the role the air. challenge.
of a mage whose goal is to The game’s storyline advances
REVIEW
rid the ‘multiverse’ of an evil by use of numerous cutscenes, As the player progresses
race that seeks to obliterate which set the scene for the through the game, battling
the friendly race of magic player. The back-story quickly enemies and solving puzzles,
wielders. Players will travel fades into obscurity, though, he or she is rewarded with
throughout multiple unique and the focus is quickly estab- experience points which are
worlds, all presented in an lished on the action. And action in turn used to purchase new
incredibly impressive and there is! The game constantly offensive and defensive spells
stylish manner. Every detail throws challenging situations or upgrades. These spells
is there, right down to the at the player, and everything are varied enough so as to
way the player’s cape flows from the terrain to the boss provide strategic uses for all
cal score and sound effects. It is a true boon to gamers that Developer: Darthlupi
REVIEW
the game’s creator, Darthlupi, Website: http://darthlupi.com/
The music works well to set
Genre: Action
the often tense atmosphere, decided to release this game
Year: 2006
and doesn’t become repeti- for free, since it could be easily
Applying Shneiderman’s 8
Golden Rules to Game Design
I
n the world of IT, there is a Strive for consistency players to do things quickly and
whole branch dedicated to a on-the-fly, all while giving them
topic called Human Computer When a player plays a game they an advantage. Things like mouse
Interaction (HCI). The term get used to and comfortable with the gestures make surfing the Internet
DESIGN
HCI is fairly self-explanatory: controls and gameplay mechanics so much more of a joy and it can
it’s basically the study of how as time progresses. While it’s good have the same positive effect on
people interact with comput- to create a sense of advancement a game.
ers and how well the interface by adding things as the player
between the user and computer progresses, don’t go overboard. Offer informative feedback
is designed. Another good way Sometimes, in the process of
to phrase it is simply ‘user- making a game, you test it so often Players need to know what’s going
friendliness’. that it becomes too easy for you on in the game; things like ammo
and you are tempted to make things and health are important to a player
In the field of HCI, a man by the harder. As you design the learning as it influences their decisions.
name of Ben Shneiderman cre- curve and progression of difficulty, Make sure your system provides
ated 8 rules to be applied when always bear the inexperienced all the statistics a player needs
designing the user interface. While player in mind. in a clear and concise manner.
most of us when applied to creat- Enable frequent users to use display things in the corner of the
ing business software, they can shortcuts screen. Recently, some developers
also be applied to game design have decided to remove the on-
with great effect. Let’s take a look As a player invests time in a game, screen display to improve realism.
at the rules and how they can they improve and seek ways to While it’s great to be different, an
improve our games. achieve things quickly with less alternate, effective solution which
effort. Strategy games often offer still depicts vital stats must be put
Let the user know when they Permit easy reversal of actions ago, not without prior warning
have completed a task or some kind of reminder. While
Everyone makes mistakes, and you may have spent many hours
Ever wasted time in a game whether the player has accidentally coding and know the game inside
searching for something when pushed the wrong tile in a puzzle out, the player doesn’t have the
you’ve already found it? It’s not game or has missed the second- same experience as you.
fun and can ruin the experience. to-last golden star while jumping
Make sure things are clearly around in a time trial, offering some- I hope that these points have
designed so as to let the player thing as simple a quick-restart option given you some ideas and things
know if they have been successful is a useful anti-frustration measure. to keep in mind the next time you
DESIGN
or have failed. This gives the player a break and design a game. Try to remember
allows them to try again. that, while designing, the player’s
Offer simple error handling experience is of utmost importance.
Provide a sense of user control These points can help improve the
Offer a struggling player help experience, and a good experience
when it seems he or she has Gaming is an interactive form of results in a happy gamer.
moved astray. Sometimes a entertainment, so players like to feel INSOMNIAC
player attempts a mission, but like they are controlling the action.
doesn’t see the first vital check- While cut scenes are necessary to
point and runs off in the wrong advance the plot, try and keep them
direction. Some subtle guidance at a minimum. You could even be
can give them much needed help. really innovative and give the player
For example, if the player has some form of control in a cut scene.
spent more than a certain amount
between the different game states to ensure that the player always has control over their in-game experience.
S
tate Management refers to A separate Class can be created to for things like highscores or to save
many different aspects within manage the game state. A class can be games etc.
a game. The weapon selected by a created for each game state and the
player in an FPS is an example of main game loop will only execute the Game Maker uses rooms to represent
state management while the screen relevant methods of the active state. game state. Each room is effectively
the player is currently seeing is also With inheritance and polymorphism, the a class that manages the player’s cur-
DESIGN
an example of state management, implementation of a class-based state rent in-game experience. As the game
often referred to as the Game State. system is very easy. A base class can state changes and the player moves
This article will examine various be created that contains virtual meth- into a new room, the old room no
methods of managing Game State ods for the standard functions such longer affects the player or the screen
within a Game’s State Management as Rendering, Update and Input. As in any way and the new room now
framework. new states get added to the game the becomes the item controlling the game
base class is extended to manage the experience. Game Maker ensures that
Game State can be managed as new requirements. When relevant the the Input, Update and Rendering func-
part of the standard game loop. This Game State is marked as active and is tionality for each room is completely
is often used when a single input immediately used within the game. A independent of each other room.
method is being managed or when class based state management system
the number of state is kept very will typically ensure that each state is Whichever way State Manage-
small. To enable State Management atomic and knows nothing about any ment is implemented within a game,
within the Game Loop a global state other state in the game. This therefore certain aspects must be included in
variable can be set and evaluated sometimes requires other mechanisms the design. If these aspects are not
each execution of the game loop. to pass messages between states included as part of the design they will
Based on the currently active state impact the later game implementa-
the relevant rendering and game tion quite heavily. If these aspects
or even on a very small game the rel- State Management design, the effort
evant rendering and updates can be required to extend them for each game
DESIGN
management can implement a complex mechanisms needed to imple- designed state management system
custom method within the class to ment state transition. Either each pass can decrease the amount of work
manage the input handling, while the through the game loop must check for required for a new game significantly
game loop based state management the end of the current state and then as the look and feel of the game is
system may define independent initiate the new state, or an event must already predefined. By spending some
functions to manage the input or be raised by the state that is caught by time understanding the ins and outs
in simpler games may do all input the main game code which controls the of state management each and every
management within a single method. transition to a new state. game the game developer creates will
Input management can also be be easier, quicker and more complex
implemented using events that the In many cases state management than the previous game.
various state management systems can be extended to allow states to CAIRNSWM
subscribe to. have initialization and
finalization functions.
own update method that allows the and load game data etc.
/// Called when the state exists – Must be overriden by child classes
public virtual void DoEndState()
DESIGN
{
mouse.Clear();
if (OnEndState != null)
{
OnEndState(this);
}
}
/// Draw the state onto the screen – Must be overriden by child classes
public virtual void DoDraw()
{
}
W
elcome back. This month we’ll be com- Let’s start with the board itself. Select one of the
pleting the checkerboard we modelled board pieces, go to the materials tab, and create
last time. If you followed the last tutorial, you a material. This new material will automatically be
should have the basic design of the checker- applied to any linked duplicates of the piece you
board with pieces. If you don’t, go back to last selected. We’ll set the material properties first, and
month’s tutorial and create the scene or down- then come back to colouring the pieces. Firstly,
DESIGN
load last month’s file from the Dev.Mag website’s naming the material is often a good idea, espe-
While we have a reasonably good and accurate- to. In the material tab of this new block, select the
looking model, a render doesn’t do it any justice material you just created from the drop down material
at the moment. It needs colour, shading and some box, and then select Add New. This will create a new,
better lighting. If you used the duplication methods independent, material that is based on the settings
described in the previous instalment, then applying of the previous one. Give this new material another
Apply the colours with that in mind. I used the follow- Red Pieces:
ing blue colour scheme for the board: Colour: (R: 1.0, G: 0.2, B: 0.2)
Specular: (R: 1.0, G: 0.3, B: 0.3)
Dark blocks:
Colour: (R: 0.0, G: 0.0, B: 0.2) White Pieces:
Specular: (R: 0.0, G: 0.0, B: 0.4) Colour: (R: 1.0, G: 1.0, B: 1.0)
Mirror: (R: 0.0, G: 0.0, B: 0.6) Specular: (R: 0.9, G: 0.9, B: 0.9)
Light blocks: We’ll also change the colour of the background from
Colour: (R: 0.6, G: 0.6, B: 1.0) the old boring blue. Switch to the Shading Menu, if
Specular: (R: 0.7, G: 0.7, B: 1.0) you aren’t still there, and click the World Buttons icon
DESIGN
Mirror: (R: 0.8, G: 0.8, B: 1.0) to bring up some new options. All you have to worry
button.
CH1PPIT
DESIGN
T
rees are a very popular form branches, any data that has filtered However, this would be very inef-
of data structure, mainly due down here is merely stored2, usually ficient usage of a tree, as we are
to their ability to store data hierar- in the form of a linked list. only dividing all of our data in half.
functionality allows for the data in Binary Trees to the tree and then wanted to find
a tree to be accessed very quickly. a specific one, you would still have
Most often, trees are used to store The simplest form of a tree is known to search linearly through many of
world data for rendering or for pro- as a Binary Tree. This means that them until the one that you wanted
cessing, but they can also be very each node of the tree has at most was reached.
useful for general data storage 2 child branches that lead to new
nodes / data, and they are a very To expand on this example, the
TECH
Basic Tree Structure useful way to store data in a sorted equation used at each node down
The root level of a tree is made up efficiently at a later time. the data is easily sorted into ranges
a single node. This node has some of 10s. To do this, the node belong-
kind of equation(s) or condition(s) A very simple binary tree would be ing to the right child branch of the
associated with it that is used to one where the root node’s equation root node could have the equation
organize the incoming data, as was (x > 0). This means that all data (x > 10), and the node belonging
well as for doing searches when sent into the tree that was > 0 would to the left child branch of the root
data is requested. Along with be placed into the right child branch node could have the equation (x < -
these equation(s) are various of the tree, and all data that was <= 10). This would continue recursively
branches, each corresponding 0 would be placed into the left child for as long as we wanted, with each
to an outcome of the equation(s). branch of the tree new node adding an addition 10 to
more branches.
be able to do anything with its Perhaps the most well known kind of INSERT
left child node as all numbers tree is a BSP Tree, which stands for “bspdtree1a.jpg”, through
between 1 and 10 that get this far Binary Space Partitioning1. As the “bsptree1d.jpg” HERE
will remain at this node. name implies, it is really only a spe-
and not worth dividing again. In order to create a BSP Tree, any
tion” for each node in the tree. The reason behind breaking up the
However, choosing different planes world in this manner is so that for
can provide more balanced and any given plane in the world, it is
INSERT “btree3.jpg” therefore optimal tree creation, so easy to tell which other planes are
1 -- Binary = 2; Space = World/area that you are dealing with; Partitioning = Division
all visible world geometry. Once the world has been divided
TECH
new halves is then divided along an
alternate axis (ie. if the X axis was
KD Trees are similar to BSP Trees used for the first division, then the
except that instead of using actual Y axis would be used for the next).
1 -- This is done by using simple algebra and plugging in the camera data into the Ax + By + Cz + D = 0 plane equation
2 -- However, like BSP Trees, KD Trees can be used in both 2D and 3D worlds
3 -- Generally, the axis used as well as its equation, like with BSP Trees, are decided upon by doing exhaustive searching at the tree generation time
Multi-Platformer
F
or the last couple of months, we have been Check the emulator(s) you want to install and
working under a very utopian assumption click Next and then Finish. The platform will now
that Java’s ‘write once, run anywhere’ ideal appear in the list in the platform manager, you
is realistic. Even within the same profile and can close it.
configuration standards, different devices have
MOBILE
their own quirks. As a mobile developer, you Now in the Tutorial project’s properties dialog
need ways to deal with these quirks. The first (accessible by the right clicking on the project),
weapons in your arsenal are emulators. We have notice the Project Configuration section at the
been using the standard WTK emulator, but most top of the dialog. At the moment you should only
of the major cellphone manufacturers provide have DefaultConfiguration and Add Configuration
their own versions which should more closely in the dialog. Select Add Configuration and in the
resemble their handsets. We will be looking at dialog that pops up, give your new configuration
how to set up one of these emulators and how to a name appropriate to your newly added emulator
have multiple configurations for your project in (for example SonyEricsson) and click OK. Now
NetBeans so you can easily build different ver- in the list on the left, select the Platform group,
sions of your MIDlet. uncheck Use Values from “DefaultConfiguration”
son.com/site/global/docstools/java/p_java.jsp).
Once installed, select Java Platform Manager
from the NetBeans Tools menu. In the platform
MOBILE
getHeight()/2, Graphics.HCENTER|Graphics.TOP);
//#endif
all, rather than Sun’s ugly (and unrealistically
the rest of the tabs to see what they offer as directory to the ‘originals’.
well. Click in the margin again to remove the
breakpoint and press Ctrl+F5 to continue run- Next week we will look at NetBeans’ powerful
ning the game. Notice the text in the middle of WYSWYG mobile form editor and add some
the screen? You expected that, right? structure to our game.
Now I’m sure you can guess what the preproces- FLINT
sor defines are for, but let’s do a little proof of
64Digits
http://www.64digits.com
Game Maker Community
64Digits is an exceptional site which not only
http://forums.gamemaker.nl
hosts your files, but also gives you access to
your own Game Maker blog, download counters
These are the official Game Maker forums. More
and badges. It is delightful to read all the like-
TAILPIECE
often than not, they are filled with lots of contro-
minded developers’ blogs, especially when Game
versies which no-one should play witness to. It
Maker greats like GearGOD (1st lighting engine
is usually what some may call a “n00b-ridden”
in GM) and FredFredrickson (King of Cagematch
place, but it has its merits.
winner, ie Best GM game ever) blog there.
Game Maker Showcase does indeed do what it This is home to greats like Darthlupi (The
says. It is an awesome place to showcase your Cleaner) and Tapeworm (Seiklus). Game Maker
games, since a lot of games get reviewed length- Games is host to a vast archive of Game Maker
ily and quite frequently by the “reviewers”. Its titles! Most of the time, one’s game does not get
forum community seems close-knit – however, reviewed, but it is still a useful place to showcase
this does make it harder for newbies to get in. your work.
Some of the threads (in the off-topic section) are It has a “top-sites” section, which usually falls
legendary and a delight to read. It also seems victim to spammers, but it is still great place to
that it isn’t quite as geared toward game devel- check out the sites of other developers.
oping as other communities are.
TAILPIECE
This is mostly a forum community built around Although this isn’t a Game Maker community, it’s
the concept of “clans”. While I have only a great place to get all the news from all Game
recently started “lurking” there, it seems quite Maker communities, since it gets an RSS feed off
decent. Members get XP for their games, and all the main communities.
level up according to what they did in a “clan”.
TR00JG