出版社内容情報
新標準[Windows 98/DirectX 5]を丸のみ!
これでゲーム開発なんてへっちゃらだ!
最新バージョンのDirectX 5に対応した、開発者向けプログラミング入門書。DirectDrawを中心に、Win32の基本テクニックやゲーム開発
の基本事項などを丁寧に解説します。最終的には、DirectXを組み合わせた簡単な3Dダンジョンゲームを作成できます。付属CD-ROM
には、本文中で使用した全てのプログラムのソースコードと画像ファイルに加え、最新バージョンのDirectX SDKを収録!
目次
謝辞 II
監訳者まえがき III
著者/監訳者紹介 IV
はじめに V
付属CD-ROMについて XI
第1章 ゲームプログラミングの基礎 1
1.1 グラフィックスの基礎 1
1.1.1 ピクセル 1
1.1.2 スクリーン座標 2
1.1.3 画面の解像度 3
1.1.4 色数 4
1.1.5 パレット 5
1.1.6 ビデオモード 6
1.2 ビデオカード 6
1.2.1 ビデオメモリ 7
1.2.2 ビットマップ 9
1.3 COM 10
1.3.1 C言語でのCOMオブジェクトの使用 10
1.3.2 DirectXマクロ 11
1.3.3 #define文によるポインタ型の定義 11
1.3.4 COMオブジェクトの解放 11
1.4 DirectXによるプログラミング 12
1.4.1 ヘッダーファイル 12
1.4.2 ライブラリファイル 12
1.4.3 コンパイラ 13
1.5 まとめ 13
第2章 DirectDraw 15
2.1 DirectDrawの機能 16
2.1.1 DirectDrawのアーキテクチャ 17
2.2 例2-1:Windowsアプリケーションの基本 19
2.2.1 WinMain() 21
2.2.2 Windowsのメッセージ 24
2.2.3 メッセージループ 25
2.2.4 WinInit() 26
2.3 DirectDrawの基本 33
2.3.1 DrawInit() 33
2.4 サーフェイス 45
2.4.1 サーフェイスの作成 46
2.4.2 プライマリサーフェイス 49
2.4.3 DDCreateSurfaces() 51
2.4.4 DDEnable() 53
2.5 コールバック関数 57
2.5.1 WM_SIZEとWM_MOVE 58
2.5.2 WM_KEYDOWN 59
2.5.3 WM_PAINT 60
2.5.4 WM_DESTROY 63
2.5.5 DefWindowProc() 64
2.6 レンダリング 64
2.6.1 RenderInit() 65
2.6.2 Render() 68
2.7 例2-1のコンパイル 73
2.8 例2-2:拡張 74
2.9 タイマー 74
2.9.1 タイマーの設定 75
2.9.2 タイマーの使い方 77
2.10 複合サーフェイス 78
2.10.1 フリッピング 79
2.10.2 複合サーフェイスの作成 80
2.11 サーフェイスの作成 83
2.11.1 バックバッファの取得 85
2.12 レンダリング 87
2.12.1 RenderInit() 87
2.12.2 RenderNextFrame() 88
2.13 複合サーフェイスのフリッピング 90
2.13.1 IDirectDrawSurfaceのインターフェイスFlip()の使い方 90
2.13.2 DDFlip() 91
2.14 例2-2のコンパイル 92
2.15 まとめ 92
第3章 続 DirectDraw 93
3.1 例3-1:ウィンドウモードの追加 93
3.2 コールバック関数 95
3.2.1 WM_TIMER 99
3.2.2 WM_SIZE 99
3.2.3 WM_ENTERMENULOOP 102
3.2.4 WM_NCHITTEST 103
3.2.5 WM_MOVING 104
3.2.6 WM_NCLBUTTONUP、WM_LBUTTONUP、WM_NCLBUTTONDOWN、WM_LBUTTONDOWN、WM_EXITSIZEMOVE 105
3.2.7 WM_COMMAND 106
3.2.8 WM_SYSKEYUP 106
3.3 DDEnable() 108
3.4 クリッパ 112
3.5 サーフェイスの作成 114
3.5.1 DirectDrawClipperオブジェクトの作成 117
3.5.2 DirectDrawClipperオブジェクトの関連付け 118
3.6 レンダリング 119
3.6.1 DDFlip() 120
3.7 例3-1のコンパイル 121
3.8 例3-2:ディスプレイモード 121
3.8.1 WinMain() 121
3.8.2 BuildModesMenu() 122
3.8.3 EnumDisplayModes() 126
3.8.4 DDGetDisplayModesCount() 127
3.8.5 DDGetDisplayMode() 129
3.9 コールバック関数 131
3.9.1 WM_COMMAND 134
3.9.2 WM_SYSKEYUP 136
3.10 ModeX 137
3.11 レンダリング 138
3.11.1 RenderInit() 138
3.11.2 DDFlip() 139
3.12 例3-2のコンパイル 140
3.13 まとめ 140
第4章 パレット 141
4.1 例4-1:最初のパレットの例 141
4.1.1 非パレットモードでの実行 141
4.1.2 パレットクラス 146
4.1.3 CDDPalette::CreatePalette() 148
4.1.4 オーバーロードバージョンのCDDPalette::CreatePalette() 150
4.1.5 CDDPalette::GetDDPalette() 156
4.1.6 CDDPalette::FadeEntries() 156
4.2 レンダリング 160
4.2.1 RenderInit() 160
4.2.2 RenderNextFrame() 162
4.2.3 FillBufferRect() 163
4.3 垂直帰線消去 164
4.3.1 WindowProc() 164
4.3.2 DDFlip() 165
4.4 コールバック関数 166
4.5 例4-1のコンパイル 167
4.6 例4-2:パレットアニメーション 167
4.7 レンダリング 168
4.7.1 サーフェイスメモリへのアクセス 168
4.7.2 RenderInit() 169
4.7.3 RenderNextFrame() 176
4.7.4 PaintFrame() 177
4.8 例4-2のコンパイル 178
4.9 まとめ 178
第5章 ビットマップ 179
5.1 例5-1:ビットマップ 179
5.1.1 ビットマップファイルの形式 179
5.2 CDDDibクラス 182
5.2.1 CDDDib::CDDDib() 183
5.2.2 もう1つのCDDDib::CDDDib() 184
5.2.3 CDDDib::LoadFile() 184
5.2.4 CDDDib::GetPaletteEntries() 189
5.2.5 CDDDib::RowWidth() 190
5.3 レンダリング 190
5.3.1 RenderInit() 190
5.3.2 RenderNextFrame() 196
5.4 例5-1のコンパイル 196
5.5 まとめ 196
第6章 スプライト 197
6.1 スプライトの仕組み 197
6.1.1 移動 198
6.2 例6-1:カラーキーイング 198
6.3 最初のスプライトクラス 201
6.3.1 CDDSprite::CDDSprite() 202
6.3.2 CDDSprite::‾CDDSprite() 205
6.3.3 CDDSprite::Render() 205
6.4 レンダリング 207
6.4.1 RenderInit() 207
6.4.2 RenderNextFrame() 208
6.5 例6-1のコンパイル 209
6.6 例6-2:アニメーションの追加 210
6.7 アニメーション機能を追加したスプライトクラス 211
6.7.1 CDDSprite::CDDSprite() 213
6.7.2 CDDSprite::Render() 215
6.7.3 CDDSprite::AddFrame() 215
6.7.4 CDDSprite::SetFrame() 218
6.8 レンダリング 220
6.8.1 RenderInit() 220
6.8.2 RenderNextFrame() 222
6.9 例6-2のコンパイル 224
6.10 例6-3:スプライトエンジンの改良 224
6.11 自己追跡型スプライトクラス 225
6.11.1 CDDSprite::CDDSprite() 227
6.11.2 CDDSprite::AddFrame() 227
6.11.3 CDDSprite::SetFrameRange() 227
6.11.4 CDDSprite::AdvanceFrame() 228
6.11.5 CDDSprite::Move() 230
6.11.6 そのほかのCDDSpriteメンバ関数 230
6.12 レンダリング 230
6.12.1 RenderInit() 231
6.12.2 RenderNextFrame() 233
6.13 例6-3のコンパイル 235
6.14 例6-4:スプライトエンジンの高速化 235
6.15 高精度なタイマー 235
6.15.1 タイマーの精度の取得 236
6.15.2 タイマーの精度の設定 236
6.15.3 タイマーコールバック関数 236
6.16 高精度なタイマーの追加 237
6.16.1 StopTimer() 239
6.16.2 TimerFunc() 240
6.16.3 ウィンドウコールバック関数 241
6.17 更新すべき矩形を計算する手法 243
6.17.1 更新すべき矩形のインプリメント 244
6.17.2 CDDSprite::Move() 245
6.18 レンダリング 247
6.18.1 RenderInit() 248
6.18.2 RenderNextFrame() 251
6.18.3 PaintFrame() 257
6.18.4 フルスクリーン描画を切り換えるメニューの追加 257
6.19 例6-4のコンパイル 258
6.20 例6-5:ミサイルの追加 258
6.21 自立アニメーション型スプライトクラス 259
6.21.1 CDDSprite::SetFrameRate() 261
6.21.2 CDDSprite::SetSpeed() 262
6.21.3 CDDSprite::Tick() 262
6.22 レンダリング 265
6.22.1 RenderInit() 265
6.22.2 RenderNextFrame() 268
6.23 例6-5のコンパイル 272
6.24 例6-6:衝突の検出 272
6.25 衝突を検出するスプライトクラス 273
6.25.1 CDDSprite::CollisionTest() 273
6.25.2 CDDSprite::GetRegion() 274
6.26 レンダリング 275
6.26.1 RenderInit() 275
6.26.2 RenderNextFrame() 278
6.27 例6-6のコンパイル 282
6.28 まとめ 282
第7章 DirectInput 283
7.1 例7-1:ジョイスティック 284
7.2 API 285
7.2.1 JOYCAPS構造体 285
7.2.2 JOYINFOEX構造体 286
7.3 DirectInputのインプリメント 286
7.3.1 JoystickInit() 286
7.3.2 コールバック関数 290
7.4 レンダリング 291
7.4.1 動きの検出 291
7.4.2 ジョイスティックの座標系 292
7.4.3 RenderInit() 292
7.4.4 JoyCheck() 293
7.5 例7-1のコンパイル 295
7.6 まとめ 295
第8章 DirectDrawの高度な応用 297
8.1 例8-1:スクロール 297
8.1.1 スプライトクラスの再利用 298
8.1.2 CDDSprite::CalcRects() 298
8.1.3 CDDSprite::Render() 300
8.1.4 CDDSprite::Move() 301
8.2 レンダリング 303
8.2.1 RenderInit() 303
8.2.2 RenderNextFrame() 303
8.2.3 JoyCheck() 304
8.3 例8-1のコンパイル 305
8.4 例8-2:複数のスクロールするレイヤーの追加 305
8.4.1 スプライトの初期化 306
8.4.2 レンダリング 306
8.4.3 JoyCheck() 307
8.5 例8-2のコンパイル 307
8.6 まとめ 307
第9章 Direct3Dの基礎 309
9.1 3Dグラフィックスの基礎 310
9.1.1 3Dの座標系 310
9.1.2 ポリゴンとオブジェクト 310
9.1.3 変換 311
9.1.4 レンダリング 312
9.2 Direct3Dでのハードウェアの使用 313
9.2.1 Direct3D HALとHEL 314
9.3 直接モードと保持モード 314
9.4 レンダリングパイプライン 315
9.4.1 変換モジュール 315
9.4.2 照明モジュール 316
9.4.3 レンダリングモジュール 316
9.5 Direct3Dの世界の構築ブロック 316
9.5.1 Direct3Dオブジェクト 316
9.5.2 Direct3Dデバイス 317
9.5.3 フレーム 317
9.5.4 ビューポート 319
9.6 例9-1:ワイヤーフレームモデルの描画 320
9.6.1 例9-1の初期化 320
9.6.2 シーンの構築 327
9.6.3 WndProc():ウィンドウコールバック関数 335
9.6.4 例9-1のコンパイル 344
9.7 例9-2:塗りつぶしたポリゴン 344
9.7.1 SetRenderingOptions() 345
9.7.2 BuildScene() 346
9.7.3 例9-2のコンパイル 347
9.8 例9-3:照明 347
9.8.1 法線 347
9.8.2 照明 348
9.8.3 SetRenderingOptions() 349
9.8.4 BuildScene() 352
9.8.5 ウィンドウプロシージャ 354
9.8.6 例9-3のコンパイル 354
9.9 例9-4:テクスチャマッピングの追加 355
9.9.1 テクスチャ座標 356
9.9.2 SetRenderingOptions() 356
9.9.3 BuildScene() 357
9.9.4 例9-4のコンパイル 360
9.10 まとめ 360
第10章 PCのサウンド機能 361
10.1 サウンド機能の基礎 361
10.2 音のデジタル化 363
10.3 サウンドのミキシング 365
10.3.1 DOSとWindows 3.1での処理 365
10.3.2 Windows 95での処理 367
10.4 サウンドファイル 367
10.5 DirectSoundの概要 368
10.6 まとめ 369
第11章 DirectSound 371
11.1 DirectSoundのアーキテクチャ 371
11.2 DirectSound API 374
11.2.1 DSOUND.DLLからエクスポートされる関数 374
11.2.2 DirectSoundバッファ 375
11.2.3 IDirectSoundインターフェイス 376
11.2.4 IDirectSoundBufferインターフェイス 379
11.3 MMIO関数 381
11.4 DIRSOUNDクラス 383
11.4.1 DIRSOUNDクラスが実行すること 383
11.4.2 DIRSOUNDのインプリメント 384
11.5 3Dサウンドと定位 391
11.5.1 理論 392
11.5.2 DirectSound3D API 394
11.6 まとめ 396
第12章 DirectPlay 397
12.1 なぜDirectPlayなのか 397
12.2 基本的なDirectPlayモデル 398
12.3 DirectPlay APIの概要 400
12.3.1 エクスポートされる関数 400
12.3.2 主なメンバ関数 401
12.4 目標 406
12.5 コード 406
12.6 ロビー 417
12.6.1 ゲームプログラム 417
12.6.2 ロビープログラム 418
12.7 まとめ 419
第13章 人工知能 421
13.1 プレーヤーの監視 422
13.1.1 プレーヤーの追跡 422
13.1.2 プレーヤーの回避 424
13.2 ちょっとした無秩序の追加 425
13.3 チームワーク 426
13.3.1 収束 427
13.3.2 発散 427
13.4 パターン 428
13.5 状態 429
13.5.1 確率を使った状態の選択 430
13.6 視覚 431
13.7 まとめ 434
第14章 ゲームの配布 435
14.1 インストールプログラム 435
14.1.1 DirectXのインストール 436
14.1.2 DirectSetup 436
14.1.3 DirectXSetup() 437
14.2 AutoPlay 440
14.2.1 AUTOPLAY.INF 441
14.3 オンラインヘルプ 443
14.4 ゲームの配布 444
14.4.1 シェアウェア 444
14.4.2 市販のルート 446
14.5 まとめ 448
第15章 総まとめ 449
15.1 まず最初に 450
15.2 ウィンドウコールバック関数 451
15.3 WM_CREATEメッセージハンドラ 456
15.3.1 SetupDirect3DRetainedMode() 457
15.3.2 CreateDeviceAndViewport() 462
15.3.3 BuildScene() 464
15.3.4 SetupNavigator() 476
15.4 WM_PAINTメッセージハンドラ 477
15.5 WM_ACTIVATEメッセージハンドラ 479
15.6 ユーザーとの対話 480
15.6.1 Move() 480
15.6.2 StepForward() 484
15.6.3 StepBackward() 485
15.7 回転関数 486
15.7.1 TurnLeft() 486
15.7.2 TurnRight() 487
15.8 WM_KEYDOWNメッセージハンドラ 487
15.9 WM_TIMERハンドラ 490
15.10 MM_MCINOTIFYメッセージハンドラ 491
15.11 WM_DESTROYメッセージハンドラ 492
15.12 まとめ 492
付録A DirectX 5の新機能 493
付録B DirectXが使用できるデバイスの調べ方 497
索引 505
DirectX 5 Software Development Kitの使用許諾について
ページイメージ
内容説明
DirectX 5の最新情報を盛り込みながら、DirectXを使ったゲーム開発のノウハウを解説した入門書!高速描画用のDirectDraw、入力用のDirectInput、ポリゴン描画のDirect3D、サウンド用のDirectSound、通信対戦用のDirectPlayなどDirectXの各APIを具体的な実例を元にコードを示しながら詳しく解説しています。Win32の基本テクニックやゲーム開発の基本事項などが理解できます。最終的にはDirectXを組み合わせた簡単な3Dダンジョンゲームの作成方法を学ぶことができます。
目次
ゲームプログラミングの基礎
DirectDraw
続DirectDraw
パレット
ビットマップ
スプライト
DirectInput
DirectDrawの高度な応用
Direct3Dの基礎
PCサウンド機能〔ほか〕