ページ 11

ゲームの流れについて

Posted: 2010年3月23日(火) 02:58
by エネン
はじめて質問させていただきます。
現在、
「14歳からはじめるC++わくわくゲームプログラミング」
という本を参考にシューティングゲーム作成を行っています。

1面が出来たので2面を作ろうと思っていますが、
音楽や画像のロードはどのタイミングで行うのかがわからず、悩んでいます。
(DXライブラリの関数「LoadGraph」「LoadDivGraph」「LoadSoundMem」を使用しています)

現在は、ゲーム起動時に、1面2面の音楽・画像をまとめてロードしています。
(ゲーム起動→全画像音楽ロード→1面描画→2面描画……という流れです)

今は問題は有りませんが、将来3面、4面……と続いたときに、メモリを圧迫しないか心配です。
そのため、ロードはまとめてではなく、その都度読み込む形に変更をしたいのです。
(ゲーム起動→1面の画像音楽ロード→1面描画→データ解放→2面の→2面描画→データ解放……
という流れにしたいのです)
データの解放関数は
InitGraph 、DeleteGraph……と有るようですが、どちらの関数を使用するべきかわかりません。

皆様はデータの読み込みと解放をどのように行っていますか?
教えてください。

また、このような「面形式」のゲームフレームで、参考になる書籍、サイトが有れば紹介して下さい。

Re:ゲームの流れについて

Posted: 2010年3月23日(火) 12:26
by ひよこ
InitGraphは読み込んだ画像ハンドルをDeleteGraphは指定した画像ハンドルを削除します。シューティングで、弾が変わらないし、自機が変わらないで敵だけ変わるのだったら
面で読んで削除をすればいいと思います。

簡単にいえばずっと使うものを最初に読み込み、ある所しか使わないようなものをそのたびに読み込み
いらなくなったら削除をすればいいと思います。

Re:ゲームの流れについて

Posted: 2010年3月24日(水) 11:31
by エネン
早くのご返答ありがとうございます。

>簡単にいえばずっと使うものを最初に読み込み、ある所しか使わないようなものをそのたびに読み込み
>いらなくなったら削除をすればいいと思います。

なるほど。

DeleteGraphの使用を前提とした場合、
グラフィックハンドルの寿命を考慮する構造にする必要があるようですね。
必要なものまで間違って消さないように。
ただLodaDivGraphなど、「グラフィックハンドルを分割して読み込む」タイプの管理がややこしそうです。
……現状の自分のコード管理が甘いだけなのかもしれませんが。

グラフィックハンドルを管理するクラスを作って対応してみます。
>簡単にいえばずっと使うものを最初に読み込み、ある所しか使わないようなものをそのたびに読み込み
いらなくなったら削除をすればいいと思います。