日曜日, 2月 07, 2010

開発:Tokyo Railways 2

 昨日で、「Tokyo Railways 2」のv1.90先出しリリース分のプログラム修正を終えて、マップ修正に移るつもりだったのですが、問題があって、今日も結局丸一日修正してました。

 問題というのは、Windows環境でメモリー不足になるという結構深刻な問題で、これはどうもXMLファイルを読み込むと、ファイルの時に十倍以上のメモリーを消費しているようで、これが原因となっているようです。

 昨日の修正で、リプレイ機能というのを実装したのですが、これのためにリプレイ情報をセーブ用のXMLに保存しようとしたら、ゲームが長くなるとXMLが肥大化し、このせいでメモリーが不足するようです。さらに、開発に使っていた環境がUbuntuとMac OS Xで、この2環境ではそれでも問題なかったのですが、Windows 7環境ではなぜかXMLのメモリー消費量が非常に大きくなって、結局エラーとなってしまいました。どうやらメモリー消費量という点では、SunのJDKよりも、UbuntuのOpen JDKの方がかなり優秀なようです。

 いろいろと小手先で対処してみたんですが、現在最大のメモリ消費量となる中国マップで耐えきれず、セーブ用XMLにリプレイ情報を保存するというのは無理という判断になり、別の手で保存することにして、また大改造。

 最終的には保存するファイルをZIP形式に変更し、このZIPファイル内に圧縮する形で従来通りのXMLデータとリプレイ用の情報を一書にセーブすることにしました。さらにリプレイ用情報をひとつのXMLに保存するとまた同じことの繰り返しになるので、リプレイ情報はひとつの更新情報ごとにバラバラのXMLファイルにしています。

 これで後は、中国マップで最大の9人、さらにゲームの長さを死闘(×4)にしてみて、エラーにならずにゲーム終了までたどりつければ大丈夫だろうと思って、テストを始めたらとんでもないバグを発見。

 「ユーザー報告」の方にコメントを追記しておきましたが、要するにゲームの長さを標準より長くすると、途中からコンピュータが移動しなくなる・・・

 これを直して、再度テストしてみたら、いちおう最後までちゃんと動きました。
 でも、今確保しているメモリー量が256MBなのを176MBに削減する予定でしたが、将来大きなマップを作成したときにメモリー部速に陥る不安が出てきたんで、今後のことをかんがえたら、今のメモリー確保のままで行った方が良さそうです。

 そんな感じで、今日もいろいろと大修正が発生しましたが、今度こそ、これで本格的な修正は中断して、マップの修正に進みたいですねえ。

0 件のコメント: