ゲームプログラミング入門

タイトル ゲームプログラミング入門

概要 
ゲームプログラミング及びDirectXの初心者向けの本です 。

価格 3700円+税 オンラインショップへ

本書籍付属データ(ソースコードその他)のダウンロードはこちらです

第2版、販売中! NEGAAのソースをいよいよ公開しました。もちろん、初版の読者もNEGAAのソースをダウンロードできます。初版と第2版の違いは、NEGAAの”ソースの”活用方法の解説があるかないかの違いだけ(10ページ程度)になります。

(注意)NEGAAの使用権は広く認めていますが、”NEGAAをライブラリとして商用利用”することは禁止いたします。

ゲーム作りを趣味にしてみませんか?

買ってきたゲーム、他人が作ったゲームではなく、”自分で”ゲームを作れたら楽しいと思いませんか?
自分のゲーム「俺ゲー」を作ってください。

DirectXでゲームを作るなんて
遠い世界の話だと思っていませんか?

本書で作るゲームは、プログラム的には市販PCゲームと同じ構造のものですが、それでも決して難しいものではありません。本書を読んで1週間以内に自分のゲームを完成させた、という人を何人も見てきています。

挫折する要因は分かっています。

既にゲームプログラムあるいは3Dプログラムに挑戦したものの挫折した方も多いと思います。今までの環境では、ある意味当然かなとも思います。「ゲームプログラミング入門」は分かりやすさ、入りやすさで定評を得ています。
本書でもう一度チャレンジしてみませんか?

概要

超初心者向けの本です。
NEGAAというライブラリを補助として、C++、DirectXプログラムを書きながら、ゲームの基本アルゴリズムを習得していく内容になります。「はじめての3Dゲーム開発」よりも分かりやすく、なおかつ、「はじめての3Dゲーム開発」よりも有益な事、高度な事を習得できるものと思っています。これらを実現するために、DirectXを直接運用するのではなく、DirectXを単純化するライブラリを補助的に使います。
本書の最大の売りは、

  1. 超簡単にネイティブDirectXゲームが作れる。
  2. ゲームの基本アルゴリズムを習得できる。

ということになります。

超簡単にゲームを完成させるだけであれば、そのようなツールやソフトウェアを使えば簡単にできます。しかしそれは、自作のゲームを完成させるという成果以外は、あまり効用がありません。(それが自作ゲームと呼べるかどうか、とゆう問題もあります。)
本書で使用するライブラリは薄いラッパーライブラリであり、あくまで補助です。
ライブラリを使いつつ、同時にDirectXの生コードを書くことも、もちろんできます。つまり、ライブラリにどこまで依存するかは、その人次第であり、書こうと思えば、ほとんど生コードで書くことができます。
本書のアプローチを表現するなら、主に初期化部分の関数を最初からいくつか用意しているプロジェクトで学習するという感じです。C++による DirectXプログラムであることに変わりはありません。初心者がつまずきやすい、初期化コードのコーディングは、その後でいいという考えです。
本書で使用するライブラリは、NEGAAというもので、Northbrainが制作したものです。このライブラリを自転車の補助輪のように利用します。
最も理想的なのは、本書でゲームを作れるようになり、ゲームを沢山作った後で、「補助輪を外す」作業をすることです。つまり、DirectX(あるいは他のAPI)の生の初期化コードなりのコーディングを習得することです。
もっとも、見方によってはDirectx自体がライブラリですので、あまり直接運用にこだわる必要は無いかもしれません。やはり直接運用のほうがスキルとしては高いことは確かですが、ゲームのアルゴリズムは直接でもライブラリでも同じであり、ゲームにとってそちらのアルゴリズムのほうが、はるかに大切です。
専門学校での授業において、DirectXプログラムを説明することの困難性も、この本を執筆することの動機の一つです。そのような動機により設計・作成された本なので、専門学校1年次(前期)の教科書として最適かと思います。教務・講師の方は是非ご検討ください。1年次前期用、全くの素人さんが最初に見る教科書を想定しています。

ムービーに出来るサンプルのムービーをアップしていますので参考までにご覧ください。

