日記/2012-03-13
2012-03-13 (火) 23:06:17
ホムAI:テレポ前後で記憶維持すべき情報†
テレポ前後でホムスキル効果/ディレイが継続される、という話なので、つらつら検討開始。
いろいろ調査しなければならないこともあるので、まずは思考実験検討。
[+]→続きを読む。
[-]
要調査項目の整理。†
- 疑念:ホム固体IDと、スキル系情報維持の依存性はあるか。
- すでにわかっている情報として、AIロード時のホム固体のIDは、以下の2ケースで異なる。
- 次の条件では、ホムのIDは維持されている。
- ホムを出したままで、テレポしたとき。
- 次の条件では、常に新規のIDが振られている。
- 「安息」→「コールホムンクルス」でホムを出しなおしたとき。
- ホムを出したままで、マップ間移動したとき。
- 要調査:おそらくはID変化すると思われるが、以下の状況は未調査。
- 未調査:ホムを出したままの状態で、ボスケミ自身がログアウト・ログインしたとき
- 未調査:ホム死亡→リザホムしたとき
- 友瀬の設計者の直感として、ホムIDが維持されていればスキル系情報も維持されそうだが、IDが変わったならばそうではない可能性が高い。
⇒実際がどうかを調査しなければならない。
- いずれにせよ、保存するログには「ホムID」を記録しておくべきだろう。
- 意図:違うホムIDならば、別のホムなので、スキルは使えるはず。
この場合に「以前のログ」情報に基づいてスキル使用できなくなるのは美しくない。
- 意図:違うホムIDならば、別のホムなので、スキルは使えるはず。
対応アルゴ検討†
先日の日記では
スキル使用タイミングを外部ファイルに書き出すようなことをしないとダメってことで。
さすがにそんな仕組みはないので、ちょっと考える。
・・・とか書いたんですが、よくよく考えると Glenelg では「テレポ前後でNormal/Followのモード維持」という仕組みがある。
ついでに「ファイル名を使ったエクスプローラでの状態表示」をする仕組みがあることから、内部的に表示情報のテーブルを管理する仕組みもある。
これらを生かして、「外部表示する内容」を常時別ファイルにバックアップ→AIロード時にリストアする仕組みは、そんなに手間なくできそう。
「テレポ前後のモード維持」は、現状ファイル名を利用した無理矢理な仕組みなので、むしろエレガントに作れる。
一回の情報表示ごとに2つのファイルアクセスをしなければならないのは、ちょっと美しくないけど。
- 通常状態表示処理。
- 現状のGlenelgでは、ブーストスキルを使用すると「Now_Boosted」という状態表示をしている。
この処理に前後して、記録処理を追加する。 - 記憶処理詳細:別の記憶ファイル「state.dat」を作る。
内容は、「スキルxxxx使用」「終了予定時刻t」という情報。
あわせて、「ホム固体id」「Normal/Follow」といった情報も記録しておく。
- 現状のGlenelgでは、ブーストスキルを使用すると「Now_Boosted」という状態表示をしている。
- AIロード時処理。
- 現状のGlenelgでは、ロード処理時に外部ファイルを参照し、Normal/Followを読み出す処理をもっている。
この処理を整理し、復帰処理を改造する。 - 復帰処理詳細:
- state.dat ファイルを読み取る。
- ファイル内のホム固体idを取得し、自分のidと比較。
不一致ならば、この時点でこのファイルは無意味と考えて、捨てる。 - ファイル有効ならば、そこから情報を取り出し、状態表示管理テーブルにインポートする。
- インポートされてしまえば、従来の状態表示処理と同じ扱いでOKになる。
- 現状のGlenelgでは、ロード処理時に外部ファイルを参照し、Normal/Followを読み出す処理をもっている。
雑感。†
場合によっては、最近のAIの多くがサポートしている「状態表示ツール」を別提供することも考えてもいいかなぁ。
正直、ポリシー的には微妙なんだけど。
ご意見などがあれば。
Link: 日記/2012-03-10