トップページへ戻る Professionalゲームプログラミング 2nd Edition

/ Top / 本誌刊行書籍 /


『Professionalゲームプログラミング 2nd Edition』について


Professionalゲームプログラミング 2nd Edition Professionalゲームプログラミング 2nd Edition

坂本千尋 著
340ページ
本体価格2,400円
2005年9月発行
ISBN 4-7973-3261-1

[購入へ]


Windowsゲームプログラミングのテクニックをギュッと濃縮

2000年に刊行され好評を博した『Professionalゲームプログラミング』を最新のPC事情に合わせて改訂しました。サンプルプログラムをVisual C++ .NETに対応させ、新たにDirectXGraphicsに関する章を新設、GDI、DirectDraw、DirectXGraphicsの3つの手法を1冊の本で比較することができるようになっています。ウィンドウの作成やCGの表示といった基礎テクニックから、画面効果(エフェクト)や、カードゲームのアニメーション処理、RPGのマップ表示や敵キャラのアルゴリズムといった応用テクニックまで、幅広い知識を提供します。

ご購入は全国有名書店ほか,直接オンラインで購入できる「SBP Store」へどうぞお願いします。



サポート情報

  • ダウンロードサービス
     本書内で紹介したサンプルプログラムです。

    ※Direct Xのバージョンについて
    サンプルプログラムは、Microsoft DirectX 9.0 SDK Update(2005 August)を用いて、記述、テストを行っております。DirectX 9.0 SDKは定期的にアップデートされており、本書のサンプルで用いたDirectX APIが変更される可能性があります。 異なるバージョンのDirectX 9.0 SDKを用いる場合は、DirectX 9.0 SDKヘルプファイルの「What's New in the DirectX SDK」(D3DX APIの変更)を参照して、変更点をご確認ください。

    ○サンプルプログラム
    実行形式のプログラムです。ダウンロード後、ローカル環境に解凍し、「Sample」ディレクトリ内のexeファイルから実行してください。サンプルの実行にはDirectX9以上が必要になります。

    ○サンプルプロジェクト
    サンプルプログラムのプロジェクトファイル一式です。サンプルごとにディレクトリを分けて格納されています。ダウンロード後、ローカル環境に解凍してください。サンプルプロジェクトはVisual Studio .NET 2003に対応しています。

    ○サンプルの使用にあたって
    本書『Professionalゲームプログラミング 2nd Edition』ならびに、ここで公開するプログラムは、読者の学習を目的にしたものであり、商用利用を許可奨励するものではありません。ただし、学習の一環として「不特定な第三者に配布」を行う場合は、以下の条件を守ること条件として許諾します。
      ・出典元を明らかにし、著作権情報を書き換えないこと。ただし、改変をした場合は、改変者の名前を追加するのはかまわない
      ・非商用利用であれば、筆者および出版社(ソフトバンク クリエイティブ(株))への許諾は必要ない

    ▽データ
    サンプルで使用されるCGデータは、本書の解説のためにのみ作成、もしくは使用許諾を得たものです。データの二次使用は著作権法に基づき禁止されます。

    ▽ソースコード
    変更点をWebなどに公開する場合など、一部を引用する場合は、本書の書名、著者名、出版社名などを明記してください。ただし、引用の範囲を逸脱して公開することは禁止します。

    ※例外
    Libフォルダ下の全ソースコードは、全文の引用を許可します。その場合、上記引用条件を守り、ソースコード中の「著作者情報」を書き換えないようにしてください。

    ▽コンパイル後のバイナリ
    原則的に許可します。その場合、本書の書名、著者名、出版社名などを可能なかぎり明記してください。また、著者および出版社は、本書収録のコードを使用したことによって生じるあらゆる損害を補償しません。

    ※お願い
    営利、非営利にかかわらず、収録コード(もしくはその一部)を使用したゲームを制作した場合、今後の参考になりますので、連絡いただければ助かります。また、できれば作品もお送りいただければありがたく思います。

     

    目次内容
    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_回転」
     


    △[書籍一覧へ戻る] ▲[Topへ戻る]

    C MAGAZINE編集部