UCharacterMovementComponent::ServerMove_Validate
Deprecated: Part of the deprecated legacy ServerMove RPC pair; use the packed movement RPC path instead.
#include "GameFramework/CharacterMovementComponent.h"
Access: public
Specifiers: virtual
Description
Server-side RPC validation for the legacy ServerMove — returning false causes the engine to disconnect the sending client as a cheat-protection measure.
Caveats & Gotchas
- • Generated as the WithValidation half of a UFUNCTION(Server) pair; unlike most _Validate overrides you write yourself, the engine's default implementation is minimal and mostly relies on FVector_NetQuantize types to bound the data.
- • Returning false doesn't just drop the move — it flags the connection as sending invalid RPCs, which the engine treats as a potential cheat signal and can close the connection.
- • Only relevant when legacy (non-packed) movement RPCs are active; the packed-movement path uses ServerMovePacked_ServerReceive() with its own bitstream validation instead.
Signature
virtual bool ServerMove_Validate(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
bool Example
RPC validation signature C++
// Called by the engine's RPC dispatch before ServerMove_Implementation().
// Returning false disconnects the sending client.
virtual bool ServerMove_Validate(float TimeStamp, FVector_NetQuantize10 InAccel, FVector_NetQuantize100 ClientLoc,
uint8 CompressedMoveFlags, 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?