若干落とし穴
- 2011/07/09 01:33
- カテゴリー:雑記
ぬむう、STARLIKEの通常セーブデータを新しい仕様にバージョンアップしたが、ゲーム内のセーブ/ロード画面からの消去機能に新旧の壁が存在することが発覚した。
新仕様ではNScripterの「savegame2」という命令を使用しゲーム進行情報を文字列としてセーブデータに付加しており、「getsavestr」命令でその文字列を取得している。
しかし旧仕様の「savegame」で保存した古いセーブデータを「getsavestr」すると、文字列""(null)を返してきて一見正常に無効な処理として終了しているように見えるのだが、何故かその後「fileremove」命令で該当ファイルを消去出来ないという状態に陥ってしまう。
一度アプリケーションを再起動してやると「fileremove」出来るようになるので、データが破損するわけではないようなのだが…。
そもそも新旧のデータを判別するためにも「getsavestr」を通す必要があるので、コリャお手上げ状態だ。
せっかく旧データをsavedataフォルダに置くと付加情報が「??」表示になるというガードをかけておいたのに、結局手動削除するしかないとは(泣)
ようするにこれは、「savegame」で作ったセーブデータと「savegame2」で作ったセーブデータを混在させるなということなのだろう(普通そんな状況にならないしね…)。
そう考えると、今回のセーブ/ロード画面のアップデートはかなり旧来のものと隔たりがあるのだと考えられる。
バージョン表記を1.00系ではなく2.00に更新するべきかもしれない。
丁度第壱話Ver.1.05にもちょっとしたバグが混入しているのを発見したところなので、ヌルっとやっちゃおうかしらん。
savegame 1
getsavestr $0,1
fileremove "savedata/save1.dat"
コレはNScripterの仕様的にNGみたいです。残念。