お店での値段識別の自動化 RogueEna

ついに、ぼくの note のフォロワーさんの数が1000人を超えました。ありがとうございます!

今日は連日の猛暑に比べると涼しかったですね。1ヶ月以上の躁転から数日前鬱転してしまったのですが、気温や気圧などの気象が原因かもしれないなとは思います。寝付きが悪いのも暑いから。主治医には「エアコンを買いなさいな」と言われてしまいまして・・・やっと先日エアコンを購入しました。まだ工事業者さんが来てないので取り付けが行われていないのですが、お盆明けにはエアコンがうちにも完備される予定です!一人暮らしなのに6畳と14畳の2部屋という無駄に広い家に住んでいるのですが、安く済ませたい無職なので寝室に使っている6畳の部屋にだけ設置することにしました。これで眠るときだけは苦しまなくて済みそうです。

また、今日はどうしてもテレビで風来のシレン5 Plus がやりたくて、PSVita TV という、PSVita の据え置き版を買ってきました。PlayStation のアカウントと PSVita のメモリーカードがあれば、そのまま何も考えず移行できて(しかもカードを抜き差しすればすぐに戻すこともできて)とても便利でした。それで、今日は DUALSHOCK4 + 40インチ薄型テレビで「シレン5」をたっぷり遊んでしまいました。

肩慣らしとしてメインストーリー用ダンジョンを通しでクリアしておきました。明日からたっぷり遊んで、もっと難しいダンジョンを制覇していく予定です!

と、前置きが長くなってしまったのですが RogueEna のお話を。

値段識別

NetHack や風来のシレンをはじめとする多くのローグライクでは、モンスターがはびこるダンジョン内に何故か露店を開いているNPCがいらっしゃいます。逆鱗に触れると大変なことになるので冒険者はお店の中ではおとなしくしておくのが無難です。

そんな露店では、値段識別というテクニックがあります。初代SFC版風来のシレンの場合はこんな感じです。

http://twist.jpn.org/sfcsiren/index.php?価格での識別

未識別(つまり、使うと何が起こるかわからない、実体が不明なもの)なものも、お店で売っている値段は実体に対応して決まっていて、その値段が分かれば識別ができてしまう、というテクニックです。

しかしこの識別方法は随分と面倒なものでもあります。以前にも説明をしたことがありますが今一度説明しようと思います。

値段識別は値段と品物の対応を頭に入れておくか、攻略サイトやゲーム内の図鑑を見ながら、この品物はこの可能性があって〜と調べていく、ちょっとしたパズルゲーム(因数分解を解くような感じ?)のようなものです。

品数は売っているもの+所持しているものの数だけあって、そのうち未識別(修正値・祝福・呪い・回数など一部の不明も含む)なものをすべて(もしくは必要最低限)価格を確認して、可能性を絞り込んでいきます。しかも値段は販売価格と売却価格で違っていたり、修正値や呪いなど、品物の状態によっても若干の値段差がつきます(※1)。

※1:余談になりますが、品物の状態によって値段差を付けることが必要なのは、店の中で商品を使用して残り回数が減った場合などに差額を支払わねばならないという、自然な理由があるからなので、値段差を付けないのは仕様的にマズイかなと思います。

このように計算式はとても複雑で、情報をすべて用いて可能な限り識別を行おうとすると、その作業量や時間はとても増えてしまいます。これが楽しいという人も居るとは思いますが、ぼくは面倒なので妥協して、適当に覚えている情報を使って識別しています。

例えばシレン5なら腕輪が5000円で売ってたら呪われてないのでとりあえず装備して、気配察知か道具感知(感血)だったら名付け、そうじゃなかったら 5001 とか 5002 みたいな名前を付ける、みたいなパターンを覚えて、識別したりしています。呪われているかどうか、値段を見てわかっちゃうんですよね。

値段識別という遊びは、発想力による頭脳プレイというより、知識を活かして時間をかければ誰でも同じ結果が得られるようなプレイだと思うので、面倒でも網羅的に識別プレイしようとする人が一定数居て、そういった慎重に遊ぼうとする方々にとってはやはり値段識別はただ苦痛な作業になってるだろうなと思って、ぼくが作ろうとしているローグライクではそもそも露店を無くしてしまおうかなーと考えていました。ですが、実は昔それを解決するアイデアを考えていたことを思い出し、取り入れることにしました。

