ゼノブレイドDE アーツ継承の仕組み

ゼノブレイドDE アーツ継承の仕組み

アーツ継承がどのような仕組みで起こっているのかを調べたので、分かっている範囲で書いておきます。

 

アーツ継承とは

この説明は当時(2020年7月頃)からもう3回ぐらい書いている気がするので簡単に説明すると、

アーツ継承は他のキャラクターのアーツをセット・使用できるようになるテクニックです。

それも純粋に同じアーツを使用できるのではなく、異なるモーションで威力や効果だけが継承されたりするので、バカ強いアーツが生まれてタイムアタックで大活躍することがありました。

 

そしてこのテクニックを使う前提として、DE版で追加されたタイムアタック用のプリセットキャラをストーリーメンバーと入れ替える(自分が育てたキャラクターは消滅する=最初から居なかったがな!になる)必要があったため、

しっかり原作を再現しているということで非常に楽しいバグとなっておりました。

 

その後は色々研究が進むのですが、特定のアーツを狙って付けるところまではいかず、運に任せてひたすら付け直しの作業をするしかありませんでした。

 

 

アーツ継承の仕組み

アーツ継承が起こった要因

まずアーツ継承の鍵となるのは習得済みアーツの一覧が空であることです。

これは本来は起こり得ないことなのですが、タイムアタック用のプリセットキャラを持ち出すことで習得済みアーツの一覧を空にできます。

そして空になった状態だと都合が悪いのでデバッグモードだとそこでゲームがエラーを出して止まる設計になっています。

言い換えれば、リリース版=私たちがプレイする実機ではそこで止まらないようになっていて、アーツ継承が起こり得る要因となっています。

そもそもタイムアタックが正常に始まらなかったり、プリセットキャラを持ち出せたりすることが根本にあるわけですが、個人的にはこのおかしな値を素通りさせている部分が神が差し伸べた手だと思いました。

まぁ単なるデバッグ用のチェックなだけに、ガラテアには呆れられそうですが。

 

アーツ選択時に起こっていること

アーツリストが空のキャラクターで十字キーの下を押すか、ZR(レベルアップ画面)を押すと本来は覚えることができないアーツが出現したりする部分について。

ここで何が起こっているのかというのを調べたところ、ゲームでは変動しうる特定のアドレスの2byteを見てアーツ(ID)を判別していました。(アドレスはデータが保存されているメモリ内の住所のこと)

2byteは「00 00」から「FF FF」までなのでuint16で0~65535の範囲です。

しかしデータとして存在するアーツは235種類しかないので、有効になるのは235/65536です。

通常プレイでは1-235以外の値が選ばれることはないので何の問題もないのですが、アーツ継承においてはその2byteに何が入っているか分からない≒ランダムなので、抽選として考えた場合何らかのアーツに遭遇する確率は0.35%ということになります。

 

アーツIDになる2byteの決まり方

これはアーツメニューに入った直後から、キャラクターを変更する度に初期化が行われ、習得済みアーツのIDが該当のアドレスを埋めていきます。

しかし習得済みアーツがないキャラクターの場合、これがスキップされて該当するアドレスは上書きされず、更新前の値が残っている状態になります。

なので正常なキャラから空のキャラに画面を移すと、正常なキャラの一番上アーツが選択できるということでした。

逆に正常なキャラを通過させずにいきなりリストが空のキャラを選んだ場合は、アーツメニューに入る前に残っていた値が使わて、本来はセットできないアーツが登場したというわけです。

 

例えるなら机がアーツメニューで、机の上に乗っているものがアーツです。

正常なものはきちんと整っていて実際に使えるものが特定の場所に並んでいます。

異常なものは散らかっていて実際に使えないものが大量に並んでいたりします。しかも使いたいものでも特定の場所に置かれている必要があるので、大体はハズレになります。

 

特定のアーツを狙うには

難しい話なのでメモリをビルに例えると、Switchはゲームを起動するたびに机が置かれる場所をフロアのような区切られた大きな範囲を移動する仕組みになっています。

チート対策だったりデータ読み込みの効率を上げるためだったり理由はあるようですが、とにかく再起動するとアドレスは大きく変わるということです。

幸いなことにゼノブレイドDEではロードだけならこの移動は起こらず、初期化されるだけなのでロード直後はフロアに机もなにもない空の状態になっています。

そこから、メニュー画面を開くとフロア内に一定の区画が設けられます。

メニューを閉じるまではその区画が変動することはなく、その範囲内に装備メニューやアーツメニューなどが作れられます。

 

一定の範囲が固定されるなら、望んだ未来が掴めるように感じた人もいるかもしれませんが、困ったことにDEのメニュー画面では3Dモデルが動くようになっているので、その範囲はモデルが動いている間は常に汚染さていきます。

 

この予測できない汚染がなければ、狙った値で満遍なくメモリを汚染することで特定のアーツが出現する確率を上げることもできたはずです。

例えばファイナルクロスならIDが143なので、143という数字を持つアイテムやらなんやらを何度もメモリに読み込ませることで、ファイナルクロスを大量にばら撒くことができたわけです。

 

同じアーツが連続して出ることがよくあった

これはアーツメニューの開閉時にアーツメニュー用のアドレス(机の場所)が変わらなかったことが原因です。

Bボタンを2回押してメインメニューを閉じればほぼ確実に変わるはずです。

 

 

ということで以上です。今回の研究では大きな進展はなかったわけですが、ある程度の仕組みが分かったのは良かったですかね。

GWもたっぷり使いましたが乱数調整までいくにはまだまだギジュツが足りないも。

 

_人人人人人人人人人人人人人人人人人人人_
> コメント0件!書き込みのチャンス! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

コメントを残す

メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。URLを含むコメントは承認待ちになります。