« 雨やめてやめて雨 | メイン | 雨もうやめて('A`) »

現時点決定事項メモ051005

まったくの趣味と暇つぶしでゲームを作ってみる計画。
その時点までの決定?事項をメモり。
たぶん他の人が見てもさっぱり面白くありません
ラクガキ用の紙をロストしても大丈夫なようにメモってるだけです


・ジャンルはSTG まずはインベーダー風を作りたい
・描画にはManaged DirectXを使う
・でもメッシュは使わず、スプライト(Direct3D.Sprite)を使う
・テクスチャはアルファチャネルをもてるPNG形式で

・ゲームに必要なリソース:起動時に一括ロード
・グローバルな構造体として使い回す
・テクスチャロードにはコールバック(Delegate)を使用
・でも読み込む記述→cnt++ というエレガントさの欠片もない実装

・ステージ背景はまずは固定で
・でも背景処理部分は作成しておく

・キャラクタとスプライトの関係:
・キャラクタクラスとレイヤークラスに分ける
・キャラクタクラスはIActor(仮名)インターフェースを実装し
→Action() メソッドを保証
・毎フレームAction()メソッドを呼び出す
→ポリモーフィズムで各種処理を実装
・void Action(int ElapsedFrame) 予定
・キャラクタの描画:下から順に描く

・敵と敵弾の関係:
・親子関係を持たせると「弾の処理」が不要になる
・その分関係がわかりにくくなる。大規模実験で経験済み
・弾は自律的に動くものとすれば外部からの制御は不要

・次の3点を満たせば親による制御は不要になる:
 ゲームエリア外に出たら自律消滅する
 弾がエリア外に出ることを保証する
 敵(=生成元オブジェクト)が死んでも弾は引き続き処理を行う

・フロー案
OnFrameRender() 関数内 BeginScene()〜EndScene()で
ステージ処理 … 敵機生成等
背景処理 … 当面は背景固定
自弾処理 … パッド/キーボードからの入力処理、あたり判定
自機処理 … あたり判定
アイテム処理 … あたり判定
敵機処理 … 移動/弾の生成
敵弾処理 … 移動
エフェクト処理 … 登録済みのエフェクトについて処理
通知関係処理 … ボーナス等の通知について処理
システムビジュアル処理 … スコア等の処理
下層からの描画処理 … Sprite.Draw(device,texture, ...)

・あたり判定の効率化
当面は弾数を増やす予定はないが、予め効率化しておくと後で楽?
剰余計算とCollections.ArrayListの処理速度にもよるが
配列の総当たりチェックよりは効率がいい…筈。

・グリッド案:
・最大あたり半径を仮に64pxとする
→65px以上のあたり判定を持つ弾は存在しない
・レーザーについては別の扱いとする
・ゲームエリア=320x448 →5x7のグリッドに分かれる
・あたり判定を持つ全てのオブジェクトは、自分がどこのグリッドに
 属するかをプロパティとして保有する
・あたり判定を行う場合は、自分の周囲3x3範囲について探索する
→従来は5*7=35 3*3=9なので1/4程度まで減らせる
・画面端では3x3範囲を例外的に扱う必要がある
→一回り大きい二次元配列を確保しておき
 NullObjectデザインパターンを適用
→添え字番号が1ずつ増える
→画面端を特例扱いする必要が無くなりスマートに

・あたり判定のアプローチ
・基本は「プレイヤー主体」
・自弾処理: 各弾が自分のまわりの敵グリッドに対し判定要請
・自機処理: 自機がまわりの敵弾グリッドに対し判定要請、続いて敵、アイテムグリッドに対し判定要請
・アイテム/敵機/敵弾処理: あたり判定処理は行わない
・接触があった場合、当該オブジェクトの適切なプロシージャが呼ばれる


・Todo:
テスト用のグラフィック作成
音の考慮
UMLモデル化

投稿者 Zawa : 2005年10月05日 22:13

トラックバック

このエントリーのトラックバックURL:
http://zawa.s18.xrea.com/x/mt-tb.cgi/56

コメント

コメントしてください




保存しますか?