EDF5アイテム自動回収MOD

※(2023/12/25)リンク先が死んでたので再アップしました。いつからだろう、申し訳ないです。

 さて最近はCheatEngineを弄ってました。
 チートと書くと何なのだけれど、目的としてはプログラム修正やそのための解析、いわゆるリバースエンジニアリングというやつですね。そう書くと少しは様になるかなって(笑)。
 実際これは応用が利きそうだなと考えて、しばらくドキュメントと睨めっこしてました。
 IDA-ProとかGhidraとかも覗きつつ、最近のツールは凄いなぁというか。無論自分はアセンブラの基礎概念を分かっている程度の身なので、それらを活用して今すぐどうこう出来る程の実力も経験も持ち合わせてはいないのですが。
 CheatEngineはその点、データとコードの関係性の解析に分かり易く特化したツールという感じで、そういう解析を取っ掛かりにデバッガでbreakしつつコードを追っていくくらいなら何とか。
 如何せんGhidraなんかはデバッガも持たず静的解析を目的としたツールのようで。それというのもマルウェアの解析等を目的に、極力プログラムを動作させずに済ませるという開発思想だとのこと参考。それで一から手繰っていくのだからプロは凄いですね、と思いつつ。

 そんな訳でですね、先日も話題にしたEDFの「アイテム自動回収MOD」
 EDF5には4.1のようなズバリのMODはざっくり探しても見付からず、それで諦められるような性分でもないというかこの件だけは出来ることなら譲りたくはないという思いが強いので、目の前に自分で出来るツールがあるならやってみますよと。

 そしたら割とあっさり出来ました。
 取り敢えずここに置いておきます。CheatEngine用のCTファイルです。
※このサイトは駄文が多いので(苦笑)、もしURL参照される場合はアップローダーの直リンクを持って行って貰って構わないです。(とか言って差し替えてたら世話ないですが、まぁ今度は問題ない筈、、)

[Earth Defense Forces 5: Automatically collect crates (地球防衛軍5: アイテム自動回収)]
*raw file (latest)
 EDF5_Autocollect_crates.CT    (mirror)
*zip (history)
 EDF5_Autocollect_crates_20240830.zip    (mirror)
 EDF5_Autocollect_crates_20210522.zip    (mirror)
※関連:EDF6版はこちら

 基本的な使い方は別途CheatEngineの情報を探して貰えればと思いますが、この辺とか)
 簡単に書くと、CheatEngineをインストールしてCTファイルをダブルクリックで起動するか、起動したexeのリスト欄にCTファイルをドロップ、Open ProcessでEDF5.exeを当てて、下部リストのチェックリストでいずれか使いたい物を有効化して下さい。

 尚、EDF4.1版にあったHealth回収はどう考えてもいらないよねということで作りませんでした。「Armor+Weapon」だけでもいいんだけど、まぁWeaponだけ拾う等の縛りプレイにも使えるかもしれませんということで個別のも。

※追記(2021/05/22):一点気になっていた箇所を修正したので差し替え。
 参考元の4.1版を尊重していたんですが、距離判定をひっくり返しているだけなので逆に近場だと判定をすり抜けてしまい、万一間近にアイテム箱が出ると逆に取らない実装になってました。事実上問題ないのかなと思ってたけど、ビークルとかは取得範囲が広がるので気になる場合が出るかもと、無条件で取るようにコードを改めました。多分これで問題ない筈。
※追記(2024/08/30):EDF6同様にOpen processボタンを追加しておきました。


 以下、余談。

 上記は、EDF5のチートファイルEDF4.1版を参考にさせて貰いました。
 5で既に解析されてる部分(取得範囲変更)のコードを取っ掛かりに辿ったらあっさりと4.1と似たようなコードが出てきて、構造体オフセットも似たような物だったのでそれを弄っておしまい。ここは先人の手間にも感謝したい。
 しかし要望はあるけど出来てなかったのは、てっきり仕組みが変わって解析が面倒だったのかとも思ったけれど、ただ「やってない」というだけの結論でした(苦笑)。
 取得範囲最大化のOn/Offを使えば回復アイテムも瞬間的に回収できるのを “quick heal” と表現している辺り、何のかんのでcheaterはcheaterの観点でしかなかったのかなと。

 ただ自分がやりたいのはあくまで「アイテム回収という苦行からの脱却」、これだけ。
 アイテム拾いは喩えるならマリオのコイン拾いのような原始的な遊びを意識しているのかもしれないけれど、如何せんプレイ中に何千何万という数に及ぶことを考えるとあまりにも度の過ぎた反復作業。
 それよりもこのゲームはもっと素直にTPS部分にこそ集中させるべきだし、それだけで十分にこのゲームの面白さは成り立っていると思う。それどころか敵を一二匹残してアイテムを回収して回る時間は「虚無」と揶揄されるほど、ゲームのネックになっているとしか思えない。
 全てを拾わなくていい稼ぎステージで回ればいいとも言われるけれど、本質はそこではなくてそもそも無駄に歩き回らされる点こそを問題視している訳で。「敵を倒して報酬を得る」「それを都度拾いに行く」、この後者は無くても良いでしょう?という話。

 勿論、言葉で幾ら論じたところで押し問答にしかならないのは分かっていて、
 それよりも「論より証拠」でやってみて欲しいよね、これで同じ考えを抱く人が増えるといいなぁと、そういう思いです。

 ただまぁこの話、「改造ツール」というのはどうしてもセンシティブな話題になりがちで。
 傍目には同じチートツールである以上「他に何をやってるか分かったものじゃない」と思われるのも無理はない。
 だからこそこんな物を使わなくても済むよう、公式で何とかして欲しいところなんですけどね。

 作ったからには折角だから「同じ疑問を抱いていた人には使って欲しい」とは思う訳ですが、こういう話題って何処に投下すればいいものなのだろうかと考えあぐねているところ。

 国内ユーザは海外のcheaterに辟易としてるし、どちらかと言えばその海外のチートフォーラムこそに行くべきなんだろうけども。
 でも英語なんて技術文書を頑張って読むくらいの事しか出来ない身なので、ただでさえこれまで覗いたことも無かったような掲示板では空気感も分からず躊躇してしまうチキンです、はい。

 別に自分は誰が作ったとかはどうでもいいんで(参考元もあるし)、これを放流して拡散されればいいなぁくらいにしか思ってなくて。
 ただこの「煩わしさからの解放感」は出来ることなら広めたい。
 どうしたものでしょうかねと。

 ただ自分は何も考えず「わーい、できたー」ってやりたいだけなんですけどね。
 難しいなぁと。