付属サンプルプログラム実行時ビデオ

ch02-1 2Dスプライトを表示

ch02-2 地面も表示

ch02-3 抜け色透過

ch02-4 画像の部分的利用

ch02-5 画像ファイルのパス(相対パス)

ch02-6 2Dスプライトを移動する

ch02-7 2Dスプライトを自転

ch02-8 2Dスプライトをスケーリング

ch02-9 キー操作

ch02-11 複数の敵を表示

ch02-12 敵の動き 斜め

ch02-13 敵の動き ジグザグ

ch02-14 敵の動き サインカーブ

ch02-15 弾を発射する

ch02-16 弾を発射する_2

ch02-17 弾を発射する_3

ch02-18 連射

ch02-19 連射完全版

ch02-20 当たり判定

ch02-21 敵の発生と消滅

ch02-22 2Dシューティング ステップ1

ch02-23 2Dシューティング ステップ2

ch02-24 2Dシューティング ステップ3

ch02-25 2Dシューティング ステップ4

ch02-26 2Dシューティング ステップ5

ch02-27 2Dシューティング ステップ6

ch03-1 3D物体の表示

ch03-2 3D物体の移動

ch03-3 3D物体の自転

ch03-4 3D物体のスケーリング

ch03-5 3D 複数の敵を表示

ch03-6 3D 敵の動きを付ける

ch03-7 3D メッシュ弾を発射する

ch03-8 3D ビルボード弾を発射する

ch03-9 3D メッシュ弾を連射する

ch03-10 3D ビルボード弾を連射する

ch03-11 3D 当たり判定

ch03-12 3Dシューティング ステップ1

ch03-13 3Dシューティング ステップ2

ch03-14 3Dシューティング ステップ3

ch03-15 3Dシューティング ステップ4

ch04-1 2D ジャンプ

ch04-2 2D ジャンプ(物理)

ch04-3 3D ジャンプ

ch04-4 3D ジャンプ(物理)

ch04-5 2D 反射

ch04-6 3D 反射

ch04-7 2D 追尾

ch04-8 2D 追尾(ベクトル)

ch04-9 3D 追尾

ch04-10 3D 追尾(ベクトル)

ch04-11 2D 迷路の読み込み

ch04-12 3D 迷路の読み込み

ch04-13 2D 迷路内を移動させる

ch04-14 2D 迷路内を移動させる 改良

ch04-15 効果音

ch04-16 楽曲

ch04-17 サウンドのフェード

ch04-18 楽曲のテンポ

ch04-19 エンジン音

ch05-1 カメラの移動

ch05-2 カメラの回転

ch05-3 カメラ移動回転

ch05-4 平行ライト

ch05-5 ポイントライト

ch05-6 スポットライト

ch05-7 1人称視点

ch05-8 3人称視点

ch05-9 レイ判定

ch05-10 地面で止まる

ch05-11 壁で止まる

ch05-12 壁を滑る

ch05-13 壁を滑る(完全)

ch05-14 坂を上る

ch05-15 階段を上る

ch05-16 デコボコ道に沿った動き

ch05-17 転がるボール step1

ch05-18 転がるボール step2

ch05-19 転がるボール step3

ch06-1 煙 step1

ch06-2 煙 step2

ch06-3 煙 step3

ch06-4 炎

ch06-5 物体から煙を出す

ch06-6 剛体君

NEGAA

NEGAAは、ゲームあるいはグラフィックプログラム、サウンドプログラムを簡単にプログラムできることを目的とした補助コード・クラスライブラリです。C++とDirectXがベースになっています。
現在のNEGAAは、 C++言語でのDirectXプログラミングを非常に簡単にしてくれます。無料で配布しています。

NEGAAを使えば、2Dゲーム、3Dゲーム、ゲームじゃなくとも、もちろんグラフィックプログラム、サウンドプログラムも「簡単に」出来ます。

NEGAAを使うことにより、”プログラミング初心者でも”DirectXプログラムを”すぐに”作成することができます。

NEGAAのヘルプドキュメント