SEKIRO, ELDEN RING, AC6などで見つけた不思議な現象

この記事はCCS †裏† Advent Calender 2023 20日目の記事です。なんか似たような話が続きますので、表裏同時公開とさせていただきました。12/20は自分の日です。

昨日の記事はglvntla__ccsさんの『身を切る話』です。きつい……
このレベルの病気を患ったことがないため、非常に恐怖を感じました…ぜひお大事になさってください……
翌日の記事はQ字ネクタイさんの『今日は背景勉強、blenderをしよう(提案)』です。自分も表記事ではちょこっとBlenderを使用したりもしています。(背景の勉強というわけではありませんが…) BlenderのレンダラはEevee, Cyclesともにめちゃくちゃスゴいので、とりあえずCG処理の説明や確認のためによく使います。

はじめに

よく聞け 役立たずども 愉快な良記事の時間は終わった 直近にキモオタになる予定があるものだけついてこい!!

本記事は、FROM SOFTWARE社様開発のゲームであるARMORED CORE 6, ELDEN RING, SEKIROについて、プレイ中に見つけた不思議な現象の紹介と、それらの考察をテキトーにやってみる、というものです。以下、注意点です。

  • 各作品の重大なネタバレを多数含みます。

  • 考察に関しては絶対に信用しないでください。一切の根拠はありません。

  • 不思議なところとか言ってますが、要は粗探しです。褒められた行為ではありません。

  • あくまで自分が遭遇したものをまとめています。既知かどうかの調査や、有名かどうかのような判断はかなり不正確ですし、取り逃しも当然あります。

AC6

振り返れば4カ月前、2023年8月25日に、ARMORED CORE 6 FIRES OF RUBICONが発売されました。院試の合格発表を9月1日に、学会発表を9月17日に控えた自分は、この日初めて研究をサボったのでした。ガキの頃からアーマード・コアをひたすらやってきた自分が、他の有名タイトルとともに育った人々が普通に体験するであろう、「子供のころからやってきたタイトルの新作を発売日にプレイする」という幸せを味わうことができるとは思っていませんでした。

↑様子のおかしい人です

Screen Space Reflection

下の湖面の部分にご注目ください。なんかACの残像みたいなのが湖面に映っていたり、ブーストとレーザースライサーの光だけ映っていたりします。これは多分Screen Space Reflection、SSRと呼ばれる技術の弊害によって生まれるアーティファクト(レンダリング技術のバグなどによって生じる、見えてしまっているが本来存在しない何か)です。描画設定を「低」にすると、SSRが効かなくなるのでこの現象は発生しません。
SSRの詳細な説明に関してはこちらなどを見て頂けるとよいかと思います。とても雑に説明すると、鏡や水面などの反射で映り込みが発生する部分について、いったんその映り込みを無視して画面全体をレンダリングしてから、レンダリングした後の画面上の、鏡や水面に映りこむであろう部分を求め、その部分を貼り付けるような技術です。SSRを使用すると、ゲーム内の3次元空間(ワールド空間とか言う)に対して反射の計算を行わなくて良くなるため、かなり軽量に映り込みを表現できます。ただし弊害として、空間をカメラから見えている2次元空間(Screen Space)に圧縮してから計算を行っているため、カメラから見えない物体の厚さや距離感などの情報が失われ、下図に示すような存在しない映り込みが発生してしまいます。

これがやりたい反射
これはアーティファクト(こんなところに像は出ない)

この失敗反射(?)を防ぐため、SSRでは固定長の厚さ幅を設定し、映ってほしい面から、映る物体の表面がその厚さ幅以上離れていれば、その部分は映りこませない、というような対応を行います。この処理が正常に動作しているため、湖面に映りこまないはずのACを消そうとして、ACを切り抜いたような謎の残像が出ている、というわけですね。
なお、ブーストやレーザースライサーの光が映っている理由はよく分かりません。湖面の(フレネルの法則に基づく)鏡面反射は、交通標識などで起きる再帰性反射ではないので、手前で光ったものの反射が手前ではっきり見えるわけはありません。他の部分を見ても、単純な鏡面反射の表現にバグがあるとはさすがに思えないので、無理やり考えるとすれば、エフェクトを表現する何らかのオブジェクトの深度値・形状が考慮されておらず、SSRの映りこまない部分の除去処理に引っかかっていないのでSSRにのってしまっているなどでしょうか…?(よくわかりません)

