UCharacterMovementComponent::ServerMove_Implementation
Deprecated: ServerMove_Implementation() is deprecated, use ServerMove_PerformMovement() 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: virtual
Description
Server-side body of the legacy ServerMove RPC — decodes the client's compressed move parameters on the server and forwards them to ServerMove_PerformMovement() to actually simulate the move.
Caveats & Gotchas
- • Part of the deprecated legacy RPC block; only reached when SUPPORT_DEPRECATED_CHARACTER_MOVEMENT_RPCS=1 and packed movement RPCs are disabled via p.NetUsePackedMovementRPCs=0.
- • Runs entirely on the server (this is the _Implementation half of a UFUNCTION(Server) pair) — never call it directly from client code.
- • Executes only after ServerMove_Validate() returns true; a failing validate silently drops the move instead of calling this.
Signature
virtual void ServerMove_Implementation(float TimeStamp, FVector_NetQuantize10 InAccel, FVector_NetQuantize100 ClientLoc, uint8 CompressedMoveFlags, uint8 ClientRoll, uint32 View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, uint8 ClientMovementMode) Parameters
| Name | Type | Description | Default |
|---|---|---|---|
| TimeStamp | float | Client timestamp for this move. | — |
| InAccel | FVector_NetQuantize10 | Compressed acceleration input for the move. | — |
| ClientLoc | FVector_NetQuantize100 | Client's resultant location after performing the move locally. | — |
| CompressedMoveFlags | uint8 | Packed per-move flags. | — |
| ClientRoll | uint8 | Compressed client view roll. | — |
| View | uint32 | Compressed client view yaw/pitch. | — |
| ClientMovementBase | UPrimitiveComponent* | Component the client believes it's standing on. | — |
| ClientBaseBoneName | FName | Bone name on the client's movement base, if a skeletal mesh. | — |
| ClientMovementMode | uint8 | Packed client movement mode at the time of the move. | — |
Return Type
void Example
Server-side decode of a legacy move (engine-internal) C++
// Invoked by the engine's RPC dispatch after ServerMove_Validate() passes.
// Decodes InAccel/ClientLoc and hands off to ServerMove_PerformMovement().
void UCharacterMovementComponent::ServerMove_Implementation(
float TimeStamp, FVector_NetQuantize10 InAccel, FVector_NetQuantize100 ClientLoc,
uint8 CompressedMoveFlags, uint8 ClientRoll, uint32 View,
UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, uint8 ClientMovementMode); 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?