Add Papyrus sync scripts and proxy spawn refactor
Add new Papyrus scripts (CoSync.psc, CoSyncPlayer.psc, CoSyncQuest.psc) providing native bindings and quest/player proxy logic for networking: connection/session APIs, entity management, world/weather/workshop/companion sync, consumable/pipboy/door/power-armor events, and proxy animation/initialization handlers. Refactor the proxy actor controller (F4TProxyActorController.cpp) to support dynamic/runtime proxy spawning and improved lifecycle/visibility handling: change proxy base/form IDs to COPlayerProxy/CommonwealthOnline, add process-list actor lookup, spawn helpers, play-space/cell checks, 3D visibility refresh, ActorHandle usage, and spawn mutexes and globals for safer spawning. Update docs and setup (architecture.md, limitations.md, plugin/setup.md) to describe global dynamic spawn behavior, max runtime proxies (kMaxRuntimeProxyActors = 4), and validation checklist; update launch-two-fallout4.bat to show instance log locations. Misc: small tweaks to logging and debug flags to gate diagnostics.
This commit is contained in:
+13
-12
@@ -24,13 +24,12 @@ remote `playerId`, and removes remote state when disconnect packets arrive.
|
||||
`server/fake_client.py` remains a lightweight test receiver for the same packet
|
||||
lifecycle.
|
||||
|
||||
The plugin's game-thread proxy actor controller can now read a copied snapshot
|
||||
of this remote-player state and move the single placed test proxy actor
|
||||
`F4TProxyRemotePlayer01REF` in `F4TTestCell01`. The networking thread still does
|
||||
not touch Fallout 4 actors or references. If no valid same-cell remote player is
|
||||
available, the controller moves the placed proxy to a hidden holding position
|
||||
inside the same test cell instead of leaving it frozen at the last represented
|
||||
position.
|
||||
The plugin's game-thread proxy actor controller reads a copied snapshot of this
|
||||
remote-player state and dynamically spawns/moves runtime proxy actors in the
|
||||
local player's current loaded cell. The networking thread still does not touch
|
||||
Fallout 4 actors or references. If a remote player is not in the same
|
||||
cell/worldspace, the controller holds that player's proxy at a hidden in-cell
|
||||
position instead of leaving it at the last visible location.
|
||||
|
||||
## Current Remote Player State Model
|
||||
|
||||
@@ -117,14 +116,16 @@ normal send interval and are sent immediately. The receiving plugin still stores
|
||||
remote transform state on the networking thread and moves actors only from the
|
||||
game-thread proxy controller.
|
||||
|
||||
Runtime proxy actors are spawned per remote `playerId` in the test cell (see
|
||||
architecture). Full animation graph replication is not implemented; only curated
|
||||
graph variable writes drive proxy locomotion visuals.
|
||||
Runtime proxy actors are dynamically spawned per remote `playerId` in the local
|
||||
player's current loaded cell (see architecture). Remote players in a different
|
||||
cell are held at a hidden in-cell position until the local player enters their
|
||||
cell. Full animation graph replication is not implemented; only curated graph
|
||||
variable writes drive proxy locomotion visuals.
|
||||
|
||||
## Planned Later
|
||||
|
||||
- Add one proxy actor per remote player after the single-proxy test is stable.
|
||||
- Dynamically spawn remote actors only after placed-proxy movement is stable.
|
||||
- Increase concurrent proxy cap beyond four players per client
|
||||
- Cross-cell actor transfer without respawn (if respawn proves insufficient)
|
||||
|
||||
## Not Required Yet
|
||||
|
||||
|
||||
Reference in New Issue
Block a user