-
Notifications
You must be signed in to change notification settings - Fork 6
Related
The Related tab shows the objects directly connected to a seed object via fixed forward-owned relationships: its Class, Outer, Controller↔Pawn link, and owned components / GAS AbilitySystemComponent / AttributeSet. This is a helper feature, not an exhaustive reference graph — it walks only the relationships the panel explicitly collects and does NOT find every reverse reference.
- You have an actor/object's address (from [Instances], [Value-Search], [Live-Walker], or CE), and want to quickly jump to related objects like its components, GAS AttributeSet, or Controller/Pawn counterpart.
- You want to auto-detect the currently-targeted enemy or NPC and inspect its related objects without knowing its class name.
- When NOT to use it: For exhaustive "who references this object" lookups, use Find Refs in [Live-Walker]; for value-based discovery, use [Value-Search] or [Instances]; for full graph traversal, use [Live-Walker] manual navigation.
Enter a UObject address (hex, e.g. 0x7FF6AA000000) in the Address field, or click a 🔗 Related button from [Instances], [Value-Search], or [Live-Walker] to hand off the address automatically.
Address Hint: "UObject / actor address (hex) — or hand off from another tab"
Click Load (or press Enter in the address field) to scan the seed object's relationships.
The panel displays:
- Current class name (teal text, sourced from the "Self" row once loaded)
- A progress bar while scanning
- Status text (e.g. "5 related object(s).")
Click 🎯 Detect target to have the DLL guess which actor the player is currently targeting. The heuristic:
- Follows the player chain (GWorld → LocalPlayer → PlayerController → Pawn)
- Scores candidates by positive keywords ("Enemy", "Target", "Creature"), is-Actor/is-Pawn structural gates, and negative keywords ("ViewTarget", "Owner", "Camera")
- Returns the top candidate if its score clearly wins (≥20 points above the runner-up) with
resolved: true - Shows weaker candidates as "greyed guesses" the user can click on if the auto-pick is wrong
The candidates appear in a listbox below the Load button (best-first). Clicking a candidate loads it into the grid below.
Tooltip: "Auto-detect the actor the player is currently targeting (GWorld → PlayerController → Pawn → target field) and load its related objects — no class-name guessing"
The table shows one row per related object:
| Column | Description |
|---|---|
| Relation | Type of relationship: Self, Class, Outer, Controller, Pawn, AbilitySystem (ASC), AttributeSet, Owned Component, Owned Object
|
| Object | Display label (Name : ClassName, or whichever is non-empty) |
| Field | Field/path on the parent object that points here (empty for Self/Class/Outer; shows offset hint when known, e.g. AbilitySystem @ 0x2A8) |
| Address | Hex address of this object |
| Action buttons (far right) | Five quick-access buttons per row (see Row Actions below) |
- Self — The seed object itself (the starting point)
- Class — The object's UClass definition
- Outer — The object's Outer (container/owner in the UE hierarchy)
- Controller — For Pawns: the controlling PlayerController / AIController
- Pawn — For Controllers: the controlled Pawn
- AbilitySystem (ASC) — Owned AbilitySystemComponent (GAS games only); reached at depth 1
- AttributeSet — Attributes attached to the ASC; reached at depth 2–3 (in case the ASC is nested behind a stats component)
- Owned Component — Any UActorComponent directly owned by the seed (depth 1)
- Owned Object — Other owned sub-objects discovered by the bounded walk (depth 1–3)
The panel walks up to depth 3 using an Outer-chain ownership test — only sub-objects whose Outer chain traces back to the seed are included.
Each row has five buttons (left to right):
| Button | Tooltip / Action |
|---|---|
| 🌍 (Locate in GWorld) | Find the shortest pointer path from GWorld down to this object and show it in [Live-Walker]. Useful for world actors (pawns, enemies, items). |
| ⚙ (Locate in GameEngine) | Find the shortest pointer path from the live UGameEngine down to this object. Reaches engine-layer objects (GameInstance, LocalPlayer, engine subsystems) that the GWorld graph cannot. For non-world objects, use this instead of Locate in GWorld. |
| Live (Open in Live Walker) | Jump directly to this object in the [Live-Walker] tab for field-by-field inspection and drill-down. |
| finder (Find Instances) | Open the [Instances] tab and search for all live instances of this object's class. |
| Addr (Copy Address) | Copy this object's address to the clipboard and show a status message. |
Click any column header (Relation, Object, Address) to sort by that column; click again to reverse order. The Field column cannot be sorted (it is variable-length metadata).
- [Instances]: Select a row, click the 🔗 Related button → the object's address hands off to the Related tab, which loads automatically.
- [Value-Search]: On a hit row, click the 🔗 Related button → the owning object (not the value's field) is loaded.
- [Live-Walker]: Select a pointer or object row, click the 🔗 Related button → the target object is loaded.
- Locate in GWorld / GameEngine: Results appear in [Live-Walker] as a breadcrumb path (most recent when clicked).
- Open in Live Walker: Switches to the [Live-Walker] tab and shows the object.
- Find Instances: Switches to the [Instances] tab with the class name pre-filled and runs the search.
- Copy Address: The address is copied to the clipboard; status text confirms the action.
This panel is intentionally limited to forward-owned relationships:
- No reverse references: It does NOT find all objects that point AT the seed. Use Find Refs in [Live-Walker] for that.
- No weak/soft pointers: Weak pointers, Soft object pointers, and lazy pointers are not traversed (only strong owned links).
- No arbitrary graph traversal: It does NOT walk into unowned fields (e.g. the pawn's Target field pointing to a different actor). Use [Live-Walker] manual drill-down instead.
- Depends on a seed: The panel requires an object address to start; it cannot enumerate all objects in the game. Use [Instances] or [Value-Search] to discover seeds first.
- Heuristic target detection: The 🎯 Detect target feature uses keyword scoring and structural heuristics. It can pick the wrong actor (e.g. an NPC that shares keywords with the true target) — if it fails, fall back to [Instances] (search a class name) or [Live-Walker] manual navigation.
Given an enemy actor BP_Enemy_C_0 at address 0x7FF6AA000000:
-
Enter the address and click Load
-
You see rows:
-
Self:
BP_Enemy_C_0@0x7FF6AA000000 -
Class:
BP_Enemy_C@0x7FF6BB000000 -
Outer:
PersistentLevel(or the level) -
Owned Component: Health component @
0x7FF6CC000000 -
AbilitySystem (ASC):
AbilitySystem@0x7FF6DD000000(field @ offset 0x2A8) -
AttributeSet:
HealthAttributeSet@0x7FF6EE000000(owned by the ASC)
-
Self:
-
Click the Live button on the AttributeSet row → [Live-Walker] opens, showing its fields (MaxHealth, CurrentHealth, etc.)
-
Click the ⚙ button on the AbilitySystem row → [Live-Walker] finds the path from GameEngine to the ASC
- Offline / non-live objects: If the address is not a live (allocated) UObject, the status shows "No related objects found (is the address a live UObject?)."
- Corrupt Outer chain: If an object's Outer pointer is invalid or points to freed memory, the walk may stop early.
- GAS not used: On non-GAS games, AbilitySystem / AttributeSet rows do not appear (the walk skips them).
- Deep nesting (depth 3 cap): If a game nests components more than 3 levels deep, those are not reached.
- Live-Walker — Field-by-field inspection, pointer drill-down, path search, and Find Refs
- Instances — Class-based object discovery with filter and lookup
- Value-Search — Value-driven search with group mode and deep container scanning
- Object-Tree — Full class/object hierarchy browse