UCharacterMovementComponent::ServerMoveDual
Deprecated: ServerMoveDual() is deprecated, use ServerMovePacked_ClientSend() instead, or define SUPPORT_DEPRECATED_CHARACTER_MOVEMENT_RPCS=1 in the project and set CVar p.NetUsePackedMovementRPCs=0 to use the old code path.
#include "GameFramework/CharacterMovementComponent.h"
Access: public
Specifiers: virtualUFUNCTIONServerUnreliableWithValidation
Description
Legacy server RPC that batches two consecutive client moves into a single call, used when a pending move couldn't be sent on its own tick and needs to piggyback on the next one.
Caveats & Gotchas
- • Deprecated since 4.26 alongside the rest of the non-packed RPC family; only compiled into an active path with SUPPORT_DEPRECATED_CHARACTER_MOVEMENT_RPCS=1 and p.NetUsePackedMovementRPCs=0.
- • The '0'-suffixed parameters (TimeStamp0, InAccel0, PendingFlags, View0) describe the earlier pending move; the unsuffixed parameters describe the current move — mixing them up silently corrupts replay ordering.
- • Chosen automatically by CallServerMove() when there's a queued PendingMove; game code should never call this directly.
Signature
virtual void ServerMoveDual(float TimeStamp0, FVector_NetQuantize10 InAccel0, uint8 PendingFlags, uint32 View0, float TimeStamp, FVector_NetQuantize10 InAccel, FVector_NetQuantize100 ClientLoc, uint8 NewFlags, uint8 ClientRoll, uint32 View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, uint8 ClientMovementMode) Parameters
| Name | Type | Description | Default |
|---|---|---|---|
| TimeStamp0 | float | Client timestamp for the first (pending) move. | — |
| InAccel0 | FVector_NetQuantize10 | Compressed acceleration for the first move. | — |
| PendingFlags | uint8 | Packed move flags for the first move. | — |
| View0 | uint32 | Compressed client view for the first move. | — |
| TimeStamp | float | Client timestamp for the second move. | — |
| InAccel | FVector_NetQuantize10 | Compressed acceleration for the second move. | — |
| ClientLoc | FVector_NetQuantize100 | Client's resultant location after the second move. | — |
| NewFlags | uint8 | Packed move flags for the second move. | — |
| ClientRoll | uint8 | Compressed client view roll for the second move. | — |
| View | uint32 | Compressed client view yaw/pitch for the second move. | — |
| ClientMovementBase | UPrimitiveComponent* | Component the client believes it's standing on after the second move. | — |
| ClientBaseBoneName | FName | Bone name on the client's movement base, if a skeletal mesh. | — |
| ClientMovementMode | uint8 | Packed client movement mode after the second move. | — |
Return Type
void Example
Dual-move RPC signature C++
// Sent instead of ServerMove() when a pending move needs to be combined with the current one.
virtual void ServerMoveDual(float TimeStamp0, FVector_NetQuantize10 InAccel0, uint8 PendingFlags, uint32 View0,
float TimeStamp, FVector_NetQuantize10 InAccel, FVector_NetQuantize100 ClientLoc, uint8 NewFlags,
uint8 ClientRoll, uint32 View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, uint8 ClientMovementMode); See Also
Version History
Introduced in: 4.0
| Version | Status | Notes |
|---|---|---|
| 5.6 | deprecated | Deprecated since 4.26 in favor of packed movement RPCs. |
Feedback
Was this helpful?