08/03/08 15:51:24 O2hDer12
>>221
スクリプト側に状態保存を一任とかすると、すごいバグの温床になるよ……(経験者談)
アドベンチャー系のゲームの場合は、発想をまるごとかえて、
・オブジェクトへのプロパティ設定が実際に画面や音声に反映されるのを遅延する仕組み
を作ったうえで、
・任意のシナリオファイルの頭から指定行(再生位置)まで以下の2種の再生ができるプレイヤー
a. 画面を更新しつつ再生
b. 画面更新なしでプロパティの設定のみ行い、再生して位置がきたら全オブジェクトの画面を構築
をつくっておけば、どんなに複雑な処理をしてしまっても、セーブ情報としては、
フラグ系+現在のシナリオ+現在の行(テキスト)番号
だけでよくなる。
ロードするときには該当位置まで一気に内部再生してしまうわけ。
常に前回からのプロパティ差分を記録、とかデータの保持を工夫すれば逆再生も可能。
シナリオをいじると、行が前後する可能性はあるけど、たかだか数行程度なので、
ユーゼの許容範囲内。使えないことに比べると断然よい。
あと、長すぎるとシナリオ末尾のロードにすごく時間がかかるようになってしまうので、
適度にシナリオを切り分けて、その頭では常に全オブジェクトが破棄されたところから開始、
とか工夫する必要はある。フラグ系も常にシナリオの間で処理するようにしておかないと危ない。
一般的な ADVなら、よっぽど変なことをしてない限りは、100kぐらいまでの分量なら2~3秒
以内に読み飛ばせると思う。