Skip to content

Snapshot ja JP

bbfox0703 edited this page Jul 10, 2026 · 1 revision

🌐 English · 繁體中文 · 日本語

Snapshot

実験的タブ(デフォルトでオフ)。

Snapshot タブは、(スコープ内の)すべてのオブジェクトのすべての数値 UPROPERTY を永続的なディスク上の snapshot にキャプチャします。その後、2 つの snapshot を diff して何が変わったかを見たり、1 つの snapshot 上で複数の値を group-match したりできます — 「どのオブジェクトがこれらの数字すべてを保持しているか?」という定番の探索を、ライブメモリではなくキャプチャ済みのコーパス上で行うものです。Snapshot は SPC QueryClass Pivot タブにも供給されます。

snapshot は完全な数値ダンプなので、大きなゲームでは巨大になりえます — 下のキャプチャコントロールはそれを抑えるためにあります。


snapshot をキャプチャする

Capture snapshot パネル(折りたたみ可能)には設定が 1 列並びます:

コントロール 動作
Scope どの数値フィールドのを含めるか。
Type Scope の上にかける型ファミリの絞り込み:All numericIntegers only(Int8/16/32/64 ±、浮動小数点を除外)、または Floats only(Float/Double、整数を除外)。設計上ロッシー — もう一方の型ファミリを戻すには再キャプチャ。浮動小数点 ≈ HP/MP/座標;整数 ≈ カウント/フラグ/ID。
Game objects only 非ゲーム(エンジン/transient)オブジェクトをスキップ。
Auto detect Engine/System noise デフォルトでオン。 純粋なエンジン/システムクラス(UI ウィジェット、テクスチャ、サウンド、パーティクル/Niagara、anim インスタンス、/Script エンジンパッケージ)をソースでスキップするので、キャプチャが速く DB が小さくなります。ゲームプレイのガードレールが Actor / Pawn / Character / ActorComponent / Controller / PlayerState のいずれかのクラスを強制的に保持します — なのでプレイヤー Pawn の X/Y/Z と HP/MP(コンポーネントや GAS AttributeSet 内)は決して落とされません。ソースレベルのスキップは取り消し不可(オフにして再キャプチャすればクラスが戻ります)。キャプチャ後の Noise picker とは別物です。
Native-C (raw) オプトイン、デフォルトでオフ。 リフレクションされた UPROPERTY フィールドに加えて、各オブジェクトのアンマネージドホール(非 UPROPERTY の生バイト)を合成 <raw@0xNN> フィールドとしてキャプチャし、Guess-What ヒューリスティックで解釈して数値型に正規化します。SPC Query / Class Pivot が リフレクションでは見えないネイティブ値(HP/MP)を追跡できるようにします。遅く、大きくなります;raw フィールドはオフセットで snapshot 間を join します。
Per-game quota キャプチャがクォータを超えると、このゲームの最も古い snapshot が自動的に破棄されます(キャプチャ完了後に)。
Max size オプトインのキャプチャ内上限。 ライブ DB がこれを超えると、キャプチャは早期に停止して部分 snapshot を保持します(スキャン済みの先頭 N オブジェクト)。クォータとは異なり — クォータはキャプチャ古い snapshot 全体を退避するだけ — これは単一の過大なキャプチャを制限します。大きなゲームでは Estimate size と併用してください。Off で無効化。
Label 任意の名前(デフォルトはタイムスタンプ)。

2 つのボタンで仕上げます:

  • Estimate size — プリフライトチェック:現在のオプションでオブジェクトの小さなサンプルを走査し、ディスクコストをモデル化して全オブジェクト数へ外挿します。DB を書き込みません。数 GB のキャプチャに踏み切る前に ~X GB の go/no-go を示します。
  • Capture Snapshot — キャプチャを実行。キャプチャ(または見積もり)実行中は Cancel が現れます。

保存された snapshot の管理

