はじめまして、この度2021年度の新卒として入社したA.Sと申します。
新しく何らかのコミュニティに入ったときに聞かれることの一つとして、「休日は何をしていますか?」という質問は定番ですよね。
私の場合は何をしているかといいますと、スマートフォンゲームのドラゴンクエストウォークをやりながら割とどうでもいいことを真剣に考えたりしています。
今回の記事は自己紹介エントリということですが、趣味の紹介も兼ねて実際に考えていたことについて書きたいと思います。
ゲーム概要
・いわゆる位置情報ゲーム(ポケモンGOとかもこれ)
・一般的なRPG ⇒ モンスターを倒してレベルを上げるのがメイン
・オートプレイモードがついており、モンスターに対してコンピュータが自動で技を繰り出してくれる。
このオートプレイモードは非常に便利で、ランニング中やテレビを見ながらでも自動で敵を倒してくれます。
ところで、ドラゴンクエストシリーズには代々メタル系モンスターというのがいます。これらのモンスターを倒すと飛び抜けて高い経験値が得られるのですが、その代わりに耐性や回避率が非常に高く、一定確率でしか倒せません。そしてこのユニークな特性のためか、メタル系モンスターを倒すときにオートプレイモードを使用すると、"最適な行動"をとってくれないということがあります。
そこで今回はまず、ここでいう"最適な行動"とは何かについて考えてみたいと思います。
設定
まず簡単のために、2体のメタル系モンスターをそれぞれA, Bとし、経験値をそれぞれFA, FBとします。そして今回はプレイヤーが2種類の技X, Y(図)を持っており、いずれかの技を使ってA, Bを倒すという状況を考えます。
ここではX, Yのどちらを選択するのがよいのかを評価するための指標として、
・一回の行動で得られる経験値の期待値
・2体を倒しきるまでにかかるターン数の期待値
を計算したいと思います。
1回の行動で得られる経験値の期待値
ここではFA = 10000, FB =20000として考えます。
すると、
・(Xを使った時の経験値の期待値) = 6000
・(Yを使った時の経験値の期待値) = 10800
となります。(計算が間違っていたら教えてください!)
2体を倒しきるまでにかかるターン数の期待値
下図のような遷移図を参考にしてX, Yのそれぞれについて求めると、
・(Xのみを使ったときにかかるターン数の期待値) = 6.7ターン
・(Yのみを使ったときにかかるターン数の期待値) = 3.9ターン
(計算が間違っていたら教えてください!)
XとYのどちらが最適か
これらの二つの結果から、Yの方が経験値の期待値も高く短いターンで敵を倒すことができることがわかります。ドラクエをプレイしたことがある方ならお分かりかと思いますが、メタル系モンスターは逃げてしまうことがあるため、短いターンで倒せるに越したことはないです。したがって、この場合においてはYを選ぶのが最適だと考えられます。
ところが、ドラクエウォークではほぼこれと同じ状況でなぜかXが選択されてしまうため、毎度毎度もやもやしています。なぜそのような選択がなされるのかについては様々な理由が考えられますが、プレイヤーからは見えない事情や処理の難しさなどもあるのでしょう。
最後に
FIXERでのエンジニアとしてのお仕事でも自動化業務があるかと思いますが、人間が判断すればどちらが合理的なのかを簡単に判断できるようなことでも、コンピュータに自動でやらせるためには想像以上の難しさがあるのだろうと思いました。そういった部分に常に思いを馳せながら仕事に取り組みたいです。
よろしくおねがいします!