値段識別の自動化ツールの話

もう随分前になりますが、ぼくが風来のシレンにハマった頃、この値段識別を面倒だと感じて、情報さえ集めれば解が機械的に見つけられるはずだと考えて、アプリを作ることにしました。初代風来のシレンの値段識別専用の iOS/Android アプリを作っていました。結局はリリースしませんでしたが、手元ではある程度使えていました。(保守がめんどくさくなってリリースをやめました。)

そのアプリは、お店で値段を確認するときに使うのですが、値段と種類と追加情報(壺の容量など)を入力すると、その値段から可能性のある全ての名前を教えてくれるというものです。ゲーム開始時にアプリ側にも開始したことを知らせて、手動で識別済みのものにチェックを入れることもできるので、識別済みを除外した結果だけに絞り込んでくれるようにもなっていました。

このツールはぼくにとって、かなり便利でした。お店が来たらほぼ全てのアイテムが識別・絞り込みができて、命の草ってもう出てたっけ?みたいなことも全部含めて全部おまかせできました。

自動化導入を検討

このアプリとほぼ同等のツールを、RogueEna にも入れてしまおうと考えています。これなら、露店での識別が面倒ではなくなるし、アイテムに対して無知なせいで失敗したということを、ゲーム側の説明不足が原因なのに、非がないプレイヤーにそれを押し付けてしまう状況も減らすことができるかなと思っています。

このツールを導入するに当たって必要なことは、シレン5と同じような名付けの仕組みです。自由入力、図鑑から指定の2種類の方法で名前をつけること、図鑑から付けた場合は仮識別済みという状態になること、図鑑では未識別・識別済み・仮識別済みを見分けられるようにすること、以上が最低限の必要な機能です。これがなければ、自動的に絞り込むことはできません。

また、自動化されていることに気づいてもらうためには工夫が必要です。
勝手に識別済みになったらおかしいので、プレイヤーのオペレーションが介入されるようにします。例えば露店に居る時、品物や所有している未識別・仮識別済みのアイテムのオペレーションメニュー(拾う・使うなど)を開くと「値段識別」という項目が出てきて、それを使うと絞り込んだ状態で名前をつけられるようになる、という感じです。
2つ以上の候補があることも多いと思いますが、そういうときは自分で名前をつけるか、候補を出した瞬間からそのアイテムは値段識別オペレーションがいつでも呼び出せるようになる、というような方法も考えています。
図鑑には売買価格や回数などの補正が明記されていて、値段によって識別ができるということもプレイヤーに気づいてもらうようにしたいですね。

ロールプレイ的な面白さに問題は生じないか

こういった自動化ツールというのは、ゲームの外の世界という感じがしますよね。ロールプレイをしている感覚から引き剥がされる恐れのある危険な機能かもしれませんね。でもそれはツールとか自動という名前がついていることが1つの要因だと思っています。

では、例えば「主人公は丁寧にメモを残す賢い人、店主は品物の値段にとても詳しくて、店主に手伝ってもらって絞り込んでいる」と考えるとどうでしょうか。もう少し具体的にします。

「(未識別)まるい箱」というアイテムを持っていて、お店の中でそのアイテムのオペレーションメニューを開くと「店主に識別してもらう」という項目が増えています。それを選ぶと

店主「お客さん、その品は私の見立てでは買取価格は1600Gですねえ。多分このどれかだと思いますよ。」

というようなメッセージがでてから(硬い箱・保存の箱が一覧にでてくる、過去の識別状態のマークも付いてる)という動作になるとどうでしょう。

これをツールと感じるでしょうか?

ゲーム内のあらゆる機能は元々無機質なものです。ゲームの世界はそれを如何に隠して生き生きとしたものに味付けするかが、とても大切なことです。いや、隠すというと語弊がありますね。説得力のある世界観を創造する、と言い換えるべきでした。

応援してくださると嬉しいです。よろしくお願いいたします!