『エルデンリング』の“やたら強い犬”はバグのせいとのユーザー報告。困ったプログラムで犬攻撃が超火力
『エルデンリング』にて、特定の犬型敵NPCに「一瞬で大ダメージを発生させるバグ」があるとのユーザー報告があがっている。プレイヤーを即死させる困った犬の背景には、ゲーム内部演算上の不具合があったようだ。本稿には、後半エリアの画像なども含まれるため留意されたい。
『エルデンリング』は、フロム・ソフトウェアが手がけたアクションRPGだ。舞台となる広大な狭間の地には、敵の兵士たちや名状しがたい怪物たちのほか、巨大な竜などさまざまな強敵が待ち構えている。特にボスなどの強さが取り沙汰されるなか、ある敵NPCは「やたらと強い」として一部ユーザーの注目と憎しみを集めていた。その敵NPCとは、犬である。
とはいえ、強いとされた犬はただの犬ではない。一部エリアに登場する、グロテスクな見た目と出血を強いる攻撃をもった、通称「出血犬」だ。この出血犬は、時としてあまりの大ダメージをはじき出すため、犠牲になった褪せ人からは「バグがあるのではないか」との声もあがっていた。海外掲示板Redditでは、2000HPを一撃で消し飛ばされたとする報告の動画が反響を集めていた。なぜこの犬だけがこんなに強いのか。不具合めいた理不尽さながら、本作の時に容赦ないゲーム性もあり不具合か否か議論を呼んでいた。
そして3月30日に、ユーザー投稿のYouTube動画によって「出血犬強すぎ問題」にある見解が示された。投稿者は、『ダークソウル』シリーズなどの解析動画を投稿しているZullie氏だ。同氏によれば、出血犬の非情なるダメージの原因は、本作の内部演算に起因する不具合なのだという。分析においては、『ダークソウル』シリーズのMod制作ツールなどを開発するMeowmaritus氏の助力もあったとのこと。
動画のなかでは、まず『エルデンリング』におけるNPCたちのアニメーション実装方法について説明している。本作には、NPCごとに固有のIDが割り振られているとのこと。相棒となる霊馬トレントの場合は「c8000」とのIDが割り振られているようだ。そして、NPCのアニメーションデータは「anibnd」形式のファイルに取りまとめられており、トレントの場合はc8000と名付けられたアニメーションデータを利用しているとのこと。そして、トレントのアニメーションはほかのNPCなどと被らない、独自のデータを利用しているそうだ。
一方で、敵NPCの騎乗する馬などについては、共通のアニメーションデータを利用している場合もあるという。見た目の違う馬はそれぞれ個別のIDをもち、別の3Dモデルを割り当てられている。しかし、アニメーションデータ自体は、1種類の馬のものを再利用しているというわけだ。馬などの場合はサイズのバリエーションも少なく、こうした再利用も特に調整の必要なくおこなわれているようだ。
しかし、出血犬の場合はやや事情が違う。出血犬には、大きいサイズと小さいサイズのふたつが存在する。そしてサイズの違う両方の出血犬は、同じアニメーションデータ(攻撃モーション含む)を共有している。しかし攻撃の性質は、大小の犬で分けられているようだ。Zullie氏によれば、『エルデンリング』はこの差を解決するために、大犬/小犬の攻撃データを同じ配列(array)に格納して使い分けている。
配列(array)とはごく簡単にいえば、複数のデータを塊として扱う、プログラムにおける仕組みだ。イメージとしては、「犬攻撃データ」という大きな箱に、「大犬攻撃/小犬攻撃」なるふたつのデータがおさまっていると捉えられる。プレイヤーに攻撃が当たった際に、プログラムが自動で犬のサイズを判別し、適切な犬サイズの攻撃判定をプレイヤーに適用するわけだ。大きい犬の場合であれば、プレイヤーに届くのは「大犬攻撃判定」であり、「小犬攻撃判定」は適用されず無効化される。さらに、この配列は「プレイヤーに攻撃が当たったかどうか」を記録する役割も兼ねているとのこと。一度プレイヤーが攻撃を食らえば、攻撃判定は無効化される。つまり、適切な処理がなされれば、同じ噛み付きに連続でヒットすることはないわけだ。
ところがひとつだけ、この処理が適切に働かない攻撃があるのだという。具体的には、小さいサイズの出血犬による、力を溜めてから噛み付くような攻撃モーションだ。このモーションの発生時においては、なぜか上述の「犬攻撃データ」配列が消えてしまうのだという。配列が消えると共に、ゲームのプログラムはプレイヤーが攻撃を一度食らっていることも“忘れて”しまう。同時に、配列には新品の「犬攻撃データ」が流し込まれ、ふたたび攻撃判定が発生する。すると何が起こるのか。プレイヤーが、通常ではありえない速度で立て続けに攻撃を食らってしまう。つまり、プレイヤーを一瞬で葬った噛み付きは、実質上は猛烈な速さの連続攻撃だったとの検証結果が出たのだ。Zullie氏は、この現象発生時のダメージについて、「秒間1万1640ダメージ(出血ダメージ除く)」との試算を出している。
Zullie氏による見解は、あくまでもユーザー解析の結果ということには留意しておきたい。しかしながら、出血犬による謎の大ダメージに答えを示す興味深いデータでもある。フロム・ソフトウェアは、アップデートによる不具合修正などにも精力的。今後のパッチにて、出血犬の猛攻も修正が入ることを期待したい。それまでは、ケイリッドの隠遁商人が売る「獣除けの松明」などで自衛するしかないだろう。そもそも犬自体が怖い点については、気合で頑張るしかなさそうだ。