0.1 この本はどんな本か XII |
0.2 対象読者 XII |
0.3 必要な準備 XIV |
0.4 話の進め方 XVI |
0.5 この本の読み方 XVII |
0.6 CD-ROMについて XVII |
1 2次元のゲーム |
Chapter1 はじまりのゲーム 2 |
1.1 バズルゲームを作ってみる 3 |
1.2 サンプルコードの解説 8 |
1.3 ステージデータ読みこみ機能をつける 20 |
1.4 C++について補足 26 |
1.5 おまけ : フラグとビット演算 33 |
1.6 おまけ : ポインタとメモリ 43 |
1.7 おまけ : 参照 52 |
1.8 この章のまとめ 59 |
Chapter2 点から始める2Dグラフィックス 60 |
2.1 2Dグラフィックとは何か 61 |
2.2 準備 63 |
2.3 点を打ってみよう 67 |
2.4 荷物君を移植する 69 |
2.5 おまけ : 終了処理 73 |
2.6 この章のまとめ 75 |
2.7 おまけ : 参照 52 |
2.8 この章のまとめ 59 |
Chapter3 描いた絵を使う 76 |
3.1 ファイルから画像を読みこむ 77 |
3.2 画像付き荷物君のサンプルコード 89 |
3.3 アルファチャネルを使う 93 |
3.4 インクルード関係の決め方 102 |
3.5 おまけ : アルファブレンドの高速化 108 |
3.6 おまけ : 加算ブレンド 111 |
3.7 この章のまとめ 113 |
Chapter4 リアルタイムなゲーム 114 |
4.1 リアルタイムなゲームとは 115 |
4.2 アニメーションさせる 119 |
4.3 アニメーション付き荷物君サンプル 120 |
4.4 フレームレートを取得する 127 |
4.5 フレームレートの差に対応する 129 |
4.6 おまけ:フレームレートに合わせてゲームの進行速度を変える方法 132 |
4.7 おまけ : ティアリング問題 138 |
4.8 この章のまとめ 140 |
Chapter5 かんたんなシーケンス遷移 141 |
5.1 ライブラリ追加機能 142 |
5.2 素直なやり方 147 |
5.3 シーケンスを増やしてみる 150 |
5.4 コードをチェック 152 |
5.5 サンプルコードの解説 161 |
5.6 この章のまとめ 172 |
Chapter6 文字の書き方 173 |
6.1 フォント用画像 174 |
6.2 文字描画関数 174 |
6.3 使いやすく 177 |
6.4 使ってみる 180 |
6.5 サンプルコードの解説 181 |
6.6 著作権に注意! 186 |
6.7 サンプルライブラリの機能 187 |
6.8 この章のまとめ 188 |
Chapter7 はじめてのアクションゲーム 189 |
7.1 使用するライブラリについて 190 |
7.2 「爆弾人」を作る 191 |
7.3 サンプルの解説 192 |
7.4 とりあえず背景だけ出してみる 199 |
7.5 動くオブジェクトを配置する 209 |
7.6 いよいよゲームにする 214 |
7.7 この章のまとめ 215 |
Chapter8 平面の衝突処理 216 |
8.1 衝突検出 217 |
8.2 衝突応答 219 |
8.3 複数衝突問題 226 |
8.4 衝突応答と操作性 227 |
8.5 動く物同士が当たる 231 |
8.6 爆弾人の衝突処理 232 |
8.7 この章のまとめ 235 |
Chapter9 いろいろな入力装置 236 |
9.1 入力装置インスタンスの取得 237 |
9.2 キーボード 238 |
9.3 マウス 239 |
9.4 ジョイスティック 240 |
9.5 爆弾人をジョイスティックで操作する 241 |
9.6 この章のまとめ 244 |
Chapter10 少しマシなシーケンス遷移 245 |
10.1 そもそも何が問題だったのか246 |
10.2 継承を使う 247 |
10.3 実際に使う 251 |
10.4 おまけ : シーケンス移動コードを短くする 254 |
10.5 おまけ : 階層間シーケンス移動も短くする 258 |
10.6 おまけ:継承についてもう少し 264 |
10.7 この章のまとめ 270 |
Chapter11 音を鳴らす 271 |
11.1 サウンドライブラリについて 272 |
11.2 おまけ : コンピュータで音を鳴らすということ 274 |
11.3 おまけ : 音の高さと音の大きさ 275 |
11.4 おまけ : 音色 277 |
11.5 おまけ : 音の重ね合わせ 278 |
11.6 おまけ : ドレミの原理 279 |
11.7 おまけ : 楽譜を読みこんで演奏する 281 |
11.8 おまけ : wavファイルの読みこみ 283 |
11.9 おまけ : Soundモジュールを使った波の合成 285 |
11.10 この章のまとめ 285 |
Chapter12 回す、伸ばす、動かす 286 |
12.1 回転 287 |
12.2 ベクタと行列の導入 303 |
12.3 頂点という考え方 310 |
12.4 拡大縮小 319 |
12.5 拡大縮小しながら回す 322 |
12.6 行列の威力 324 |
12.7 おまけ : 回転の式は何故これで正しいのか? 333 |
12.8 おまけ : ちゃんと回す 337 |
12.9 おまけ : 数学の中の行列 338 |
12.10 この章のまとめ 343 |
Chapter13 ハードウエアのパワー 344 |
13.1 使うライブラリについて 345 |
13.2 グラフィックスハードウェアで三角形を描いてみる 345 |
13.3 三角形に画像を貼る 347 |
13.4 アルファブレンド351 |
13.5 回転、拡大縮小、移動 352 |
13.6 爆弾人を移植する 356 |
13.7 この章のまとめ 360 |
2 3次元のゲーム |
Chapter14 立体を描く 362 |
14.1 ライブラリについて 363 |
14.2 3Dアクションゲーム「ロボファイト」を作るには 364 |
14.3 三角形を描く 365 |
14.4 手前のものを手前に描く 366 |
14.5 遠くのものを小さく描く 372 |
14.6 座標変換 382 |
14.7 透視変換も行列に 399 |
14.8 「ロボファイト」を作り始めよう 406 |
14.9 おまけ:zバッファ精度問題 423 |
14.10 この章のまとめ 426 |
Chapter15 ライブラリの作り方 428 |
15.1 全体設計 429 |
15.2 リソースの内訳 430 |
15.3 使ってみよう 441 |
15.4 ファイルからロードする 443 |
15.5 おまけ:ライブラリをゲームから分離する 446 |
15.6 この章のまとめ 454 |
Chapter16 XMLモドキを読むい 455 |
16.1 ファイルフォーマットを決める 456 |
16.2 作る前の準備 457 |
16.3 処理の流れ 460 |
16.4 文字列の解釈 463 |
16.5 コードにする 467 |
16.6 使う 469 |
16.7 サンプルコード 473 |
16.8 おまけ : 書き出し 478 |
16.9 この章のまとめ 482 |
Chapter17 遅くないコードを書くために 484 |
17.1 アルゴリズムと計算量オーダー 485 |
17.2 データ構造の基礎 489 |
17.3 スループットとレイテンシ 503 |
17.4 並列性 505 |
17.5 メモリの問題 507 |
17.6 STLとデータ構造 515 |
17.7 遅いのはどこか 522 |
17.8 おまけ : 関数呼び出しそのものの重さ 523 |
17.9 おまけ : 速い計算と遅い計算 528 |
17.10 この章のまとめ 530 |
Chapter18 立体の衝突処理 531 |
18.1 直方体での衝突処理 532 |
18.2 浮動小数点数を使った衝突検出 536 |
18.3 三角形と線分の交差判定 548 |
18.4 これで実用になるのか? 560 |
18.5 残された問題点 562 |
18.6 この章のまとめ 564 |
Chapter19 ロボファイトの設計 565 |
19.1 シーケンス遷移 566 |
19.2 操作系 566 |
19.3 弾を撃つ 570 |
19.4 一つにまとめる 573 |
19.5 フロントエンド 578 |
19.6 やっぱり足りないもの 581 |
19.7 この章のまとめ 582 |
Chapter20 光が当たるということ 583 |
20.1 物が見えるということ 584 |
20.2 光が減っていく過程 588 |
20.3 計算してみよう 593 |
20.4 ロボファイトに入れてみよう 601 |
20.5 おまけ : 高速化のヒント 602 |
20.6 おまけ : もうちょっとマシな絵にするには 606 |
20.7 この章のまとめ 607 |
Chapter21 キャラクターが動き出す 608 |
21.1 相対移動 609 |
21.2 階層モデルクラス 617 |
21.3 木構造構築の自動化 621 |
21.4 アニメーションのデータ化 627 |
21.5 補間法 635 |
21.6 ロボファイトに入れる 651 |
21.7 おまけ : 連立方程式 vs 決められた傾き 653 |
21.8 おまけ : 足りないもの 654 |
21.9 この章のまとめ 658 |
3 売り物への道 |
Chapter22 遅くない衝突検出 660 |
22.1 とりあえず総当たりの遅さを実感してみる 661 |
22.2 高速化の基本 662 |
22.3 ソートに基づいた方法 666 |
22.4 分割による方法 675 |
22.5 おまけ : 均等分割のさらなる改良 682 |
22.6 おまけ : 高度な空間分割 686 |
22.7 この章のまとめ 691 |
Chapter23 ローディング 693 |
23.1 何故ロード時間は延びるのか 694 |
23.2 ファイルローダクラス 695 |
23.3 ファイル結合による高速化 703 |
23.4 圧縮による高速化 715 |
23.5 おまけ : マルチスレッドによる非同期処理 725 |
23.6 おまけ : 符号化 739 |
23.7 おまけ : 中身を見せないための結合と圧縮 741 |
23.8 この章のまとめ 742 |
Chapter24 floatの使い方 743 |
24.1 桁数に限りがあるということ 744 |
24.2 floatの中身 744 |
24.3 中途半端な数による誤差 746 |
24.4 誤差はどれくらい出るのか 748 |
24.5 誤差を飼いならす 751 |
24.6 特別な数 760 |
24.7 この章のまとめ 762 |
Chapter25 付属ライブラリ本番仕様 763 |
25.1 ライブラリのクラスについて 764 |
25.2 起動設定 766 |
25.3 Framewokモジュール 768 |
25.4 WindowCreatorモジュール 769 |
25.5 Filel0モジュール 770 |
25.6 Baseモジュール 771 |
25.7 Mathモジューール 772 |
25.8 Threadingモジュール 775 |
25.9 Inputモジュール 777 |
25.10 Soundモジュール 778 |
25.11 Pseudoxmlモジューール 778 |
25.12 Graphicsモジュール 779 |
25.13 Sceneモジュール 787 |
25.14 アンチエイリアス 790 |
25.15 最終版ライブラリにロボファイトを移植する 792 |
25.16 Xファイル 793 |
25.17 この章のまとめ 794 |
Chapter26 バグとの付き合い方 795 |
26.1 防火と消火 796 |
26.2 バグの種類 797 |
26.3 「予防」あるいは「防火」のこと 803 |
26.4 「治療」あるいは「消火」のこと 820 |
26.5 ロボファイト安全仕様 824 |
26.6 おまけ:メモリあふれ検出の中身 825 |
26.7 この章のまとめ 829 |
Chapter27 もっと先へ 831 |
27.1 何を学べばいいのか 832 |
27.2 ツール 833 |
27.3 AI 837 |
27.4 ネットワーク 838 |
27.5 シェーダ 839 |
27.6 参考文献 840 |
27.7 こんな本があったらいいのに 846 |
索引 848 |