Amazon 初売り

« 4個パックのツナ缶が強くて困る | トップページ | 「初音ミク冒険記」、当たり判定について考えてみる »

2012.01.22

「初音ミク冒険記」、まだメモリ関連の調整中

| |コメント (0)|トラックバック (0)

 このエントリーをはてなブックマークに追加

LoadGraphのメモリリークが解消されたことで
躊躇無くDeleteGraphを使ってメモリを空けられるのだが
いかんせん思いつきで作っている関係で
「この状態でこういうデータをロードしたら、ここがおかしい」だの
「あっちを変更したから
 ゲームオーバーでリトライを選ぶとメモリリークしてるぞ」だの
いろいろと考えることが多い。

しかも紙に書き出したり、テキストエディタやら表計算ソフトを使って
まとめたりもしていないので余計に大変だったりする・・・

いまさらだが、もう少し考えてからプログラムした方が良いかもしれないな。
仕事のプログラムと違ってドキュメントをほとんど書いていないからなぁ・・・

あとは第1章のボス戦のマップへ切り替わるとき
空きメモリが少ないのでDeleteGraph→LoadGraph系の処理をするので
以前よりちょっと時間がかかるようになった。
この為、画面切り替わりまでの間は、
「Now Loading...」を出すことにした。

といった状況なので、まだしばらく次の公開はできそうもない・・・


さて、ちょっと話題を変えてセーブデータのアイコンの話を。

以前の記事、「初音ミク冒険記」のセーブデータアイコン
次からはシステムメニューでセーブを選んだとき
一瞬、下のような画面が出るようになると書いたのだけど
覚えているだろうか?

Screenshot1403

記事にも書いたけど、ちょっとダサいのだが
一度、保存するセーブデータアイコンの画像を
画面に表示しないといけないのだ。

どんな仕組みになっているかというと

1.キャンプメニューを開くとき、その直前の画面状態を
  Dadrfyさん作のMakeGraphFromScreen関数で画像ハンドルとする

2.1の画像ハンドルをアイコンサイズ(144x80)に縮小したものに
  タイトルロゴをアイコンサイズの半分のサイズに縮小したものを画面に描画する

3.Dadrfyさん作のMakeGraphFromScreen関数をちょっと改造した
  かげさん作のMakeGraphFromScreenIcon関数で画像ハンドルとする

4.3の画像ハンドルをDadrfyさん作のSaveGraph関数で
  スクリーンショットディレクトリに保存

5.4で保存した画像を読み込んで画像ファイルサイズ分
  動的にメモリ確保し、セーブデータアイコン用の配列とする

という手順になっている。

1で使っているMakeGraphFromScreen関数は、
既に画面に描画されている内容を
基にして画像ハンドルを作るので
ダブルバッファリングの裏画面の内容を取れないのだ。

たぶん、ダブルバッファリングの裏画面の先頭アドレスが分かれば
画面表示しなくても良いのだろうけど、
かげさんは、ちょっとわからない。
(知っている人がいたら教えて欲しいです)

4でファイルに保存しているのも、
保存しなくても良さそうなものだが
png_~関数たちが何をしているの分からないので
ファイルに保存せずにPNG形式の画像情報を
メモリに載せるやり方が分からない・・・

こういった手順になっているので
市販ゲームのほどスピーディには公式セーブダイアログが出てこない。
というか、2012/1/10版と比べてもセーブ処理は遅くなっている。
4と5のファイルの読み書きがなくなれば
ある程度の速度は確保できると思うんだけどね。

まぁ、この速度問題は、
セーブデータのアイコンとして
セーブ時点の画面状況が分かることに対する代償なので
現状は、仕方が無いと思っている。

ただ、上にある画面じゃさすがにダサいだろ
ということで、ちょっとキャンプメニューやシステムメニューを変えてみた。

Screenshot1601

もともとメニュー説明の噴出しの下には
かげさんの「ぼやき」が描画されていたのだが
その文言を取っ払って
セーブデータとして格納されるアイコンを出すようにしてみた。

今は、アイコン上のロゴの縁取りの白い部分の
がたがた加減が気になっているところ。

DrawExtendGraphでタイトルロゴ画像を縮小するのではなく
事前に縮小したアイコンを用意しておいた方が良いのでは?
と思ってみたり。

実際、Gimpで縮小したロゴと比較すると分かりやすい。
左がDrawExtendGraphで縮小したロゴのある画像、
右がGimpで縮小したロゴ画像だ。

Logohikaku

Gimpでの縮小案を採用すると画像が増える、
しかもメモリに展開していた大きいサイズのタイトルロゴを
常に持っている必要性がなくなる
(タイトル画面だけデカイロゴがあれば良い)ので
タイトル以外ではデカイロゴのデータを解放しておいた方が
メモリを有効活用できたりするわけだ。

こんな風に関連箇所のソースコードが修正になったりして
意外と時間がかかっている。

Lua関連は、思ったほどメモリを使っていないようだったので
マップ切り替え時のLua関連の初期処理をちょっといじったくらいで済んだ。 

もう少しでメモリ関連のやりくりは、何とかなりそうだ。
ここが突破できたら、エアリアルステップで問題になっている
衝突処理に進むことになると思う。

ゲームプログラマになる前に覚えておきたい技術
ゲームプログラマになる前に覚えておきたい技術

この本の第8章が、そのものズバリなので
方向性を検討しようと思っている。

あまりにハマるようだったら、
気分転換に第1章のエンディングを先に作るかもしれない。

そもそもエアリアルステップは、第1章では使えない予定だ。
探索系のドラキュラでも2段ジャンプはアイテム入手後が多いみたいだし。

それかボカロタウンで登場するキャラたちの
顔グラを用意するとかしてるかも。

ボカロタウンの最初のバージョンに誰が登場するかは
まだ秘密と言うことで


 このエントリーをはてなブックマークに追加

| |コメント (0)|トラックバック (0)

このエントリーへのリンク

このエントリーのリンクを入れるHTML:

トラックバック

この記事へのトラックバックの一覧です: 「初音ミク冒険記」、まだメモリ関連の調整中:

コメント

このブログの新着コメントをRSSリーダに登録する為のxml




←名前とメールアドレスは必須です。
URLも記入すれば、URLのみが公開されます。
メールアドレスのみですと、メールアドレスが公開されてしまいますので、御注意ください。

↓コメント本文では、「a href」「b」「i」「br/」「p」「strong」「em」「ul」「ol」「li」「blockquote」「pre」のタグが使えます。絵文字をクリックすると、本文にタグを挿入できます。