ラベル Autosplitter の投稿を表示しています。 すべての投稿を表示
ラベル Autosplitter の投稿を表示しています。 すべての投稿を表示

(改訂版)Unity 製ゲームの場合に使用できる、Autosplitter 用の asl で使用したいメモリアドレスの特定方法

asl で利用するためのゲーム内の値を asl で監視するためには、Cheat Engine などのツールを使ってその値が書き込まれているメモリアドレスのポインタパスを特定する必要があります。

値を検索してポインタスキャンをするのがポインタパス特定の基本的な方法ですが、Unity 製ゲームの場合は構造解析機能を利用することで効率よくポインタパスの特定を行うことができます。

もくじ

  1. ご注意
  2. 関連リンク
  3. 全体の流れ
  4. 手順ごとの説明
    1. 1. 欲しい変数を含むクラスの探索
    2. 2. クラスのアドレスを特定
    3. 3. クラス内の変数をポインタスキャン
    4. 4. クラス内の変数のポインタパスを特定
    5. 5. クラスのポインタパスの特定
    6. 6. 欲しい変数のポインタパスを特定
    7. static な変数のポインタパスを特定したい場合

Livesplit用の自作Autosplitter用スクリプト

私が作った、Livesplit 用の Autosplitter 用スクリプトファイル(.asl ファイル)の一覧です

ご注意

  • 常識の範囲であれば、私の Autosplitter 一覧ページへのリンク、Autosplitter の再配布は制限いたしません。

    制作者を騙ったり、私が無料で公開しているものを有料で配布とかしないでね、くらいのかなり緩い制限です。

  • git、Github 管理の Autosplitter は Livesplit の Splits Editor から、Google Drive 管理のものは Layout Editor から利用します。

  • 私は SRC の外にいる人間なので SRC 内でのアクションは致しません。

    SRC 内で Autosplitter の情報が共有されることが公平だと思われた場合は、Guides や Resources を編集できる方、あるいは Forum へ投稿できる方が紹介してくださると助かります。

タイムの精査を推奨

ルール通りのタイミングでのタイマー操作は保証していないため、タイムの精査を推奨しています。

このAutosplitterは60Hzでゲームの内部値を監視することでタイマー操作タイミングを判定しています。
ゲームの内部値が変わったタイミングとルール上のスタートand orストップのタイミングとが厳密に一致するとは限らないため、ルール通りのタイミングでタイマー操作することは保証できません。

一覧

  1. 14種類のマインスイーパーバリエーション
  2. Beltmatic
  3. Bomb Chicken
  4. Donut Dodo
  5. Linelight
  6. Racing Pitch
  7. Typoman
  8. Underparty
  9. いるかにうろこがないわけ
  10. 今日は左と上の数字を見てマス目を塗りつぶすアレを無限にやりたい!
  11. 高速廻転寿司
  12. スペルトナエル
  13. スリップゾーンがたくさん置いてあって2段ジャンプと空中ダッシュができてパラメータの違う車種の選択要素があるサメトラックのレースゲーム
  14. スリップダメージが主な攻撃で弾幕がすごくてゲーム内タイム計測ができる横スクロールアクションゲーム
  15. ネタバレが激しすぎるRPG
  16. 溶鉄のマルフーシャ

  1. TETRIS THE GRAND MASTER 3 -Terror Instinct-

  1. 異種姦ソリティア
  2. ウィッチパズリズム
  3. エンプレスカード
  4. 逆境強化のスージー
  5. バグと魔法使い

Signature scanで欲しい値があるメモリアドレスを見つける方法

Signature scan はゲームプログラムの特定のバイナリ値の並びを使ってメモリ検索を行うことで、そのプログラムが書き込んているアドレスを特定する方法です
 Signature は Array of Bite、AOB などと書かれていることもあります
Sig scanの概要

もくじ

  1. 概要
    1. Signature scan を使用するメリット
  2. 作業手順
    1. 1. 欲しいアドレスへのポインタを含む命令文を探す
    2. 2. Signature の作成
    3. 3. Sig scan に対応した asl の記述

Unity 製ゲームの場合に使用できる、Autosplitter 用の asl で使用したいメモリアドレスの特定方法

お知らせ

この記事の改訂版を公開しました。

(改訂版)Unity 製ゲームの場合に使用できる、Autosplitter 用の asl で使用したいメモリアドレスの特定方法



Cheat Engine を使って asl ファイルで利用するための静的アドレスを特定する場合、一つの値に的を絞って値を検索して特定する方法があります
 が、その場合は欲しい値が存在している保証がなく、また、欲しい値の数だけ検索を繰り返す必要があります

Unity 製ゲームの場合は mono の分析機能を利用することで、欲しい値を格納しているフィールドの有無を知ることができ、さらにはクラス単位でフィールドの値を格納している静的アドレスを特定することができます

この記事はメモリアドレスを特定する方法のみの記事です
asl の全体的な説明や基本的な作り方などをまとめた記事もありますので、よろしければこちらもご覧ください

また、構造解析機能を使ってメモリアドレスを調べる部分の実演をした動画を公開しておりますので、よろしければこちらも参考としてご覧ください

手順
  1. 1. 欲しいフィールドを含むクラスの探索
  2. 2. クラス内のフィールドの動的アドレスの特定
  3. 3. フィールドのポインタ検索
  4. 4. クラスの静的アドレスの特定
  5. 5. 欲しいフィールドの静的アドレスを決定