IMPLEMENTATION BREAKTHROUGH:
- Proxies are real NPCs with active AIProcess
- AIProcess naturally calls Move() each game frame
- Move() updates character controller velocity
- Animation graph evaluates velocity and plays animations
- Solution: Let AI drive movement naturally, not just SetPosition()
CHANGES:
1. Added lastPositionSyncTime to ProxyActorSlot
- Tracks when position was last overridden for sync
2. Rewrote ApplyRuntimeProxyTransform():
- New parameter: optional ProxyActorSlot pointer
- Hybrid logic:
* Don't override position most of the time
* AI's natural Move() calls update velocity automatically
* Animations play because velocity is real
* Override position only when needed:
- Snap required (cell change, teleport)
- Sync timer expired (~300ms)
- Drift exceeds threshold (>150 units)
- Falls back to always-sync for fallback proxy (no slot)
3. Updated call sites:
- MoveSlotProxyToRemotePlayer: passes &a_slot
- RestoreSlotProxyForRemotePlayer: passes &a_slot
- MoveProxyToRemotePlayer: uses default nullptr (fallback)
RESULT:
- Proxy uses natural AI movement most of the time
- Animation system sees real velocity updates
- Animations should now play automatically
- Network sync maintained with periodic position override
- Smooth visual movement + proper animations = immersion!
Next: TEST IN GAME to verify animations work
Co-authored-by: Cursor <cursoragent@cursor.com>
Fallout4Together Plugin
This is the native Fallout4Together plugin using CommonLibF4.
Requirements
- XMake [3.0.0+]
- C++23 Compiler (MSVC or Clang-CL)
Getting Started
git clone --recurse-submodules https://github.com/libxse/Fallout4Together
cd Fallout4Together
Build
To build the project, run the following command:
xmake build
Note: This will generate a
build/windows/directory in the project's root directory with the build output.
Build Output (Optional)
If you want to redirect the build output, set one of the following environment variables:
-
Path to a Mod Manager mods folder:
XSE_FO4_MODS_PATHor
-
Path to a Fallout 4 install folder:
XSE_FO4_GAME_PATH
Project Generation (Optional)
If you use Visual Studio, run the following command:
xmake project -k vsxmake
Note: This will generate a
vsxmakeXXXX/directory in the project's root directory using the latest version of Visual Studio installed on the system.
Alternatively, if you do not use Visual Studio, you can generate a compile_commands.json file for use with a laguage server like clangd in any code editor that supports it, like vscode:
xmake project -k compile_commands
Note: You must have a language server extension installed to make use of this file. I recommend
clangd. Do not have more than one installed at a time as they will conflict with each other. I also recommend installing thexmakeextension if available to make building the project easier.
Upgrading Packages (Optional)
If you want to upgrade the project's dependencies, run the following commands:
xmake repo --update
xmake require --upgrade
Documentation
Please refer to the Wiki for more advanced topics.