チャージ近接エフェクト消失

これは割と重大な気がします。パイルバンカーについてはTwitterでも報告をちょっとだけ見かけました。やり方としては、チャージが存在する近接兵器と、なんでもいいのでハンガーに射撃兵器を装備し、射撃兵器を撃ってから即切り替え→チャージ近接 と入力するとエフェクトが消失するというものです。チャージが存在する近接兵器なら基本的になんでも発生します。アニメーションのフレーム遷移周りのバグは色んなゲームでよくありますよね…(SEKIROの1F水中歩きバグとか)

ビルボード

3Dゲームでは、遠景などある程度カメラが近づかないことが分かっている部分のエフェクトは、ビルボードと呼ばれる、常にカメラの方を向き続ける一枚板に描画することで処理の軽量化を図ることが多いです。これは、そうしたビルボードがたまたまカメラモードでバレてしまったものだと思われます。基本的には、ある程度離れてカメラの方を向き続ければバレることはありません。

レーザースライサーのエフェクトが、エレベーターで上へあがっている途中に、下に向かって吸われています。これに関しては2つ考察があって、1つはエフェクトの動きをリアルにするために、使用時の速度などの運動情報をエフェクトに反映させている処理で、なぜかエレベーターに乗っている時点ではACに上方向の速度があるとみなされてしまっている、もう一つは、単純にエフェクトがワールド座標系(ゲーム内の3次元空間)に対して適用されているため、ACを基準とした相対座標ではなく、そのエフェクトが発生した3次元空間での座標に取り残されている、というものです。つまりエレベーターの処理に問題があるのか、エフェクトの処理に問題があるのか、ということです。まあ真相は分かりませんし、そもそもこんな考察はゴミです。
ところで、こうした現象はELDEN RINGでも発生しています。(後述)

ガクガクスネイル

※ガクガクしてるのはスネイルではなく621です。

これはよく分かりません。シンプルな当たり判定の都合だと思います。見た目が面白いです。

ELDEN RING

書いておいて申し訳ないのですが、私はELDEN RINGに関しては全然詳しくありません。初手でメリナに会ってからストームヴィル城方向に気づかずに南へ突っ走り、迷い散らかして友人に助けを求めたりしました。なので、正直あんまりネタがありません。
あと、zip glitch(Any% RTAで使われるやばい瞬間移動バグ)や霊馬空中浮遊バグなどについては自分が遭遇したわけではないし難しいので書きません…
(zip glitchによるRTAは、是非一度見てみてください。ELDEN RINGのAny% RTAに必須なハードウェアがメトロノームだとは誰が予想できたでしょうか?)

木にのっかってしまうエグズキス

これはたまたま木にのっかってしまったことというよりも、落っこちたときの挙動のほうに面白さがあるように思います。フロムゲーあるあるとして、敵などが死亡した際に判定が切り替わって、一瞬地面にめり込んでしまってから戻ってくる、という挙動を見ることが多いような気がするのですが、それと似ています。FROM SOFTWARE様は最近(?)のゲームでは基本的にHavok社の物理エンジンを使用していますので、それが原因のような気も…
いわゆるキャンセル力(物体が、他の物体と接触してめり込んでしまうのを防ぐために、めり込んだ距離に比例して、その物体を押し戻す力、物理エンジンでよく用いられる概念)がはたらく時点が、物理エンジンの非同期更新か何かの影響でゲームロジックと一瞬だけずれてしまっているために発生しているのかなぁ…と思っています。(無根拠)

なんか色々起きてる

エブレフェールの、マレニアの手前で乗れるエレベーターの映像です。色々不思議です。

  1. エレベーターの作動ボタンが、飛び越えたはずなのに踏まれている

  2. 松明の炎がやたら落ちたり上がったりする(AC6と同じ?)

  3. エレベーターの床や褪せ人の背中など、影によくわからないノイズが生じている

  4. 一瞬霊灰が使用可能になる

1.に関しては、たぶんジャンプの存在しなかったダークソウルの実装を引き継いだために起きた現象なんじゃないかなという気がしています。(ほかのエレベーターでも起きます。)ボタンを踏む判定がジャンプに合わせて上下していないように思えます。

2.は、AC6のところで指摘した話です。仮にエレベーターで松明を掲げたとしても、こうはならないはずなので、AC6のところの話と同じ問題がありそうです。そのため、dantelionエンジン(FROM SOFTWARE様が使っているゲームエンジン・ライブラリ及びツール群であり、正式名称は存在しません。海外ニキたちが勝手に名付けた名前です。)に共通の問題のようです。

