-
Notifications
You must be signed in to change notification settings - Fork 6
Class Pivot ja JP
⚗ 実験的タブ(デフォルトでオフ)。キャプチャ済みの snapshot(またはライブの DataTable)上で動作します。
Class Pivot タブは、ゲームデータに対する**表計算スタイルのピボット(pivot)**です。1 つのクラスのインスタンスを key でグループ化し(ItemID のような key フィールドの値、またはオブジェクト同一性で)、**グループごとに値フィールドを射影(project)**します — なので、各インベントリアイテムを ItemID と その Count で、あるいは各敵をチームとそのステータスで一目で見られます。
同じグループ内で値が異なる場合は衝突(collision) ⟨N: v1, v2, +M⟩ として表示されます。snapshot キャプチャはすべて数値なので、key は int/enum の ID です。
🔍 Suggest targets — find what changed パネルは自動的な入口です:
- 分離したいゲーム内アクション(金を使う、ダメージを受ける、…)の前後で 2〜4 個の snapshot をキャプチャ — ピッカーでそれらにチェックを入れます(古い → 新しい = Before … After)。
- 🔍 Discover が動いた (class, property) ターゲットをランク付けします — 各々がどれだけゲーム状態らしいか(名前付きフィールド、具体的な変化、低ノイズ)でスコアリング。
- 行を選んで Use → (pivot this) で下のピボットに読み込みます。クラス/key の推測は不要です。
Discover の結果の列:Class · Property · Changed · Δ · Category · Shape · Sample (oldest → newest) · Score。
仕組みと制限:
- アクションの前後で 2〜4 個の snapshot をキャプチャ(Before … After)。
- 3〜4 個を使って、一度きりの変化を一定の毎フレームノイズ(回転、タイマー、位置)から分離します;2 個だけだと、どちらも単に「changed」に見えます。
- 動いたフィールドのみが現れます — キャプチャ間で一度も変わらなかった値は表示されません。
- ゲーム再起動をまたぐと、安定した同一性で再出現するオブジェクト(GameInstance / PlayerState / Pawn / コンポーネント / GAS)のみが確実に再接合します;ランダムにスポーンされる actor はできない場合があります。
- スキャンは snapshot の数値フィールド上でサーバーサイドで実行されます;大きなキャプチャでは数秒かかることがあります(キャンセル可能)。
⚙ Pivot target セクション(折りたたみ可能)が何をピボットするかを選びます。Source を選択:
| Source | 何をピボットするか | Key |
|---|---|---|
| Snapshot | キャプチャ済み snapshot 内のあるクラスのインスタンス。 | key フィールド値、またはオブジェクト同一性(Group by 参照)。 |
| Snapshot Array | キャプチャ済みの struct array(例:Cargo)を、その inner-key 値で。 |
Key = inner-key 値 — 並べ替え・セッションに不変。 |
| DataTable | ライブゲームの DataTable(🔄 Find DataTables で一覧)。 | Key = RowName — ゼロ設定、探索不要。 |
Snapshot ソースでは、Snapshot を選び Class リストを絞ります(入力して絞り、選択)。それから Run Pivot。基になるオブジェクトに到達するには、グループを選んで Open in Live Walker / Copy Address(グループの代表インスタンスを Cheat Engine に渡す)、または 🌍 / ⚙ で GWorld / GameEngine 内に Locate します。
単純な Snapshot ソースでは、Group by がインスタンスをどう key 付けするかを選びます(Snapshot Array と DataTable ソースには Group by はなく、それぞれ常に inner-key 値/RowName で key 付けします):
-
Identity (object path) — スポーン正規化された兄弟(
BP_Enemy_C_0/_1/ …)を一緒にグループ化。「このクラスのすべてのインスタンス」に適しています。 -
Field — Key field 値でグループ化。オブジェクトパスが同一なtransient オブジェクト(例:
//Engine/Transient/Item)には、これが正しい選択です — Identity モードはそれらをすべて 1 グループに併合しますが、ItemIDのような Field key は分けたままにします。
どの列が重要かにチェックを入れます:
- Value — このフィールドの値をグループごとに射影(ピボットの出力列)。
-
Key — このフィールドをグループ key に追加。複数チェックすると**複合 key(composite key)**になります — 例:
(Team · Slot)は組み合わせでグループ化(Field モードのみ)。
ピッカーは各フィールドの Type · Distinct · Instances · Key score も表示します — Key score はどのフィールドが良い key かを示唆します(高カーディナリティで ID 形状のフィールドが最高スコア)。
グループごとに 1 行、列は Count · Key · Projected values、そして filter results… ボックス。グループのメンバーが射影値で食い違う場合は衝突形式 ⟨N: v1, v2, +M⟩ を表示します。これ自体がシグナルです(グループ内で一定だがグループ間で変化するフィールドは、そのグループの同一性/ステータスである可能性が高い)。
Hide selected class from picker でクラスリストを絞れます;隠されたクラスは Hidden classes (Pivot only) の下に削除可能な chip として現れます。この denylist は Pivot タブに限定されます。
- Snapshot — Class Pivot(と Discover)が動作する snapshot をキャプチャ。
- SPC Query — 同じ snapshot の方向チェーンビュー(フィールドごと、N snapshot にわたって)。
- Detect Stats — より速く、精度は劣る「どのフィールドが HP/MP/Gold か」推測器。
- Live Walker — Open in Live Walker / 🌍 / ⚙ の着地先。