Saved snapshots リストはこのゲームの各キャプチャを列 Label · Captured (UTC) · Objects · Fields · Est. Size · Scope · UE で表示します。Used: バーがクォータの消費量を示します。操作:

  • Refresh — リストを再読み込み。
  • Delete Selected / Delete All — snapshot を削除(Delete All は DB を truncate + VACUUM してディスクを回収;取り消し不可)。
  • Open DB folder — このゲームの snapshots.<pe_hash>.db をファイルブラウザで表示。

分析:Diff vs. Group

Mode トグルが下半分を DiffGroup (Multiple Values) の間で切り替えます。

Diff モード — 2 つの snapshot 間で何が変わったか

OldNew の snapshot を選んで Run Diff すると、値が変わったすべてのフィールドを一覧します。この diff は常に deep です — ネストされた配列/struct-array 要素の変化(例:SupportActionGauge[3]Array[N] として表示)を含みます;ここに Deep トグルは不要です。

Diff はセッション内のオブジェクト同一性(同じゲーム起動)でフィールドを join するので、Old と New は同じプレイセッションのものであるべきです。

Class / Field / Object / Change(方向)フィルタ、Filter all ボックス(任意の列に一致)、および Old / New 数値レンジ(Apply range / Reset)で結果を絞ります。結果の列:Δ · Class · Object · Field · Old · New。各行は LiveLive Walker で開く)、🌍(Locate in GWorld)、(Locate in GameEngine)、Addr(コピー)を提供します。Locate はセッション内の diff でのみ機能します。

Group モード — 複数の値を保持するオブジェクト

1 つの snapshot 全体で、異なる数値オフセットに 2〜4 個の値すべてを保持するオブジェクトを見つけます — Value Search の Group Scan の snapshot 版です。

  • 検索する Snapshot を選び、FindClear でリセット)。
  • + value / − value — 値の行を追加・削除(2〜4)。各行に幅 scope、述語(predicate)Between 述語の上限 to も)があります。
  • Compare with (Mode B) — 比較対象の古い snapshot を選びます。これは相対述語 Changed / Unchanged / Increased / Decreased を有効にします — 例:Current HP が減少し Max HP が変化しなかったオブジェクトを見つける。絶対的な単一 snapshot 一致には空のままに。( でクリア。)
  • Deep (nested containers) — ネストされたコンテナ/struct-array 要素内の値も一致させます(例:SaveSlotList[1]…Tunes[2])。所有オブジェクトのブロックに折り込まれます。オフ = 直接フィールドのみ(速く、ノイズが少ない)。
  • Rounding — 小数の float/double ターゲットが一致前にどう縮約されるか。

結果は**マスター詳細(master-detail)**です:一致した各オブジェクトごとに 1 行(Class · Object · Matched values);行を展開すると slot ごとの詳細が見られます。オブジェクト行は LiveLive Walker で開く)を提供し、Addr · 🌍 · ⚙ は展開された slot ごとの詳細行にあります。

Group はしばしば Unchanged を必要とします。 定番の「current HP が下がり max HP は変わらない」パターンは、一方の slot が Decreased かつもう一方が Unchanged のときだけ正しいオブジェクトを分離できます — なので Compare with snapshot を選んで相対述語を使ってください。

Noise picker(キャプチャ後、Diff モードのみ)

Diff 結果の下には Noise pickerSPC Query タブと同じ形)があり、Diff モードでのみ表示されます(Group モードが有効な間は非表示):これはキャプチャ完成した snapshot をフィルタします(ソースでスキップする Auto detect Engine/System noise とは対照的)。Apply は選択したクラスを denylist に押し込みます。


関連ページ

  • SPC Query複数の snapshot にまたがって値を照会(Diff の複数 snapshot 後継)。
  • Class Pivot — クラスのフィールドを snapshot 間でピボットして、そのステータスレイアウトを見つける。
  • Value Search — Group モードのライブメモリ版。
  • Detect Stats — snapshot の「値が下がった」シグナルを使ってステータス候補をスコアリング。
  • Live WalkerLive / 🌍 / の着地先。

Clone this wiki locally