The Elder Scrolls 3: Morrowind #14 Your Name.

Your Name.

人格が入れ替わったり、Baar Dauが落下するわけではない。
名前を聞き出すまで、人々の名前が分からなくなるmod。姓名別に判定して記憶されるようになっていて、物覚えの良さにskillやattributeが関わってくる。

Ultimaを代表とするいくつかのRPGは、名前を聞き出すまでは誰なのか分からないようになっているゲームデザインがあるんだけれど、それが好きなのでやりたかった。

Modathon用に簡単なのを作ろうと思っていたんだけれど、意外に面倒だった。これだから自然言語は。

  • 一切名乗らないやつが意外にいる
  • 固有名ではないやつ(Guardとか)の扱い
  • 冠詞(the)や前置詞(of)が邪魔
  • 引用符で一部くくられたやつがいるが、テキスト中では別にくくられていない
  • luaの文字列検索が貧弱(正規表現は規模が大きいのでやりたくなかったらしい)
  • 完全一致だと所有系(’s)に一致しないが、前方一致だと無関係な言葉に誤爆する
  • 同一キャラクターで複数IDを持つやつがいる
  • creatureはそもそも喋ることができるのかどうか分からない

名乗るかどうか怪しい問題児は、フラグで判定できるようにしたけれど、クエストに関係しているかどうかはうまく取れなかったなあ。事前にNPCからクエスト情報が取れると、クエスト関係のグラフが構築できるので、このmodに限らず様々なことに役立つんだけれど。
どうしようもないパターンはテーブルに頼るのでmoddingに弱いが、カスタムはしやすいだろう。

名前の出現は、テキスト側と名前側をかなり前処理して整形したあとにスペースで分割して完全一致にした。所有系も出現しないことはないんだけれど、目をつぶる。

名前の管理はビットマスク。忘却曲線という実際の人間の記憶の残り方に基づいた記憶管理をしているんだけれど、元の曲線は縦軸が確率なのでそのまま適用すると、何度も話しかけていると記憶喪失になってしまう。なので、縦軸を時間に変更した曲線を定義している。

The Elder Scrolls 3: Morrowind #13 Hanafuda: Akaviri Playing Cards

Hanafuda: Akaviri Playing Cards

Morrowindで花札の「こいこい」をギャンブルとして遊べるようにするMod。

5月のModathonの途中から作り始めて、今まで結構時間をかけて作っていた。まだやり残していることが結構あるんだけれど、自分だとできないことだったり、できても必要以上に時間をかけているとモチベーションも無くなってくるので、キリのいいところで一旦リリース。
ソースコード量だけで言うとMorrowindのmodのなかでもかなりの大作だと思うし、ここまでMorrowindのUIを使い倒しているmodは他にないんじゃないかと思う。なので、苦労に見合うように遊んでくれると嬉しいです。

発端は、Modathonが始まってcommunityで花札をMorrowindで遊びたいという声が上がったことから。communityには自分を除いて日本人は見当たらない(と思う)ので、もちろん海外の人から。その時は、Modathon向けに作っているmodが既にいくつかあったし、modding可能な範疇で技術的に作れるのか分からない部分が多かったので、あまり気に留めずにいた。

いくつかmodをリリースしてある程度moddingに慣れてきたところで、より発展的なアイデアをいくつか検証しているときに、以前のその話を思い出した。日本人なので花札について知っていて、さらに日本語で専門的な情報を集めやすい自分がそれを実現することに向いてるんじゃないかと思ったので、技術的に実現可能なのかどうか他のアイデアと並行してプロトタイピングしはじめた。
Modathon期間中はcommunity内でカードゲームについて時々話題が出ていたので、ネタが被らないかどうかちょっと心配していた。この話題はあくまで話題で、実際に本格的に作っている人はまだいなかったので杞憂だったのだが。

Modathonの終わりが近づいてきたときに、ゲームが大雑把に一通り動作する状態になって、MWSEで作りきれそうというのは分かったが、Modathonには間に合わなさそうというのも分かった。
完成までやることが沢山あるのと、ネタ被りしないように公言しておきたいのと、要望出していた人のほうが花札に詳しいのでフィードバックを貰いながらのほうがいいだろうということで、community内で進捗をオープンにしながら作ることにした。

続きを読む →

The Elder Scrolls 3: Morrowind #11 Use What You Used First

Use What You Used First

