Back end, programming tasks associated with, 474
Backbuffer, 163–164, 174
non-flipping, 198
saving, 381
Best practices
active build targets, 106
active controls, cursor shape for, 154
active files, naming, 49
AI code, debugging, 434
APIs, consideration of, 37
art, storing, 253
automated testing, 515
backbuffer, saving, 377
beta testers, employing, 548
breakpoints in debuggers, adding, 416
buffer zones in code, creating, 278
bug numbers, attaching, 546
bugs, commenting, 535
code reviews, 468
compiler bugs, isolating and posting, 455
controls, mapping to devices, 150
coordinates axes, test object for, 440
crashes, fixing, 526
debug and release files, distinguishing between, 105
DEBUG game.ini file, overriding screen options in, 224
Decompression API, using callback with, 260
digital audio, sampling rates for, 254
disappearing bugs, tracking, 441
drive mapping, using, 263
error alerts, creating, 413
experiment-driven debugging, 432
features, importing into games, 262
file format changes, detecting, 265
flipping surfaces, 164
frame rate, calculating, 21
full-screen mode debugging, 422
game defaults, setting, 204
Game_App_Directory, using, 223
hard drive sounds, 259
hardware, understanding, 258
header files, updating, 268
IDirect3DDevice9 class, calling, 336
indexes and files, storing, 259
keyboard input, processing, 138
LOGFONT, displaying fonts with, 184
long file names, compatibility of, 389
macros and build targets, 106
memory allocator, implementing, 276
memory leaks, detecting and reporting, 448
milestone acceptance, budgeting time for, 464
milestone descriptions, creating, 461
multithreaded protection, 59
multithreaded smart pointers, templates for, 59
obese game data, directing, 262
operating system related bugs, fixing, 527
optional<T>, using, 93
personnel, taking care of, 557
pixel operations, 64
programming in teams, 467
RAM, trading load time for, 260
remote debugging, 422
resource cache, organizing, 279
resources, loading, 278
resources, prioritizing, 280
screen management, 140
screen shots, storyboarding with, 475
smart message box system, 374
software, experimenting on, 430
software recovery, 413
sound systems, debugging, 434
sprites, ordering, 190
standard solutions, using, 127
stream constructors, testing, 52
task completion, allowing time for, 485
tasks, estimating time for, 480
text cache, initializing, 204
tooltips, placement of, 155
tradeshow attendance, 8
translations, order of, 299
uncompressed video, moving, 256
video files, backing up, 256
Visual Studio.NET, source directory in, 102
Win32, compatibility documentation of, 382
Win32 function failures, debugging, 414
Z layers, defining, 190
Beta testers, 535–536
Bi-linear filtering, 322
Billboard node, 355
Bin directories, purpose of, 102
Bink Video Tools (RAD Game Tools), 39–41
Bit depth, 19–22, 225
of art, 161, 199
stress testing settings, 500–501
Bit-rate, optical media, 257
BitBlt method, 169
Bitmaps
collision testing, 152–153
drawing, 168–169
storage formats, 252–253
Blitting, 163
BMP format, 166
storing art in, 199
BoundsChecker, 441, 452
Branching, defining, 111
Branching mechanisms, 111–112
Breakpoints, 416–418
Brown, Doug, 77
Buffer zones in code, 277–278
Buffering, 162–164
Bug count, 540
Bug database, 515–526, 560–561
ad-hoc query mechanism, 516–517
backing up, 561
bug description field, 517–519
cause field, 521
content change field, 521
customizable fields in, 525
date and time bug was found, 517
by design field, 521
dev error field, 521
dev missing code field, 521
duplicate field, 521
external change field, 521
external field, 521
file attachments, including, 526
fixed field, 521
functionality of, 519–520
issue type field, 518
machine configuration description field, 517
milestone field, 520
name of who found bug, 517
not reproducible field, 521
not yet implemented field, 521
postponed field, 521
priority field, 520
remote accessibility, 526
resolution field, 521
resolved by field, 520
resolved date field, 520
resolved revision field, 520
revision number field, 517
searching criteria, 516
severity of bug field, 518
specification change/flaw field, 521
statistical analysis of, 531–534
status field, 519
title field, 517
won't fix field, 521
Bug-fixing protocol, adding steps to, 541
Bug reports, 10–11
sample, 522–525
Bugs, 411
"by design" bugs, 492–494, 528–529
compiler-related bugs, 455
corner case types, 493
costs of, 529–531
cut and paste bugs, 451–452
disappearing bugs, 441
drive-related bugs, 454
versus features, 10–11
finding, 544
fixes for, approving, 541–543
fixes for, priority of, 526–528
game data corruption, 448–450
hardware-related bugs, 455
heap corruption, 444–448
longevity of, 542
memory leaks, 444–448
multithreaded bugs, 453–454
operating system related bugs, 454–455
postponing, 554–555
recovering from, 412–413
release mode only bugs, 452–453
reproducing, 433, 491–492, 519
resources, insufficient, 452
retiring, 532
stack corruption, 450–451
tracking down, 433–434
tracking with RAID, 516
types of, 444–455
versioning, 545
volume of, 10–11
"won't fix" bugs, 492–494, 528–529
Build machines, 115–116
backing up, 116
Build scripts
automating, 116–117
creating, 117–121
milestone, 118–121
normal, 117–118
Build settings
automating, 115
post-build, 116
pre-build, 116
Build targets
configurations of, 106
storing, 102–103
Buttons, device-handling code for, 125