2014年09月30日

(SimPeople)バグの解消に役立つかもしれない起動オプション

シムピ本体の起動オプションには、オブジェクトのデバッグ用の物があります。これを解説している海外サイトは多少ありますが、日本語の物は見当たらなかったので少し解説してみます。
開発者向けのオプションなので、多少技術的な話になるのはご勘弁を。




起動時のオプションといえば、"-w" や "-r1024x768" が良く知られていますが、オブジェクトのデバッグ用として "-debug_objects" という物があります。これを付けて起動すると、オブジェクトがエラーになったときにダイアログが出て、同時にSims.exeのフォルダにエラーのログが出ます。これを見れば、どのオブジェクトがなぜエラーになったかが大体わかります。

ここで出るエラーは致命的なものだけです。突然シムやヘルパーがマップの中央辺りにワープするのを見たことがあるかもしれませんが、主にこの様な時にエラーになっています。エラーが起こると、そのオブジェクトや使用していたキャラクターをリセットするので、キャラクターはマップ中央のいわゆる「初期位置」に戻ることになります。

これ以外にも、エラーは出ないけど動作がおかしい、いわゆる相性が悪いといわれるものもあります。そういったものは残念ながらこのログには出てきません。
私はまだそういう相性には出会ったことが無いので推測ですが、例えばシムのRelationshipは好感度や関係を格納していて、0番と2番が短期/長期好感度で、3番以降は基本使われていません。なのである意味勝手に使えるんですが、万一別々のオブが同じ所を使うとお互いに上書きしあって動作がおかしくなります。こういうものはエラーにはならないので見つけたり修正したりが難しくなります。

取り合えずエラーが出たとして、バグを直そうとしても難しいでしょう。それでも、以前まで動作していたのに突然おかしくなった、という時は、エラーになっているオブジェクトを一旦アンインストール(Downloadsフォルダからよける)して起動、多分「オブジェクトが見当たりません」と言われるので無視して保存、再導入で直ることも多いです。

単純にゲーム中で削除ではない理由は、「見えないオブジェクトやマップ外にあるオブジェクト」が残ることがあるからです。元から削除してしまえば、そのオブジェクトは起動時に自動的にすべて削除されるので完全に消すことが出来ます。




それでは、実際のエラーログを見てみましょう。サンプルとして、片づけられない皿を作ってみました。

こちらの症状は、「ヘルパーが仕事が無くなるとワープしては椅子に戻るのを繰り返す」「バスボーイ呼び出し植物で呼んだバスボーイが仕事がなくなると動かなくなる」、という物です。ヘルパーがワープするのは見たことがあるかもしれませんが、それの分かりやすいサンプルです。実際のバグでは、見えない皿やゴミが原因だったりするのでそれに気づかない事が多いと思います。

bug1.jpg
実際のエラーを見ると、ヘルパーではなくデフォルトの食事(Food.iff)の方でエラーが起きているのが分かります。ヘルパーの動作がおかしいからと言って、ヘルパーに問題があるわけでは無い典型的な例です。

エラーがおきているのは"Clean Up"という、ゴミや皿を片づける部分です。
ここでは、プログラムを"Error"で強制的に終わらせていますが、そうするとこの"Undefined Transition"エラーが出ます。「必ずTrueかFalseで終わらなければならないのにErrorで終わってるよ」というエラーです。
※ ここでは、"エラー"は実際に問題が起きたことを、"Error"はIFFPencil上の"TrueLine/FalseLine" のリンク先を表しています。

この場合は、皿を片づけようとすると(皿に向かう前に)エラーが発生して、ヘルパーがリセットされてマップ中央にワープ、椅子に戻った後にまた片付けようとしてワープ…を繰り返すことになります。

他にもエラーは色々ありますが、最悪エラーの出ているオブジェクトが分かればそれをDownloadsフォルダから削除・起動して保存・再導入すればある程度は解決できると思います。
もちろん、自分で修正できる方は修正したほうがいいです。なにかハックしたオブを公開するときのチェックなどにも有用です。


.