Infinite
Game Universe: Level Design, Terrain, and Sound
Author:
Guy W. Lecky-Thompson
Publisher: Charles River Media
ISBN: 1-58450-213-4
Purchasing: [Amazon.Com]
- RRP US$49.95
Reviewed: 10th September 2002
Front
Cover Shot:
Overview
This
book follows on in the foot-steps of 'Infinite
Game Universe: Mathematical Techniques' (reviewed
here), and is basically a continuation of the
trends set out previously. Whereas the previous
book was fairly generalized in it's study of
random numbers, probability etc... this book
focuses a bit closer on three areas most people
will be more familiar with.
An
interesting was of looking at old tricks
This
book is still primarily concerned with an
'infinite game universe' - the use of mathematics
and algorithms to create a rich gaming world
that's not necessarily constructed by the game
designers before-hand.
There
are several very good books on the more 'classic'
forms of game programming, the Game Programming
Gems series (which the author has featured in) for
example. These books and tutorials focus on what
everyone may consider 'normal' - sound programming
for example: load a sound in memory, play the
sound back to the user, maybe add some
volume/panning and possibly 3D positioning. This
book goes beneath this - what is the wave-form
behind the sound and what can we as programmers do
with it.
In
some respects it's taking a bit of an 'old-skool'
approach to game programming - the advent of
high-level API's such as DirectX has removed some
of the need to bother with the finer-points of
technology and their associated
algorithms/mathematics. As this book shows, in
some cases it is also beneficial to remember the
skills game programmers used in the past as they
can still produce interesting results.
Level
Design
This almost comes across as being slightly odd -
the idea of the previous book (and a theme still
in this book) was to create an entire, believable,
world from very little data. More about creating
the building-blocks for the 'level' (and let math
handle the rest) rather than build it in a
traditional style.
That
considered, its an interesting chapter if a little
old - it spends quite a bit of time with platform
games as the main example. Whilst I wouldn't be
able to say that this genre is 'dead' it has been
a long time since a large (and well known) game
has hit the shelves for any of the major game
systems (GB/GBA excluded). The discussion can
still be carried over to other genre's, but it's
not as obvious.
The
overriding feeling having read this section of the
book is that it misses out on a lot of up-to-date
material. If I were to take a quick poll of game
developers it would be far more likely to find
high usage of complex compression algorithms and
various forms of tree's for data storage as well
as graphical presentation.
Terrain
The coverage of terrain is one of the longer
parts of the book, yet it covers only a small
portion of the terrain rendering field. This is to
be expected; in recent years terrain generation
and representation has advanced considerably - it
could quite easily justify it's own book. What we
get in this book is almost entirely regarding the
generation of terrain.
However,
in tune with the previous volume and the general
idea of the series I feel it misses a couple of
points - mathematics for an infinite universe and
the general ideas discussed throughout this book
aren't put to their full potential. Simple things
such as procedural texture creation (both for
land, plants and skies) and real-time terrain
generation (that fits in with visibility
algorithms).
Regardless
of this, the content is of a high quality - the
standard fault line and mid-point displacement
methods are covered, as well as various methods of
smoothing. It's not directly mentioned, but you
can use the information found in other chapters on
data representation and stored to optimize the way
that terrain geometry is stored (it's often a
logistical nightmare).
Sounds
Of all the chapters covered so far in this
review, the sound/music chapter is by far the
best. This is because it has the most to say, and
is the most relevant to modern hardware (as
mentioned, other chapters neglect modern hardware
in some respects).
The
area's covered in this section vary from standard
to academic level research. Sound synthesis
(particularly voice replication/analysis) and
'natural language recognition' are hot-topics for
academics the world-over. The author has done a
great job of bringing these down to the level of
mere mortals. The practical aspect (as in
case-studies and usable source code) gets a little
thin on the ground in some places, but that is a
minor fault in an otherwise intelligent and well
thought out chapter.
Data
storage and resource management
The author acknowledges at the start of this
section, very wisely, that 'not everyone owns the
sun...'. Second to run-time performance, it is of
utmost importance to game developers to ensure
that the underlying resources and general
logistics are kept in line. In modern games
textures, sounds, music and just general data
files can get very large very quickly. This
chapter addresses this, and adds a new spin to the
ball - the handheld and console market. It is
common (now) to find a PC with 128mb system memory
and a 16mb graphics card, and not too hard to find
a PC with 512mb memory and 128mb graphics memory -
but even the XBox (currently 'top dog' for
technology) only has 64mb shared memory.
This
section of the book has lots of really interesting
and really useful information regarding the
consoles and hand-helds available at the time of
writing (it's around a year old and still
accurate). This information does make for
interesting reading - hardware such as a the
Gameboy are perfect case studies of limited
processor and memory environments.
The
lessons learnt in this section won't necessarily
be important to a standard PC developer used to
having 128mb of RAM 'lying' around, but it could
provide an interesting new approach - some of the
ideas presented that are essential on hand-helds
could prove useful when applied to PC's.
In
Conclusion
The writing style is similar to that of the
first volume - generally good. However this volume
benefits from being a bit more applied, many more
of the concepts and chapters presented in this
book are likely to match up with situations and
problems most game developers will have stumbled
across at one point in their lifetime.
It
would probably be best if you owned both volumes
(I'm sure the publisher and author would like
this), but it isn't necessary, and if I were
forced to choose one - it would be this second
volume.
Good
Things |
Bad
Things |
•
Improves on the previous volume |
•
Full appreciation of this volume would
require that you've read the first. |
•
Many more separate parts to this book -
its likely you'll find something to your
fancy. |
•
Misses out on some really good juicy
material. |
•
Provides a different way of looking at
some problems. |
•
Uses some old technologies not entirely
relevant in modern games. |
•
Reasonably good CD included. |
|
•
Excellent sound/audio section |
|
•
Brings some traditionally academic level
work down to a usable level. |
|
•
Good writing style. |
|
•
Not specific to any API or operating
system. |
|
|