試行memory.2nd

Space not farのあれ
<< 500円ぐらいまで値下がりするセールがあったらツクールMV買います | main | 漫然とテストしてたら総プレイ時間がそろそろ20時間に達しそう >>
メモリリーク殺すべし

ふりーむでレビュー書いてくれたりメールなどで感想お寄せいただいたりありがとうございます。

ちゃんと読んでいます。

 

 

 

XP以降のツクールである程度RGSSを編集して製作している人は一度は目にしたんじゃないでしょうか。

RGSS playerが停止したというメッセージとともに、ゲームが強制終了してしまう不具合です。

天使心母の製作中、極稀に出てくるこれに一ヶ月ぐらいは悩まされていました。

・確実に起こらない(再現性がない)ので、直ったのかどうかわからない

・エラーメッセージを出さないので、原因を特定するのが困難

この二点が非常にヤバくてハゲそうになりました。

(泥や雪でも似たような現象はひっそりと起こってるかもしれません)

 

調べてみたところ、メモリリークというものが原因だそうです。

スプライト(画像オブジェクト)がシーン遷移時に解放し忘れている、

あるいは関連付けられたビューポートをスプライトより先に解放してしまった時

ガベージコレクトなんちゃらかんちゃらがなんちゃらして参照されないメモリがなんちゃらしてしまうそうです。

あんまりわかっていません。

 

RGSS編集でdisposeをaliasするとよく陥りがちな罠のようです。

(スプライト解放→ビューポート解放→スプライト解放みたいな処理順になってしまう)

目を皿にしてRGSSエディタを見ながら解放し損ねを探したんですが人間の目ではちょっと限界があります。

 

困り果てながら「RGSS3 memoryleak」みたいな感じで検索をしたところ、こんなスクリプトが見つかりました

クラッシュ原因を検出・報告するRGSSだそうです。

ツクールの技術は国内よりも海外のサイトが進んでるみたいですね。

 

 

試しに導入してみたところクラッシュ原因が出るわ出るわ。

これで全ての原因を根絶できたのかはわからない(悪魔の証明)んですが、本当に助かりました。

同様に原因不明のメモリリークに悩まされている方は試してみてはいかがでしょうか。

(このフォーラムの規約はよくわからないんですが、多分フリーだと思います)

 

追記

http://trymemory.muspell.raindrop.jp/?eid=7#comments

こちらのコメントで言われていたのがまさにそういうことだったみたいですね。

当時は「え? ビューポート? なにそれ? 歌? 外人?」みたいな認識でして……

| muspell | - | 14:43 | comments(2) | - | - |
当時その記事でコメントをした者です。お久しぶりです。

実はその後で同系統の検出用スクリプトを作って素材としても公開しているのですが
「これ、問題が分かってもRGSS分かる人じゃないと自力で直せないよなぁ」等と思っていたり。
そもそもそういうミスをしなければいいという話ではあるのですが
人間ですからどうしてもミスは出てしまいますからね……。

個人的にVXAceの辛いエラー上位2つは触れられている動作停止と
F12で稀にMainのrgss_main { SceneManager.run }をすっぽ抜けて発生するstack level too deepです。
後者は発生場所で大体察しが付く分マシですが。
| 通りすがり | 2017/11/20 2:35 AM |
こんにちは。
まあ何が悪いってRGSSエディタの優しくなさだと思うんですよね〜
F12バグもかなりアレがアレですがまあ……
| 巫女瓜 | 2017/11/22 11:02 AM |









     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< December 2017 >>
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ ARCHIVES
+ LINKS
+ MOBILE
qrcode