1.この授業で行うこと
- ゲーム制作工程のうち、プログラミングを中心にゲーム製作を行う基本技術を身に付ける。
- 学んだ知識を生かして「ミニゲーム制作」を行う。
2.開発環境
この授業では、次の環境で開発を行う。
使用マシン DOS/Vマシン 使用OS Windows98SE以降 基本ソフト プログラム開発環境として「Microsoft Visual C++ Ver 6.0」
画像、音、ゲームパッドなどの制御に「Microsoft DirectX7a」開発言語 C言語(C++ではない) そのためには、本来のゲーム開発を行う前に
- C言語
- Windowsプログラミング
- DirectX
についての知識が必要になる。
- 第1章 Windowsプログラミングを学ぼう
- 1-1. DOSプログラミングとの相違点
- 1-2. Windowsプログラムの構造
- 1-3. スケルトンプログラムを改造しよう
★練習問題
付録1 用語集
- 第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を使用したデモムービー
- タイトルムービーやオープニングムービーを流す方法