関連サイト
本書の関連ページが用意されています。
内容紹介
開発経験に基づくパターン実践の極意!
パターン誕生の背景/エッセンス/適用条件/サンプルを解説。
ゲームプログラミングを含むソフトウェア開発の現場で、デザインパターンをより的確に利用するための解説書。著者は、米国大手ゲーム会社エレクトロニック・アーツでゲーム開発に従事。その経験に基づき、GoFや著者独自のパターンについて考察。より容易に変更できる洗練されたアーキテクチャ、ゲームに求められる実行速度といった視点を重視しつつ、幅広く応用できるパターンやゲーム必須のパターンを取り上げています。本書は、『Game Programming Patterns』の翻訳書です。米国アマゾンで60以上のレビューを集め、その9割が星5つと評価されています(2015年8月)。
【以下、本書イントロダクションより抜粋】
私がこの本で提供したいのは、解決策のメニューのようなものです。この本の各々の章では、単独でコードに適応可能なアイデアを解説しています。役立つものをメニューから選んで組み合わせることができます。
書誌情報
- 著者: Robert Nystrom(著), 武舎広幸(監訳), 阿部和也,上西昌弘(訳)
- 発行日: 2015-09-24 (紙書籍版発行日: 2015-09-24)
- 最終更新日: 2017-01-12
- バージョン: 1.0.1
- ページ数: 392ページ(PDF版換算)
- 対応フォーマット: PDF, EPUB
- 出版社: インプレス
対象読者
ゲームプログラミングの初級・中級者。初級・中級のプログラマー
著者について
Robert Nystrom
プロフェッショナルプログラマーとして20年の経歴を持つ。そのうち10年はゲームプログラミングに従事。米国大手ゲーム会社のエレクトロニック・アーツに8年間在籍。
武舎広幸
マーリンアームズ株式会社代表取締役。機械翻訳など言語処理ソフトウェアの開発と人間翻訳に従事。東京工業大学大学院博士課程に入学。米国オハイオ州立大学大学院、カーネギーメロン大学機械翻訳センター(客員研究員)に留学後、同社を設立。
阿部和也
1973年頃よりFORTRAN、1980年頃よりBASICでプログラミングを始める。COBOL、PL/I、Cを経て、1990年にビットマップフォントエディタ「丸漢エディター」を発表。現在はPerl、PHP、JavaScriptにより病院情報システムの機能拡張に取り組んでいる。
上西昌弘
学生時代から講義や趣味でプログラミングに親しむ。製造業の情報部門で3D CGおよびAI技術をベースにした開発業務に長年従事した。コンピュータ関係を中心とした書籍の翻訳に参加するとともに、産業翻訳に携わっている。
目次
謝辞
目次
- 0.1 既存の本について
- 0.2 デザインパターンとのつながり
- 0.3 この本の読み方
- 0.4 サンプルコードについて
- 0.5 これから進む道
第1章 アーキテクチャ、実行速度、ゲーム
- 1.1 ソフトウェアアーキテクチャとは何か
- 1.2 分離のコスト
- 1.3 実行効率と実行速度
- 1.4 悪いコードの良い点
- 1.5 バランスの保持
- 1.6 単純さ
- 1.7 うまくやるヒント
■Part II デザインパターン再訪
第2章 コマンド
- 2.1 入力の設定
- 2.2 アクターへの指示
- 2.3 「取り消し」と「再実行」
- 2.4 クラスが良くて関数はダメ?
- 2.5 参考情報
第3章 フライウェイト
- 3.1 木があってこその森
- 3.2 1,000 個のインスタンス/3.3 フライウェイトパターン
- 3.4 木を生やす場所
- 3.5 パフォーマンス
- 3.6 参考情報
第4章 オブザーバ
- 4.1 達成の認定
- 4.2 実装
- 4.3 「処理速度が遅すぎる」
- 4.4 「動的メモリ確保の処理が多すぎる」
- 4.5 残った課題
- 4.6 現在のオブザーバ
- 4.7 オブザーバの今後
第5章 プロトタイプ
- 5.1 デザインパターン「プロトタイプ」
- 5.2 言語の理論的枠組みとしてのプロトタイプ
- 5.3 プロトタイプとデータモデリング
第6章 シングルトン
- 6.1 シングルトンパターン
- 6.2 使用する理由
- 6.3 使用をためらう理由
- 6.4 代替手段
- 6.5 シングルトンに残されたもの
第7章 ステート
- 7.1 みんなそうだった
- 7.2 解決手段としての有限状態機械
- 7.3 列挙と分岐
- 7.4 「状態」のパターン/7.5 各状態のクラス
- 7.6 状態への委任
- 7.7 状態のオブジェクトの存在場所
- 7.8 入口処理と出口処理
- 7.9 うますぎた話
- 7.10 階層的状態機械
- 7.11 プッシュダウン・オートマトン
- 7.12 どれほど有用なのか
■Part III シーケンスのパターン
第8章 ダブルバッファ
- 8.1 パターン誕生の背景
- 8.2 パターン/8.3 パターンの適用条件
- 8.4 パターン使用上の注意/8.5 パターンのサンプルコード
- 8.6 検討項目
- 8.7 参考情報
第9章 ゲームループ
- 9.1 パターン誕生の背景
- 9.2 パターン/9.3 パターンの適用条件/9.4 パターン使用上の注意
- 9.5 パターンのサンプルコード
- 9.6 検討項目
- 9.7 参考情報
第10章 更新メソッド
- 10.1 パターン誕生の背景
- 10.2 パターン/10.3 パターンの適用条件
- 10.4 パターン使用上の注意
- 10.5 パターンのサンプルコード
- 10.6 検討項目
- 10.7 参考情報
■Part IV ビヘイビアのパターン
第11章 バイトコード
- 11.1 パターン誕生の背景
- 11.2 パターン
- 11.3 パターンの適用条件/11.4 パターン使用上の注意
- 11.5 パターンのサンプルコード
- 11.6 検討項目
- 11.7 参考情報
第12章 サブクラスサンドボックス
- 12.1 パターン誕生の背景
- 12.2 パターン/12.3 パターンの適用条件/12.4 パターン使用上の注意
- 12.5 パターンのサンプルコード
- 12.6 検討項目
- 12.7 参考情報
第13章 型オブジェクト
- 13.1 パターン誕生の背景
- 13.2 パターン/13.3 パターンの適用条件/13.4 パターン使用上の注意
- 13.5 パターンのサンプルコード
- 13.6 検討項目
- 13.7 参考情報
■Part V 分離のパターン
第14章 コンポーネント
- 14.1 パターン誕生の背景
- 14.2 パターン/14.3 パターンの適用条件/14.4 パターン使用上の注意
- 14.5 パターンのサンプルコード
- 14.6 検討項目
- 14.7 参考情報
第15章 イベントキュー
- 15.1 パターン誕生の背景
- 15.2 パターン/15.3 パターンの適用条件
- 15.4 パターン使用上の注意
- 15.5 パターンのサンプルコード
- 15.6 検討項目
- 15.7 参考情報
第16章 サービスロケータ
- 16.1 パターン誕生の背景
- 16.2 パターン/16.3 パターンの適用条件
- 16.4 パターン使用上の注意
- 16.5 パターンのサンプルコード
- 16.6 検討項目
- 16.7 参考情報
■Part VI 最適化のパターン
第17章 データ局所化
- 17.1 パターン誕生の背景
- 17.2 パターン/17.3 パターンの適用条件
- 17.4 パターン使用上の注意/17.5 パターンのサンプルコード
- 17.6 検討項目
- 17.7 参考情報
第18章 ダーティフラグ
- 18.1 パターン誕生の背景
- 18.2 パターン
- 18.3 パターンの適用条件
- 18.4 パターン使用上の注意
- 18.5 パターンのサンプルコード
- 18.6 検討項目
- 18.7 参考情報
第19章 オブジェクトプール
- 19.1 パターン誕生の背景
- 19.2 パターン/19.3 パターンの適用条件
- 19.4 パターン使用上の注意
- 19.5 パターンのサンプルコード
- 19.6 検討項目
- 19.7 参考情報
第20章 空間分割
- 20.1 パターン誕生の背景
- 20.2 パターン/20.3 パターンの適用条件/20.4 パターン使用上の注意
- 20.5 パターンのサンプルコード
- 20.6 検討項目
- 20.7 参考情報