Advice
Toolbox
graphic, for each gun. But furthermore, you will
also need unique ricochet sounds for each type of
surface it hits. And decals for the bullet holes. And
sounds for the shell casings when they hit the floor
(for each different type of floor!).
CAUSE AND EFFECT
As a general rule, try to make all parts of the game
as data-driven as possible so other people can help
out in the final stages of development to fix spelling
errors, improve the menu layout, or even translate
the text into other languages. Load each game level
from its own file. Read the button text for each
menu from a file, and use another file to describe
how those buttons are laid out. Then, yet another to
describe how you navigate between those menus.
Having spent quality time building a good UI
system outside of the game, strive to remove as
much of it as possible from inside the game. If
you can remove a bullet count from the interface,
and make it a natural part of the world, you have
made an improvement because every on-screen
element which isn’t part of the game detracts
from the gameplay. The player, after all, wants to
see the game action, and not spend time being
distracted by the spreadsheet of numbers in
the UI depicting time, health, bullets, or some
other such parameter. You can easily replace the
numbers with graphical bars, which change colour
when they change, or flash when reaching critical
levels, since there is more information in knowing
your health is low than the specificity of whether
it’s at two or three percent.
When you have to resort to using words, make
them good words! A war game would never (and
should never!) describe your progress as ‘Level
1’ or ‘Level 2’. Why? Because they don’t describe
the world. However, by simply changing the text
to ‘Private’, ‘Corporal’, and ‘Sergeant’, it creates an
instantly more immersive experience.
If sentences are dynamically generated then
ensure they are grammatically correct. Mixing
‘a’ and ‘an’ is a common mistake, as is writing ‘1
points’. So isolate that logic like this:
getText(points, “You have %d point”, “You have
%d points”);
function getText(count, singular, plural) {
var text = (count === 1)? singular :
plural;
return text.replace(“%d”, count);
}
The first level is the most crucial because it’s the
only one that your players are guaranteed to see.
So finish it last to ensure it doesn’t look dated,
and make it impossible to lose so players are
encouraged to continue!
This – and every – level should contain non-
threatening sections where each new enemy, or
control system feature, are introduced one at
a time so the player is never overwhelmed and
learns about the game organically by ‘doing’. This
is better than forcing the player to go through a
specially created tutorial level, which almost always
bores the player with something little more than a
memory test.
Finally, be disciplined in what you decide to add
or change. Even if you think a code change ‘will
only take an hour’, you have still failed to consider
the time to build, test, and polish it. And if there
are just 100 things like that, then you have just
added two weeks to your schedule. Follow these
quick and easy tips, and you’ll be on the right track
- and saving time – in no time.
wfmag.cc \ 37
Dead Space is the gold standard for
HUD-less design, and something to
draw real inspiration from.
You can demonstrate the
state of armour without
using a number.
“Improving a game is more
about what the player doesn’t
notice than what they do”