Darkside(リンクエラー修正しました)

2015年4月7日(火) 21:57

運用回避

 TAS製作の続きを行う場合、まずムービーファイルを「書き込み可能」で再生する。
 次に、ポーズを掛ける。これは必須ではないが、停止させておいた方が作業し易い。
 最後に、前日までの作業をステートロードする。

 ところが、何度ステートロードしても、エラーが発生して psxjin が落ちる。
 再現性が非常に高いうえに、これでは製作を続行できない。そこで、デバッグモードで動かして原因を調べる。

 デバッグ環境があるのは助かるものの、コンバイル言語であるCというのがネック。インタープリターの場合だと、エラーで止まった場合に詳細な情報が得られる。だが、C++では情報が限定的。関数呼び出し履歴だけでも知ることができれば、相当に違うのだが。
 思った以上に原因追求が困難で、しょうじき正確な原因は不明。しかし、推測はできた。

 ステートロードするセーブデーターのフレーム数が、ムービーファイルのフレーム数より多い場合に、ヒープが壊れてアプリが落ちるのだろう。

 ムービーファイルを空走させてフレーム数を増やしておけば、ステートロードでエラーは発生しなくなる。
 要するに最初の手順では、タネとなるムービーファイルは古くても構わない。しかし余りに古くて記録済みフレーム数が少ないと、受け入れるステートデーターの方が大きくてメモリーから溢れてしまうわけだ。
 これを修正するには、受け入れステートがでかい場合にムービーファイルの領域を強制拡張せねばならない。結構面倒くさいという予感があるので、修正は行わずに「運用回避」することにした。

 十分にでかいムービーファイルを用意しておけばいい。
 そもそも1日の作業の最後に、ステートセーブだけでなくムービー保存もしておけば問題ないのだが。横着するからエラーが発生する。

 さて、3つ目のバッテリー回収は、その手前の方が厄介である。
 回収自体は、2つ目のときのスクリプトが殆どそのまま流用できるはずだ。

 まず、イン側に通過可能な隙間があるかどうか確認。残念ながら、ゴミ箱が邪魔で街角とタクシーの間は通れそうにない。
 そうなると、タクシーの外側から廻り込まねばならず、走行ラインが苦しい。しかも、このアングルだと何も無いように見えるが実は自転車が隠れていて、タクシーの外側も走行ラインは限定されている。

written by higashino [ゲーム] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4