ゲームプログラマになる前に覚えておきたい技術

ゲームプログラマになる前に覚えておきたい技術

概要

セガの新人教育カリキュラムから生まれたゲームプログラミングの解説書です。C++のスキルがある人向けに、パズルや2Dグラフィックスといった比較的簡単なゲームの作り方から、ゲームに絵を取り込む方法、シーケンス遷移、平面の衝突処理、サウンドの挿入などのテクニックを解説し、最終的に3Dでロボットが弾を打ち合うゲームを作るまでを学びます。サンプルコードを収録したCD-ROM付き。

01 この本はどんな本か

一人で3Dゲームが作れるようになる、ということが目標です。
具体的には「某ロボットが弾を打ち合うゲーム」のようなものを作ります。

02 対象読者

  • ゲームを作ってみたいが、どの本を買えばいいのかわからない人
  • プログラミングも少々かじってはみたが、本を読んでも今ひとつピンと来ない人
  • 本格的なゲームプログラミングの本は難しすぎて寝てしまう人
イメージ

03 前提スキル

◆C++言語

  • 関数を作れる
  • クラスの作り方を知っている
  • 変数、配列、制御構造などにある程度親しんでいる

※本文内では、C++言語の基本的な説明はしません。

◆本文内でのプログラミング解説

  • 若干の補足くらいの説明
    • ポインタ、newとdeleteなどのメモリ操作やそれらの配列との関係
  • 必要最低限の説明
    • constの使い方
    • 名前空間
    • テンプレート
    • クラスの継承
    • 演算子の定義
    • C/C++標準ライブラリ

◆他言語経験者について

C++は知らないがC#やJavaなら書ける、という人でもおそらく読めるでしょう。

初心者向けのC++の本を一冊用意しておけば問題ないでしょう。

◆数学

多項式の操作や関数の概念、それに中学レベルの幾何学を前提とします。

三角関数や連立方程式は「一回やったが忘れている」という前提で、解説します。

ベクトル、行列、微分、は全く知らないものとして解説します。

04 必要な環境

ハードウェア PC1台
コンパイラ Visual Studio 2005もしくは2008+Service Pack1
無料のExpressバージョンでも可
http://www.microsoft.com/japan/msdn/vstudio/downloads/
OS Window XP/Vista
DirectX DirectXのバージョン9c以降
http://www.microsoft.com/japan/windows/DirectX/
CPUやメモリ 1GHz以上のCPUと1GB以上のメモリ(目安)

05 内容

今のゲームプログラミングでよく出てくる範囲を、できるだけ広く浅く入れるようにしました。

これだけの分野を全部真面目に扱えば何千ページあっても足りないので、この本ではギリギリ必要なだけやったらすぐに次へ進むスタイルを採用しました。どの分野も中途半端になりますが、重要なのは一通りやることです。たぶんそこから上へは自力で登れるでしょう。

06 CD-ROMについて

・プログラム

本文内で説明したコードが入っています。Visual Studioから実行してください。

本来演習用ですが、ゲーム制作にも使える各種ライブラリも入っています。

・絵

プログラマ1人でできる範囲のものしか使いません。

よって、この本を読んだからといって市販のゲームのような絵は出せません。

・使用条件について

絵素材以外のものは無制限に使って構いません。ただし無保証です。

許可されている行為の範囲、内容は以下の通りです。

ソフトウェア 営利目的の有無を問わず、使用、複製、譲渡、頒布、公衆送信、改変、翻案する行為
画像データ 非営利目的に限り、使用、複製、無償頒布、公衆送信、改変、翻案する行為

自分で勉強する以上の用途に使いたい方は、pdf内もしくは本文中の「0.6.1 ソフトウェア等使用許諾規約」をよく読んでください。

紙面サンプル(pdf) ※7ページ分 416KB
サンプル
get adobe reader 新しいウィンドウが開きます ※ PDFを表示するにはAdobeReaderが必要です
▼関連特集
ゲーム・アプリ開発関連書籍 売れ筋TOP20!

詳細へ

ISBN 978-4-7980-2118-8

価格 本体4500円(税別)

平山尚(株式会社セガ)

京都大学大学院工学研究科にて遺伝子研究に従事。修了後、株式会社セガ(当時は分社化していてヒットメーカー)に入社。 『電脳戦機バーチャロン マーズ』(PS2)及び『パワースマッシュ3』(アーケード、PS3)の開発に参加し、現在に至る。
『電脳戦機バーチャロン マーズ』ではエフェクトやデモその他、『パワースマッシュ3』では描画エンジンや布シミュレーションなどのライブラリ部を担当。

セガ公式サイト

同著者の新刊!


詳細へ
NEW!! 著者の平山氏がCEDEC AWARDS 2009 著述賞を受賞されました。