余談 : dantelionエンジン(仮称)については、読み込むアセットの形式が同じで単位も共通であるため、狭間の地にACを持ち込んだりアイスワームを連れ込んだりしているヤバい海外ニキたちもYouTubeにいます。(非推奨の改造行為であるため紹介はしません。)

3.は、レイトレーシングによってシャドウを計算している影響だと思われます。(レイトレーシング設定をOFFにすると発生しません。)おそらく時間的近傍の(影の)計算結果を利用してデノイズを行っているため、高速でエレベーターが移動してしまうと時間的相関が利用できなくなってノイズが出てしまっているようです。

4.は、腐敗した化身の部分のエリア判定が柱の中を除外できていないからだと思います。ちなみに連打してもエレベーター内では呼べませんでした。

混乱AI

配信中だったのでオーバーレイを消すために左側をちょっと切りました。これはなんなのでしょう…(何かあらぬものをターゲットにしてしまったのか、2人の相互作用でそれぞれ方向転換しようとして衝突し続けているのか…)

SEKIRO

実は、このゲームめちゃくちゃ好きです。フロムゲーの中で最も難しいともいわれるSEKIROですが、正直自分としてはアーマード・コアと同じレベルかそれ以上に最も時間を感じなかったフロムゲーです。特に源の宮は自分がプレイしたゲームの中で最も美しかったシーンとして、今でも心中の記憶にずっと残っています。そのため、謎シーンを発見した動画がめちゃくちゃあります。なので、Google Driveにその動画をまとめました。各項目については軽めに書いていこうと思います。

鳥居に引っかかる

落ち谷前の、白蛇の社前の鳥居は乗れません。そこを無理やり乗ろうとするとこんな挙動になります。判定が引っかかってしまい、落下中に壁に体を擦りつけているのと同じような扱いになっているようです。

ガクガク布

侍大将 河原田直盛のいる広場の隅にあるところです。ここで走ると、地面の判定があやふやなのでガクガクします。

登れない鼠

鼠のAIが、ジャンプする足場を見誤って賽の河原モードに突入しています。敵AIの実装がどういう風に移動可能な地形を認識しているのか気になります。(床の形状や座標と、挙動の1次近似で判断しているとすればこのような現象も納得できる…?)

登れない淤加美

こちらも似たような現象です。AIがこのジャンプの高さで登れると判断してしまっているようです。ジャンプの高さか地形を修正した際、AIへの反映を忘れたなどですかね?(全く分かりません)

無限断末魔と空中浮遊武士

これに関しては説明が必要です。拝涙してから葦名城が陥落したのち、水手曲輪に行くと七本槍と武士がいます。そこで、両名に発見されてから、この動画に映っている木まで移動すると、敵AIは落下する地形と判断して追いかけてこなくなります。ですが、ここで仕込み槍の引き込みをうまく当てると、彼らを無理やり木の上に引き込むことができます。そうするとAIの挙動が完全におかしくなり、沈黙するか、まれに攻撃を仕掛けてそのまま落下死します。この流れを、忍殺可能な程度に体幹を溜めてから行い、木の上で忍殺を仕掛けると、忍殺モーション中に敵が落下します。そのため、このようにモーションの終了判定がおかしくなってボイスが無限に再生され、七本槍は狼の刀を刺されていないまま落下したので死ねなくなってしまったというわけです。もう一人の武士は普通に落下し、城壁に引っかかっています。

これは引き込まれて沈黙したのち、自害する武士の例です。

空中遊泳

言わずと知れた、SEKIROで最も有名なバグです。手順としては、

  • 葦名城の城壁に判定のない場所があり、普通のジャンプでは届かないが、コヨーテジャンプ(落下し始める数Fでジャンプを入力するとジャンプ距離が延びる)をすると届いてしまう(これが動画開始時点)

  • ここから本城方向の堀に向かってジャンプすると、堀の水面がはみ出ている部分に届く

  • そこで「潜る」を実行すると泳ぎ状態になる

  • 捨て牢前の部分や本城の木など、判定のない部分から「表」側に出る

のように行います。なお、泳ぎ状態が不正であるという判定は行われているらしく、この状態で「表」側を普通にエリア移動しようとすると即死します。(タイトル画面に戻ってシーンを再読み込みするなどの回避テクニックはあります)