ロックピックやリペアツール、ライトといった回数や時間に残量があるアイテムを使用するとき、同じアイテムのうち一番残量が少ないものから使用するようにするmod。

そう書いているということはデフォルトの挙動はそうじゃなくて、特にQuick Keyから使用すると適当に選んで使い始めるので、何回か中途半端に使ったアイテムが沢山インベントリに生成されることになる。
これはModathon以前にプレイしていた時に結構気になっていたんだけれど、コミュニティのdiscordのやり取りを見ていて思い出したので作った。既存のmodでは、ロックピックを持ってない時に錠の前で自動で装備するとか、キー入力でロックピックの品質を切り替えていくとかあるんだけれど、残り回数についてケアしているものは見当たらなかった。
気にしない人は気にしない挙動なんだろうけれど、特にリペアツールなんかは結構重量があって嵩張るので心理面以外にも実利がある。

うれしいことにインベントリから自分で選んで使用するときにも、ロックピックの残り回数を見比べて少ないものから選ぶということをしなくても、適当に装備しようとすれば残り回数が少ないやつから自動的に使用し始める。Quick Keyでなくても便利になった。

テストしていて気が付いたんだけれど、武器を振っている最中にもロックピックなどは装備することができるし、ロックピックを使っている最中にプローブなどに持ちかえることもできる。武器から武器への変更は振り終わるまで出来ないのに。

The Elder Scrolls 3: Morrowind #10 Custom Portrait

Custom Portrait

インベントリ左にあるレンダリングされたキャラクタイメージを任意の指定した画像に差し替えるmod。ペーパードールをポートレートに差し替えると言うとなんだか懐かしい響き。

20年以上前の見栄えのしないレンダリングよりも、私の好きなクラシックRPGのポートレート方式の方が良いんじゃないかと思ってやってみた。
MWSEを使うと、メニュー内に画像を足すことは簡単にできるんだけれど、このキャラクターイメージの場合、内部的にレンダリング諸々の独自の処理が動き続けているので普通の画像操作とは挙動が異なり、自在に画像をレイアウトできるというわけにはいかない。そのブラックボックスの挙動を把握することが最初の難所だった。
チマチマと挙動を推測して実践してうまくいけそうだという手応えは掴めたんだけれど、自分だけが差し替えるんじゃなくてユーザが好きな画像を指定できるmodとしてリリースするには、それが容易にできるようなユーザフレンドリーなMod Configメニューを作るのが大変だろうという予想は浮かんでいた。
そして、予想通りメニュー作りが一番大変だった。

MWSEのMod Configメニューには、mcmというフレームワークが用意されていて、基本的にはそれで比較的容易にMod Configのメニュー画面を作成することが出来るんだけれど、今回はその基本的なことから外れていることをやるだろうという予想だ。
このmodのメニューでやることは、一般的なメニューの単純にフラグをオンオフして、スライダーで値を調整できるというものではなくて、画像を指定してロードできるようにして、エラーハンドリングも含めて正常動作するように対応して、インベントリ相当のプレビューを表示して、表示を調整するような各項目の変更にもプレビューをリアルタイムに追従させるという…要するに様々な項目が連動して動的に変化するメニューである。このような場合、mcmを使用することは(知っている限りでは)その構造上難しく、フレームワークではないローレベルなUIのAPIを使用して処理する必要がある。

それから、本来のキャラクターイメージには、マウスカーソルをあてるとその装備品のツールチップが表示されて、それをクリックすると装備を外すことができ、逆に装備品やアイテムを持っていくと装備や使用したりする機能がある。
前者はポートレートになることで見た目と機能が一致しなくなるので無効にしたいが(インベントリから同じことが出来るので不便ではない)、後者は出来なくなるのは困る。前者を無効にしようとしたときに、単純にマウスオーバーやクリックのイベント処理を停止させると、全く同じクリックを行う後者の装備やアイテムの使用も出来なくなる。データやイベントには、それらを区別するための違いがなくて困った。これはCommunityでそんなの分からんよという、ドキュメントになってないような情報を教えてもらって何とかなった。

余談であるが、この手のペーパードールやポートレートとステータス画面は、本来の電源無しのRole-Playing Gameのキャラクターシートがモチーフになっていると思うのだけれど、このmodを作るときに検索して見ていたところ、日本のキャラクターシートにはほとんど必ずと言っていいほどポートレート欄があるのだけれど、英語圏のCharacter Sheetにはポートレート欄が無いものが多い、ということに気が付いた。