VC++とDirectXでゲームを作る 座学編

前準備

1.この授業で行うこと

  1. ゲーム制作工程のうち、プログラミングを中心にゲーム製作を行う基本技術を身に付ける。
  2. 学んだ知識を生かして「ミニゲーム制作」を行う。

2.開発環境

この授業では、次の環境で開発を行う。

使用マシン DOS/Vマシン
使用OS Windows98SE以降
基本ソフト プログラム開発環境として「Microsoft Visual C++ Ver 6.0」
画像、音、ゲームパッドなどの制御に「Microsoft DirectX7a」
開発言語 C言語(C++ではない)

そのためには、本来のゲーム開発を行う前に

についての知識が必要になる。

Windowsプログラミング基礎

第1章 Windowsプログラミングを学ぼう
1-1. DOSプログラミングとの相違点
1-2. Windowsプログラムの構造
1-3. スケルトンプログラムを改造しよう

★練習問題

付録1 用語集

2Dでゲームを作る(DirectX7のDirectDrawを使う)

第1章 基礎知識 
1-1. DirectXの概要
1-2. 画像データ処理の基礎知識
1-3. DirectDrawで行われること
1-4. DirectDrawの使い方

★練習問題

第2章 Windowsプログラムをゲーム用に改造する
2-1. 前準備
2-2. 一般的なゲームプログラムの構造とプログラム
2-3. DirectDrawオブジェクトの初期化・開放処理を追加する
2-4. ゲームメイン処理の考え方とプログラム
2-5. キーボードの状態を取得する(WindowsAPI)
2-6. 状態別処理の考え方とプログラム

★練習問題

第3章 画像の表示・動作
3-1.ゲームで使用する画像を準備する
3-2.画像を表示するには?
3-3.透明色の指定
3-4.キャラクタの移動
3-5.画面からはみ出さないようにするには?(当たり判定・1)
3-6.キャラクタ同士の衝突を調べるには?(当たり判定・2)
3-7.当たり判定用矩形を小さくするには?(当たり判定・3)

★練習問題

第4章 モジュール分割
4-1.モジュール分割の考え方
4-2.WinMain.cppからDirectDraw関係の処理を取り出す
4-3.WinMain.cppからスタート処理を取り出す
4-4.WinMain.cppからゲーム処理を取り出す
4-5.共通ヘッダ・ファイルの作成
4-6.処理単位ごとに関数化する

★練習問題

第5章 キャラクタ構造体を使う
5-1.キャラクタ構造体とは
5-2.キャラクタ用構造体変数の作り方と使い方
5-3.ステータス情報初期化関数のすすめ
5-4.キャラクタ構造体を分割してメモリ使用量を減らす方法

★練習問題

第6章 キャラクタ表示の様々なテクニック
6-1.前準備
6-2.移動方向によって表示する画像を変える
6-3.メッセージウインドウにFPSの表示
6-4.画面にFPSの表示
6-5.キャラクタ・アニメーション

★練習問題

第7章 キー操作を制御する
7-1.前準備
7-2.メニューを選択させるには?(カーソルの移動)
7-3.ゲーム開始直後に弾を撃たないようにするには?
7-4.キーを押している間、一定間隔で弾を撃つには?
7-5.キーを押すたびに弾を撃つには?

★練習問題

第8章 クリッピング
8-1.クリッピングとは
8-2.枠でごまかす(いんちきクリッピング?)
8-3.クリッピングをプログラムで行う
8-4.Clipperを使ったクリッピング

★練習問題

第9章 Blt関数の使い方
9-1.BltFast関数とBlt関数の違い
9-2.Bltメソッドの基本的な使い方
9-3.矩形につけられる効果の種類
9-4.指定した矩形を塗りつぶす
第10章 背景表示のテクニック1
10-1.星を降らせてスクロールしているように見せる
10-2.一枚絵のスクロール
10-3.キャラクタの動きにあわせて一枚絵をスクロールさせる
第11章 ゲーム制作における画像データの使い方を学ぶ
11-1.今でのプログラムでは?(復習)
11-2.面が変わるたびにオフスクリーン・サーフェイスの画像を切り替える
11-3.画像データをファイルから直接読み込む
11-4.開放処理について
第12章 ファイル操作
12-1.前準備
12-2.ハイスコア情報を保存するには?
12-3.ランキング情報を保存するには?
第13章 パレットを直接制御する(パレットアニメーション)
13-1.パレットについての詳しい説明
13-2.フェードイン・フェードアウト
13-3.夕焼けもどき
第14章 複数のキャラクタを制御する(シューティング向け?)
14-1.敵キャラ情報の扱い方
14-2.前準備
14-3.一定時間ごとに敵キャラをランダムに出現させる
14-4.敵の出現パターンを作る(グラディウス系?)
14-5.キャラ別移動処理に関数ポインタを使う
14-6.リスト構造によるキャラクタ管理
14-7.自キャラから弾を出す
14-8.敵キャラから弾を出す
第15章 背景表示のテクニック2:マップチップ
15-1.マップチップによる背景の描画
15-2.マップデータをファイルで管理する
15-3.マップデータを小さくする方法
15-4.画面の端まで来たらマップを切り替える
15-5.マップチップ背景をスクロールさせる(ゼビウス型?)
15-6.広大なマップ上を移動する(ドラクエ型?)
15-7.2Dフィールドに「高さ」を取り入れる(イース型?)
第16章 サーフェイスへの直接アクセス
16-1.DirectDrawの描画機能について
16-2.アルファ・ブレンディング
第17章 ウィンドウモードへの対応
17-1.フルスクリーンモードとウィンドウモードの違い
17-2.ウィンドウモードに変換する
17-3.フルスクリーンモードとウィンドウモードを切り替える
付録
1.MSSDKサンプルの描画方法を学ぶ
2.デバッグ用プログラム
3.用語集

効果音を付ける

DirectX7でWAVEファイルを鳴らすサンプル(DirectSound)
DirectX7でMIDIファイルを鳴らすサンプル(DirectMusic)

キーボード、ジョイパッド、マウスを制御する

DirectX7のDirectInputサンプル
DirectX8のDirectInputサンプル
練習問題1

ゲーム製作について

企画書、仕様書、システムフローチャート

リクエストネタ(できた物から消していく)

クオータービュー(斜めから見る画面)でのスプライトを描画する順番
手前にいるキャラを後に描画して手前にいるように見せる処理。
坂道移動
アクションゲームを作るに当って、斜めに歩く方法があれば教えて欲しい。
ズームの仕方
キャラの技が決まったときなどに、そのキャラをズームでうつす。
スプライトを中心に画面を拡大縮小する方法。(画像単体ではなく、背景も含めて指定範囲内の画像をまとめてズームする)
ランダムマップ生成
不思議なダンジョンシリーズのような入るたびにダンジョンの構造が変わる方法
コンピュータ色々な思考ルーチン
RPGの戦闘の敵の行動処理やレースゲーム、ボードゲームやテーブルゲームのコ ンピュータを状態に応じて行動する処理など色々なコンピュータ処理
レース時背景描画方法
スピード感があるオウンビューのレースコースの描画方法
DirectPlayを使ったネットワーク対応のプログラム
簡単なネットワーク対戦ゲームを作ってみたい。簡単なチャット。
DirectShowを使用したデモムービー
タイトルムービーやオープニングムービーを流す方法

[ HOME ]