人格が入れ替わったり、Baar Dauが落下するわけではない。
名前を聞き出すまで、人々の名前が分からなくなるmod。姓名別に判定して記憶されるようになっていて、物覚えの良さにskillやattributeが関わってくる。
Ultimaを代表とするいくつかのRPGは、名前を聞き出すまでは誰なのか分からないようになっているゲームデザインがあるんだけれど、それが好きなのでやりたかった。
Modathon用に簡単なのを作ろうと思っていたんだけれど、意外に面倒だった。これだから自然言語は。
- 一切名乗らないやつが意外にいる
- 固有名ではないやつ(Guardとか)の扱い
- 冠詞(the)や前置詞(of)が邪魔
- 引用符で一部くくられたやつがいるが、テキスト中では別にくくられていない
- luaの文字列検索が貧弱(正規表現は規模が大きいのでやりたくなかったらしい)
- 完全一致だと所有系(’s)に一致しないが、前方一致だと無関係な言葉に誤爆する
- 同一キャラクターで複数IDを持つやつがいる
- creatureはそもそも喋ることができるのかどうか分からない
名乗るかどうか怪しい問題児は、フラグで判定できるようにしたけれど、クエストに関係しているかどうかはうまく取れなかったなあ。事前にNPCからクエスト情報が取れると、クエスト関係のグラフが構築できるので、このmodに限らず様々なことに役立つんだけれど。
どうしようもないパターンはテーブルに頼るのでmoddingに弱いが、カスタムはしやすいだろう。
名前の出現は、テキスト側と名前側をかなり前処理して整形したあとにスペースで分割して完全一致にした。所有系も出現しないことはないんだけれど、目をつぶる。
名前の管理はビットマスク。忘却曲線という実際の人間の記憶の残り方に基づいた記憶管理をしているんだけれど、元の曲線は縦軸が確率なのでそのまま適用すると、何度も話しかけていると記憶喪失になってしまう。なので、縦軸を時間に変更した曲線を定義している。