Add runtime proxy actor lookup diagnostics
Introduce Stage 1 runtime lookup diagnostics for the proxy actor base: adds ResolveProxyActorBase and ResolveProxyActorBaseByPluginLocalFormId along with helper checks (IsTestPluginLoaded, IsUsableProxyActorBase, editor/fullname helpers). The code logs plugin load status, editor-ID resolution, and a plugin-local FormID fallback (0x0020A1) while refusing to spawn actors (runtime spawning remains disabled). Adds throttled and one-shot log flags to avoid spam and invokes the diagnostic early on the game-thread before placed-proxy fallback and remote-player selection. Documentation updated (docs/architecture.md and docs/dev-log.md) to record the new diagnostic behavior and next steps.
This commit is contained in:
+12
-3
@@ -34,8 +34,13 @@ both send and receive paths:
|
||||
test cell, the game-thread proxy controller moves the single placed proxy to
|
||||
a hidden holding position inside `F4TTestCell01` until a valid same-cell
|
||||
remote player is available again.
|
||||
13. As the first runtime proxy actor manager stage, the same game-thread proxy
|
||||
controller also logs whether `Fallout4Together_Test.esp` is loaded and
|
||||
whether the actor base `F4T_RemotePlayerProxy` resolves by editor ID.
|
||||
|
||||
The Fallout 4 plugin still does not dynamically spawn remote actors.
|
||||
The Fallout 4 plugin still does not dynamically spawn remote actors. The actor
|
||||
base lookup is diagnostic-only and keeps the placed proxy reference as the
|
||||
visual representation path.
|
||||
|
||||
## Main Components
|
||||
|
||||
@@ -54,10 +59,13 @@ The native plugin is responsible for:
|
||||
thread
|
||||
- Holding that proxy actor at a hidden in-cell position when no valid same-cell
|
||||
remote player should be represented
|
||||
- Logging staged runtime proxy actor base lookup diagnostics on the same
|
||||
game-thread controller path
|
||||
|
||||
Planned later:
|
||||
|
||||
- Spawning or moving remote actors
|
||||
- Runtime spawning one proxy actor from `F4T_RemotePlayerProxy`
|
||||
- Supporting one proxy actor per represented remote `playerId`
|
||||
|
||||
### External Server
|
||||
|
||||
@@ -108,6 +116,7 @@ Game update logs local movement around 1 Hz
|
||||
Networking thread receives packets
|
||||
Networking thread stores remote player state
|
||||
Game update reads a copied remote player snapshot
|
||||
Game update resolves/logs proxy actor base diagnostics
|
||||
Game update moves the placed test proxy actor
|
||||
```
|
||||
|
||||
@@ -118,7 +127,7 @@ update path.
|
||||
|
||||
## Out Of Scope For Current Prototype
|
||||
|
||||
- Remote actor spawning
|
||||
- Runtime actor spawning
|
||||
- Multiple proxy actors
|
||||
- Animation graph sync or animation application
|
||||
- Combat sync
|
||||
|
||||
@@ -1161,6 +1161,77 @@ snapping without launching multiple Fallout 4 instances.
|
||||
|
||||
---
|
||||
|
||||
## 2026-06-02 - Runtime Proxy Actor Manager Stage 1
|
||||
|
||||
### Summary
|
||||
|
||||
Added lookup-only diagnostics for the future runtime proxy actor path. The
|
||||
plugin now confirms whether `Fallout4Together_Test.esp` is loaded and whether
|
||||
the actor base `F4T_RemotePlayerProxy` resolves by editor ID or by its confirmed
|
||||
plugin-local form ID on the existing game-thread proxy controller path.
|
||||
|
||||
### Files Changed
|
||||
|
||||
- `plugin/src/F4TProxyActorController.cpp`
|
||||
- `docs/dev-log.md`
|
||||
- `docs/architecture.md`
|
||||
|
||||
### Details
|
||||
|
||||
- Added `ResolveProxyActorBase()` as a Stage 1 diagnostic function.
|
||||
- Added a test ESP loaded check before actor-base lookup diagnostics.
|
||||
- Tightened the diagnostic call site so it runs in `F4TTestCell01` before placed
|
||||
proxy fallback lookup and before remote-player selection.
|
||||
- Made runtime proxy actor-base log messages explicit for diagnostic searches:
|
||||
plugin loaded, lookup running, lookup resolved, or lookup failed.
|
||||
- Uses `LookupModByName` as a fallback for the ESP loaded check, matching the
|
||||
mod lookup path already used by the placed-reference form ID fallback.
|
||||
- Added editor-ID lookup for `F4T_RemotePlayerProxy` as a `RE::TESNPC` actor
|
||||
base and validation that the resolved form still has the expected editor ID.
|
||||
- Added confirmed plugin-local FormID fallback lookup:
|
||||
`LookupForm<RE::TESNPC>(0x0020A1, "Fallout4Together_Test.esp")`.
|
||||
- Kept the actor-base local ID `0x0020A1` separate from the placed reference
|
||||
local ID `0x0020A2`.
|
||||
- Validates the resolved actor base is usable as the future
|
||||
`NEW_REFR_DATA::object` source before reporting success.
|
||||
- Accepts the confirmed `LookupForm<RE::TESNPC>` result even if runtime editor
|
||||
ID extraction is unavailable or mismatched; editor ID mismatch is logged as a
|
||||
warning instead of rejecting the actor base.
|
||||
- Logs fallback diagnostics including runtime form ID, local form ID, form type,
|
||||
`TESNPC` status, editor ID if available, display name if available, and
|
||||
whether the form was accepted.
|
||||
- Logs whether actor-base lookup succeeded through editor ID lookup or
|
||||
plugin-local FormID fallback.
|
||||
- Added clear one-shot or throttled logs for test ESP load status, actor-base
|
||||
lookup success, missing editor ID, or wrong form type.
|
||||
- Did not call `CreateReferenceAtLocation` and did not spawn runtime actors.
|
||||
- Left placed proxy lookup, smoothing, special movement snapping, holding
|
||||
lifecycle, and sneak-state observation unchanged.
|
||||
- Left networking protocol, Python server code, and fake-client tooling
|
||||
unchanged.
|
||||
|
||||
### Testing
|
||||
|
||||
- Ran `xmake build` from `plugin`; it succeeded.
|
||||
- Pending: launch Fallout 4 through F4SE, load `Fallout4Together_Test.esp`, and
|
||||
`coc F4TTestCell01`.
|
||||
- Pending: confirm `Fallout4Together.log` reports the test ESP load status and
|
||||
`F4T_RemotePlayerProxy` lookup result.
|
||||
- Pending: confirm the existing placed proxy fallback still represents one fake
|
||||
client and still holds/restores correctly.
|
||||
|
||||
### Known Issues
|
||||
|
||||
- Runtime actor spawning is intentionally not implemented in this stage.
|
||||
|
||||
### Next Steps
|
||||
|
||||
- Run the build and in-game lookup diagnostics.
|
||||
- After lookup is proven stable, proceed to Stage 2: one game-thread-only runtime
|
||||
spawn diagnostic in `F4TTestCell01` while keeping the placed reference fallback.
|
||||
|
||||
---
|
||||
|
||||
## Entry Template
|
||||
|
||||
Use this format for future updates:
|
||||
|
||||
Reference in New Issue
Block a user