空中遊泳の応用テクニックに関する解説は他に譲るとして、ここでは葦名城や付近の建物の屋根が、遊泳時にすっぽ抜けて消えている点について考えてみます。
GPUはレンダリング時にカリングと呼ばれる処理を行います。これは、物体の裏側など、描画時に映らない場所のポリゴンに関する処理を省略することで、処理を軽くする技術です。これをCPU側でも行い、ゲームロジック的に見えないはずのポリゴンはそもそもGPUに送る描画命令すら省いてしまおうという処理があります。(CPUカリングなどと呼ばれます。)ここでは、狼のXZ座標(つまり地面にあたる平面上の座標)から、CPU側で予め見えないはずのポリゴンを省いてしまっているので、狼があり得ないY座標(高さ)の視点から葦名城を見ると、それらの部分が消えてしまっていると思われます。

余談 : ELDEN RINGが雑誌『CG WORLD』で特集された際、同様にXZ座標を用いてLOD(Level Of Detail、カメラからの距離に応じた3Dモデルのクオリティ切り替え処理)を計算しているという記述がありました。それを根拠に(何が?)、このような考察をしています。

無限暴れぬしの白蛇

ぬしの白蛇は、狼が目に楔丸をぶっ刺すと大暴れして襲い掛かってきますが、この時の行動フラグは狼がいる場所を基準に遷移しているようで、狼が逃げる道の手前付近に到達しないと、無限にのたうち回ります。(予め手前の鉤縄を使う木から右手の地面に触れないように草むらに着地し、神輿で忍殺後に崖下に飛び降りると、かなり手前に戻されるため、動画のような状況になります。)

謎足場判定

源の宮の水没した屋根は、大体どこでもこの現象が起きます。前述のガクガク布も同じ原因なのかは分かりませんが、おそらく、モデルを配置してからゲーム用シーンに変換する際、足場となる地面の判定を法線方向などから自動で行っているのではないかと思います。そのため、微妙な法線方向を持っているこのような面は判定がおかしくなってしまうのかなと思います。

残像淤加美

源の宮の内裏前で、2人の淤加美を出現させてから後ろに下がると、出現した淤加美たちのFPSが急に低下し、しばらくすると消失するという現象が発生します。しかも、再度近寄ると出現します。これは敵の処理コスト低減のため、前述のCPUカリングと同様に、見えない(はずの)場所に関しては処理を簡略化しているためだと思われます。ここではなぜか簡略化してよい場所として、普通に見えている、2人の淤加美がいる部分が指定されてしまったようです。

突きのみで完封される弦一郎(修正済)

このバグは修正されました。
心中の弦一郎のAIが、突きを受けると引いて弓を射る行動を繰り返してしまうため、これでハメることができた、というバグです。おそらくこういった行動は評価値ベース+ランダムで決まっていそうなので、収束が予測しづらく、デバッグが難しそうです…

SSR その2

もともとdantelionエンジン(仮称)のSSR周りに興味をもったのは、この現象が始まりでした。手前の木の枝のようなアーティファクトが水面に映りこんでいます。源の宮には大規模な水面があるため、AC6のそれと同じ条件を満たしてしまったようです。
これも、AC6のものと原理が同じです。手前の木は水面に映りこむはずはないので、消しています。逆にその消した結果が、水面に「浮いて」しまっているということですね。うまい! (死)

AI沈黙

仙峰寺最強の彼らですが、なぜこうなったのかよく分かりません。たまたま3人ともおかしくなっているので、確率的にも非常にレアな現象かもしれません。

満員電車あるある

源の宮の鬼仏「大桜」の手前ですが、一番前の淤加美が沈黙してしまったせいで、後ろの淤加美たちが困っています。こういう場合は、自分が降りる駅でなくともいったん降りて、後ろの人たちを通してあげるのが満員電車のマナーです。

おわりに

以上です。多すぎて疲れましたが、これだけではありません。(HDDの奥底のバックアップの中にまだ多分あるのですが、発掘が面倒なのでもうやめます。どんだけSEKIROやっとったんやお前)
これを機にフロムゲーに興味を持ってほしい、とは口が裂けても言えない内容ですが、ゲームのバグに遭遇した際、原因を考察してTwitterなどで他の人と議論してみる、というのは結構面白いと思っているので、ぜひやりましょう。


この記事が気に入ったらサポートをしてみませんか?