新しいウィンドウで開く CEDEC AWARDS 著述賞
CEDEC AWARDS 2009
※CEDEC 2009にてレギュラーセッション「チュートリアル:ゲームプログラミングの始め方」も予定されています。

目次

この本はどんな本か

I部 2次元のゲーム

Chapter1 はじまりのゲーム

・コマンドラインで動くこれ以上なく原始的なゲームを作る
・基本的なC++の使い方をいくつか確認する
・フラグとビット演算
・ポインタとメモリ
・参照

Chapter2 点から始める2Dグラフィックス

・付属ライブラリを使ってみる
・2Dグラフィックスの基本を学ぶ
・荷物君に絵をつけてみる
・終了処理

Chapter3 描いた絵を使う

・画像ファイルの読みこみ
・アルファブレンド
・インクルード関係の設計
・アルファブレンドの高速化
・加算ブレンド

Chapter4 リアルタイムなゲーム

・リアルタイムなゲームを作る
・フレームレートを制御する
・簡単なアニメーション
・可変フレームレート設計
・ティアリング

Chapter5 かんたんなシーケンス遷移

・シーケンス遷移を作ってみる

Chapter6 文字の書き方

・文字を出す

Chapter7 はじめてのアクションゲーム

・新しくアクションゲームを作り始める

Chapter8 平面の衝突処理

・当たっているか調べる
・当たった時にめり込まないようにする
・爆弾人に組み込んでみる

Chapter9 いろいろな入力装置

・キーボード、マウス、ジョイスティックからの入力を取得する

Chapter10 少しマシなシーケンス遷移

・シーケンス遷移の改良
・継承の使い方
・シーケンス遷移の改良上級編
・継承の中身
・dynamic_cast

Chapter11 音を鳴らす

・付属ライブラリでwavファイルを鳴らす方法を知る
・音のコンピュータ内表現
・波の合成

Chapter12 回す、伸ばす、動かす

・絵を回したり大きくしたりする
・必要な数学一通り
・ラスタライズ
・行列のもっと数学的な説明

Chapter13 ハードウェアのパワー

・ハードウェアで三角形を描く
・テクスチャとテクスチャ座標

II部 3次元のゲーム

Chapter14 立体を描く

・3Dグラフィックスの初歩を学ぶ
- 3次元の三角形を描く
- 陰面消去の方法とZバッファ
- 透視変換の考え方
- 行列とベクタの3次元化
- 3次元の回転
- ビュー変換
・「ロボファイト」を作り始める
・Zバッファ精度問題

Chapter15 ライブラリの作り方

・描画処理をライブラリ化して楽をする
- 使われ方から考える
- リソースとインスタンス
- 頂点バッファ
- インデクスバッファ
- 描画インスタンス
- リソースコンテナ
- カメラ
・ライブラリを独立させる

Chapter16 XMLモドキを読む

・XMLに似たテキストファイルを読みこむ
・ニセXMLの生成

Chapter17 遅くないコードを書くために

・アルゴリズムと計算量オーダー
・主なデータ構造
・スループットとレイテンシ
・並列性
・メモリの問題
・STLコンテナ
・速い計算と遅い計算
・関数を呼ぶコスト

Chapter18 立体の衝突処理

・直方体の衝突処理
・球の衝突処理
・線分と三角形の衝突処理

Chapter19 ロボファイトの設計

・ロボファイトをともかくゲームにする
- クラス設計
- 移動
- カメラ制御
- 状態遷移
- 武器の発射と軌道制御
- フロントエンド

Chapter20 光が当たるということ

・ライティングという概念を知る
- レイトレースという考え方
- CGがインチキの集積であること
- ランバートモデル
・ローカル座標での計算
・法線の事前計算

Chapter21 キャラクターが動き出す

・アニメーションの仕組みを学ぶ
- 相対移動
- 階層モデル
- ファイルから読みこむ
- 補間法
・連立方程式を解くやり方の使い道
・実用にするために必要なこと

III部 売り物への道

Chapter22 遅くない衝突検出

・大量の衝突検出をこなす方法
- ソートに基づいた方法
- 分割に基づいた方法
・容量制限のない配列 ・重複除去
・k-d tree

Chapter23 ローディング

・ロード時間の原因
・ロードを小分けにする方法
・ファイルの結合
・ファイルの圧縮
・マルチスレッドによる並列処理
・符号化

Chapter24 floatの使い方

・floatの中身
・加減乗除の誤差の出方
・特別な数

Chapter25 付属ライブラリ本番仕様

・付属ライブラリのクラス分類
・各種モジュールの紹介

Chapter26 バグとの付き合い方

・処理落ち
・メモリあふれ
・アクセス違反の予防
・自動解放ポインタ
・参照カウンタ
・コードの作法
・メモリ漏れを検出する仕組み

Chapter27 もっと先へ

・この本に足りないこと
・私が読んできた本
・あったらいいなと思う本

あとがき