Wednesday, May 2, 2007

Review: Dickheiser, M. Game Programming Gems 6, Charles River Media, Boston: Massachusetts, 2006.

This is the sixth volume of the popular and practical Game Programming Gems series. The series from the 1st volume has addressed timely issues as they have emerged; currently, teams are growing larger and developers are increasingly specialists. The Gems series addresses this need by providing state-of-art, readily available material for the specialist and handy resources that may be outside your bailiwick. Also timely is that current machines and player expectations are requiring higher-fidelity models and animations, fancier physics and graphics effects, and more intelligent AI. With these rising expectations on the work of programmers and the greater level of sophistication required, these demands entail flexible teams and longer production schedules, especially in light of scripting and data-driven systems (p. 319). Of course, the biggest issue is cost (p. xi). Helpfully, the over 50 articles in the volume address these demands and expectations.

An important fact is the collaborative reach of the game technology experts in that they arise from sundry backgrounds and over twenty countries. The experts are not only gaming experts but some are from outside the industry. Moreover, collaboration is truly global: from every part of the world, encompassing such diverse places as Eastern Europe, Latin America, North America, Singapore, and Japan.

This volume is not recommended for a faint of heart newer game programmer since this does not really function as a primer although it is very readable nonetheless. More likely is that the specialist will pick and choose their topics of interest and the dedicated programmer will learn a great deal of interest by reading more thoroughly. The series is aptly named Gems and there are nuggets galore.

A pragmatic way to find the needed gems is to peruse the seven parts for something of interest: Section 1 General Programming; Section 2 Mathematics and Physics; Section 3 Artificial Intelligence; Section 4 Scripting and Data-Driven Systems; Section 5 Graphics; Section 6 Audio; and Section 7 Network and Multiplayer. Most programmers would benefit by finding their particular areas of interest and then look for handy tools in other sections.

General Programming is not for the novice, as the name may imply but rather involves multiprocessor techniques, unit testing, and security fingerprinting. Mathematics and Physics is a constant and involves all things FPU, CPU, and GPU. Artificial Intelligence is always popular, and in this volume demonstrates current work in cognitive science and machine intelligence, with a strong representation from academia. AI techniques shown here can be applied in “other systems in the engine” (p. xvii). The inaugural appearance of Scripting and Data-Driven Systems is a worthwhile addition to the Gems series. The most popular and emerging languages (with the main core C++: Python, Lua, GameMonkey, and AngelScript) provide a starting point for your engine with a flexible backbone. Graphics combines old and new technologies with numerous sharp techniques. Audio includes insightful ideas for advanced uses of the audio system. Finally, Network and Multiplayer is another emerging area as global players, Massively Multiplayer Online Prototype (MMOP), plug in to play. As the gaming content has increased so too has the multiplicity of players and now, across networks.

The Editor notes that gaming is not just for game developers anymore. Game-based Learning, Edutainment, commercial and military training simulations, academics, and other "serious games" have all made their mark (p. xv). The upshot of this new found attention is that the "noobs" (p. xvi, a slang insult for newbies) are starting to feed back their input into gaming. At this point, the implications of this feed back is not at all clear but what is obvious is that gaming will be transforming into new and potentially very excitingly complex areas.

The focus in this volume accounts for gaming complexity focusing as it does on providing cutting-edge development that is of interest to those outside the gaming industry. Another sign of gaming maturity is the rise of growth and complexity issues related to the size and intricacy of games. The section on Scripting and Data-Driven Systems, along with Network and Multiplayer, converge in the two emerging areas of interest to those outside gaming. Some of the most exciting topics are these two, especially when converged. A related area of convergence is how AI is of interest to those inside gaming and outside it as well. If well coded, AI can provide the behavior of characters that are seemingly more intelligent, more human-like, hence yielding a more involving game.

This volume, although replete with complex topics, is readable, current, and just about the best in its field. The enclosed CD has source code illustrating points in the articles. The Index is really handy as well, including as it does information on all six volumes in the series. The illustrations are well done and add desirable visual examples.