Professionalゲームプログラミング 2nd Edition / Top / 本誌刊行書籍 / |
|
2000年に刊行され好評を博した『Professionalゲームプログラミング』を最新のPC事情に合わせて改訂しました。サンプルプログラムをVisual C++ .NETに対応させ、新たにDirectXGraphicsに関する章を新設、GDI、DirectDraw、DirectXGraphicsの3つの手法を1冊の本で比較することができるようになっています。ウィンドウの作成やCGの表示といった基礎テクニックから、画面効果(エフェクト)や、カードゲームのアニメーション処理、RPGのマップ表示や敵キャラのアルゴリズムといった応用テクニックまで、幅広い知識を提供します。 ご購入は全国有名書店ほか,直接オンラインで購入できる「SBP Store」へどうぞお願いします。 |
|
|
|
Chapter 0 本書を読む前に ■本書の目的 本書で作成するプログラム サンプルの入手方法 サンプルの実行方法 ■サンプルプログラムの概要 サンプルのフォルダ構成 サンプルの概要 使用上の注意 Chapter 1 雛型の作成 ■MFCでウィンドウを作成する 固定サイズウィンドウの作成 ・開発環境 ・雛型の作成 ・Windows APIの利用 スタイルの変更 ・クライアント領域の周囲の変更 ・ボタンとリサイズ枠の無効化 ・ウィンドウサイズの設定 ・ウィンドウ位置の設定 ・Viewの変更 ・実行してみましょう ■フルスクリーン表示 フルスクリーン@ ・Fullscreen関数 ・RecalcLayout関数 ◇sample「02_FullScreen1」 ◇column フルスクリーンから通常のウィンドウに戻すには フルスクリーンA ・解像度の変更 ◇sample「03_FullScreen2」 ・クラス化(ラッピング) メニューでスクリーンモードを切り換える ◇sample「04_FullScreen3」 ■CGを読み込んで表示する ビットマップイメージの取り扱い ・DIBSection ・DIBSection用クラス BMPファイルを表示する ・LoadImage API ・イメージ情報の取得 ◇sample「05_BmpView」 ◇column 関数を自前で作る 圧縮CGファイルの読み込み ・画像データの圧縮 ・PNG ・読み込み用の関数 ◇sample「06_PngView」 ◇column JPEGとPNG ■画像ファイルの書き込み BMPファイルの書き込み ・PNGファイルの書き込み ・ファイルフォーマットの変更 ◇column 24ビットモードと32ビットモードのどちらが速いか Chapter 2 ゲームのための処理 ■ウィンドウ表示 マルチウィンドウ ・キャプション付きウィンドウの作成 ◇sample「07_MultiWindow」 矩形以外のウィンドウ ・ウィンドウリージョンの作成@ ・リージョンをウィンドウに設定する ・◇sample「08_NonRectWindow」 ・ウィンドウリージョンの作成A ■CGの重ね合わせ 重ね合わせの考え方 24ビット同士の重ね合わせ ◇sample「09_重ね合わせ」 ◇column CG同士の重ね合わせ ■画面効果 コピーによる画面効果@ - ワイプ ・定期的な処理 ・エフェクトの開始 ・ワイプイン/ワイプアウト ◇sample「10_Effect_01_Wipe」 コピーによる画面効果A - ワイプ(別パターン) ・マルチメディアタイマーの利用 ◇sample「10_Effect_02_Wipe別パターン」 コピーによる画面効果B - スクロール ・描画処理 ・スクロールの処理(1ステップ) ・大きなイメージのスクロール ◇sample「10_Effect_03_Scroll」 計算による画面効果 - フェード ・フェードの計算式 ◇sample「10_Effect_04_Fade」 ■画面効果A(Windowsの機能を使ったパターン) 矩形以外のエフェクト ・図形を扱うAPI ・クリッピング リージョンを使ったワイプ@ ・リージョン ・円形のワイプ ・星形のワイプ ・星形の座標設定 ・時計回りのワイプ ◇sample「10_Effect_05_Wipeリージョンを使う」 リージョンを使ったワイプA ・複数の星形ワイプ ・複数の円形ワイプ ・リージョンの作成手順(復習) ◇sample「10_Effect_06_Wipeリージョンを使う2」 ◇column 共通部分の削減 拡大・縮小を使ったワイプ ◇sample「10_Effect_07_Wipe拡大縮小」 ■CGを切り換える クロスワイプ ◇sample「10_Effect_08_CrossWipe」 クロスフェード ◇sample「10_Effect_09_CrossFade」 高速なフェード(MMX使用) ・MMX命令 ・MMX処理 ・アイドル処理 ◇sample「10_Effect_10_FastFade」 ■アニメーション(目パチ) アニメーションの仕組み 目パチ ・アニメーション処理 ・動作の改善 ◇sample「10_Effect_11_目パチ」 Chapter 3 RPG ■マップ表示 イメージによるマップ表示 ◇sample「11_BattleMap_01_イメージマップ」 マップ表示(パーツ使用) ◇sample「11_BattleMap_02_パーツマップ」 ■キャラクターの移動 ◇sample「11_BattleMap_03_キャラ移動」 キャラクターや障害物の管理 ・CSpriteクラス ・CMapSpriteクラス ・CCharacterクラス ・CMapManagerクラス キャラクターの登録 ・プレーヤーキャラクターの登録 ・敵キャラクター/障害物の登録 移動範囲の検索 ・移動可能かどうかの判定 ・移動不可領域の設定 キャラクターの移動 ・移動ルートの決定 ・移動アニメーション ・サンプルを実行してみましょう ■戦闘 思考ルーチン ◇sample「11_BattleMap_04_戦闘」 攻撃範囲の検索 攻撃 CPU側の行動 ・敵キャラクターの移動 ・敵キャラクターの攻撃 思考ルーチン ■俯瞰マップの表示 ◇sample「11_BattleMap_05_俯瞰マップ」 座標の変換 マップパーツ ◇sample「11_BattleMap_05_俯瞰マップ(パーツ)」 キャラクターの重なり マップサイズ ◇column マップ作成ツール Chapter 4 カードゲーム ■カードの作成 トランプの作成 ・カードの外枠 ・上下反転文字の描き方 ・マークの描画 ■カードのシャッフル カードを混ぜる方法 ・カードの初期化 ・カードを戻す ■カードの移動 ドラッグによる移動 ・ドラッグの基本パターン ・カード領域の検索 ・マウスの移動中の処理 ・ボタンが離されたときの処理 ・キャンセル処理 アニメーションによる移動 ◇sample「12_CardGame」 Chapter 5 サウンド ■マルチメディアAPI マルチメディアAPIの利用 ・ライブラリの追加 ・プリフィックス MCI ・MCIの基本的な操作 CDを演奏する ・時間の設定 ・トラック長の検出 ・再生 ・終了の通知 ◇sample「13_Sound_01_CD」 ・サンプルの要点 ・CD-ROMが複数台ある場合 MIDIを演奏する ・MIDIのメリット/デメリット ・MIDIの演奏 ・繰り返し演奏 ◇sample「13_Sound_02_MIDI」 WAVEを再生する ・PlaySound API ・MCIを使った再生 ◇sample「13_Sound_03_WAVE」 ■DirectSound DirectSoundの特徴 DirectSoundの使い方 ・WAVEファイルの読み込み ・DirectSoundの初期化 ・サウンドバッファの作成 ・リングバッファ ・再生 ・DirectSoundでの終了通知 ・スレッドの終了 ◇sample「13_Sound_05_DirectSoundNotify」 マルチスレッド ・DirectSoundを使ったBGMの演奏 ・ストリーミング再生 ・演奏の準備 ・演奏開始 ・演奏スレッド ◇sample「13_Sound_06_DirectSoundストリーミング」 Chapter 6 DirectDraw ■DirectDrawによる高速化 DirectDrawを使った「雛型」 ・MainFrm.h ・MainFrm.cpp ・DirectDraw.h/DirectDraw.cpp ◇sample「14_DirectDraw_00_雛型」 ◇column DirectDrawプログラミング ■CGの重ね合わせ サーフェースの作成 ・サーフェースクラスの作成 ・サーフェースの管理 ・アプリケーションクラスの変更 ◇sample「14_DirectDraw_01_重ね合わせ」 ■フェード DirectDrawを利用したフェード ・サーフェースのロック 直接メモリアクセスによるフェード ◇sample「14_DirectDraw_02_CrossFade」 ・かえって遅くなるケース 高速なフェード ◇sample「14_DirectDraw_03_FastFade」 ・コードの改良 コードの改良のポイント ・CDirectDrawクラス ◇sample「14_DirectDraw_04_CrossFade改良型」 Chapter 7 DirectXGraphics ■DirectXGraphics 3D機能を2Dで使う DirectX SDKのサンプルフレームワーク ・EmptyProject DirectXGraphicsを使った「雛型」 ・Direct3Dクラス ・CDirect3Dクラスのメンバ呼び出し ◇sample「15_DirectXGraphics_00_雛型」 ■CGの重ね合わせ ID3DXSpriteのスピード テクスチャーの作成 描画部分の作成 ◇sample「15_DirectXGraphics_01_重ね合わせ」 ■DirectXGraphicsによる画面効果 フェード ◇sample「15_DirectXGraphics_02_CrossFade」 回転 ・変形を伴う描画 ・画像の表裏を決める ◇sample「15_DirectXGraphics_03_回転」 |