読者です 読者をやめる 読者になる 読者になる

【C++】ノベルゲームのスクリプト - その2.5

前回に引き続きスクリプトについて。

といっても今回はスクリプトそのものではなくその扱い方についてなんだが。

 

前回の記事を振り返って、無駄に気付いた。

構造体の配列を利用するということは、それだけメモリを必要としてしまうため単純計算でいくと原稿が2倍になれば必要なメモリも2倍になってしまう。

 

例えばDVD-ROM3枚組の某型月さんのFate/stay night

もしその原稿を前回のに読み込ませようとした場合どれだけのメモリが必要になることやら......

 

というわけで

配列に詰めるのはやめよう!!

 

では、どうするか。

今回も検証してみないことにはわからないけども案として、

 

構造体を1つ生成して一回の発言分をメンバ変数にセット

描画

 

これでループすればいいのでは無いだろうか。

また、以前にも書いたがDxLibの利用を前提に考えているのだが、

LoadGraph()関数で画像をメモリに読み込むとDeleteGraph()関数で削除するまでメモリに残留してしまうらしい。

【C/C++】画像描画について【DxLib】 • C言語交流フォーラム ~ mixC++ ~

そこでメッセージを描画し終わったら構造体を破棄し、デストラクタでDeleteGraph関数を呼んであげればメモリ圧迫はしなくて済むのでは無いだろうか。

 

ただし、この手法では描画ループ内で毎回

・構造体の生成

・構造体に代入(画像や音声ロード含む)

・構造体を破棄

を行うので処理速度が落ちる。

 

この処理速度の落ち具合によっては構造体配列を要素数を決めて生成して、ある程度まとめて行ったほうが良いかもしれない。

 

いずれにしても実際に走らせてみないことにはなんとも言えないねw

時間ができれば実装して検証しようと思います。

 

もうひとつこれに関して気になることがあるけど、それは下のリンクで質問中

【C++/DxLib】LoadGraph()関数について|teratail

 

色んなとこで質問してる無知っぷりを晒しつつ、今回はこの辺で。

2014/11/15 Sat.