日記/2008-05-15

Last-modified: 2008-05-15 (木) 21:45:41

メモリリークに関する記述

Ver0.04で、1試合終わるごとに10MBくらいずつ無駄なメモリを確保していくバグが見つかった。10試合くらい繰り返していると、処理が重くなっていくのを感じた人も多いはず。


どうも、オイラがせっせとファイルを一つずつ開放していても、どっか見落としていたりして収集がつかなくなってしまったようだ。なので、開放をE3DBye関数に一任し、再度E3Dinitを呼ぶ、という手続きをとってみる事にする。旧Verでやっていたことなのだが、動作が不安定になる可能性を考慮して開放処理を自前で作ってみたのだが、それがいけなかったらしい。


当面の対応として、ベータのベータにその変更を施した実行ファイルをうpしておいた。これをVer0.04と同じディレクトリに解凍して実行すれば、メモリリーク無く快適なプレイが約束される(はず)。逆に、この処理に変更したことにより生じる不具合を書いておくので参考にして蔵際。

  • 戦闘終了のたびにE3DbyeとE3Dinitが呼ばれる
  • そのため、フルスクリーンなどでやってると、ウィンドウの初期化などで一瞬ウィンドウがちらついたりする
  • 初期化処理は時間がかかる処理のため、低スペックマシンは少し待たされるかもしれない



試験的に導入したため、エラー落ちする可能性などある。また、10回くらいプレイを繰り返したら極端にFPSが下がったなど、そういう場合にはメールで報告していただきたいorz




左上にFPSが表示されるようにしておいたほか、デバッグ用のログを出力するよう設定しておいたので、エラー落ちした場合は

  • 内部エラーが発生しました、というダイアログに記された数字
  • 処理が重くなったか、何回繰り返したか、等

を記入の上、worz.exeと同じディレクトリに出力されたデバッグファイルを添付してオイラ宛まで送ってくださいorz

そのた把握したバグ

飛行機の導入ついでに移動系の処理を見直したのですが、上方向ベクトルがうまい具合に初期化されず、ロックオフの時移動軸が狂うバグがあるっぽいですが、次Verで多分直りました。
VIPHERのビームも当たり判定を出しましたが、ちょっと大きすぎるかも。