Important
PredictedMovement offers several shells usually with a derived UCharacterMovementComponent
and ACharacter
which form a single net predicted movement state.
Tip
Third Person Template Example Project here for PredictedMovement 1.0.0
Coming Soon-ish for 2.0.0
Similar functionality as crouching. Also supports change in radius. Has a lock timer, to prevent early exit from prone.
Compatible with crouching, and should switch properly between Crouch➜Prone, Stand➜Prone, Prone➜Crouch, etc.
A shell intended for switching to / from a strafe mode, however the actual functionality is not implemented as it is project-dependent. This is useful for duplicating into your own movement states, e.g. Aiming Down Sights
It makes you sprint by changing your movement properties when activated.
Net predicted stamina and drain state. It also includes a correction mechanism.
Added in version 2.0.0 of PredictedMovement
Modifiers are similar to states such as sprinting, however instead of a single on/off state, they contain multiple levels, e.g. Boost Level 1-5
(or more, or less).
Included Modifiers: Boost
, Snare
, SlowFall
Modifiers come in two formats: Local Predicted
(applied to self, e.g. a buff) and Server Initiated
(applied to another, e.g. a debuff).
Furthermore, Server Initiated
modifiers include a functional and production tested client authority solution, that allows limited/partial location authority for the client when the server applies a Modifier to your character, to prevent problematic de-sync.
The included modifiers can be duplicated to achieve plenty of other modifications.
I used this in my own project, here you can see the character sprinting, consuming stamina, strafing, and proning with high latency (>220ms) and p.netshowcorrections 1
. As you can see, there is no desync.
- Movement Modifiers added
- Boost, SlowFall, Snare included by default
- Client Authority solution added
- Wiki added
- Version number follows Unreal format 1.0.5.2 > 1.5.2
- Added System/PredictedMovementVersioning.h for improved pre-processor support
- Added helper comments to StaminaMovement.h
- Pre-processor macros for OnClientCorrectionReceived to support 5.3
- Replaced ClientHandleMoveResponse with OnClientCorrectionReceived
- Fixed a bug causing SimulatedProxy to factor ProneLock incorrectly, causing it to become stuck in Prone
- Moved prone lock definitions to the .cpp
- Initialize a few uninitialized properties
- Add
UE_INLINE_GENERATED_CPP_BY_NAME
to all relevant .cpp
- SprintMovement added option (
bUseMaxAccelerationSprintingOnlyAtSpeed
) for usingMaxAccelerationSprinting
whenIsSprintingAtSpeed()
is false
- Added NetworkStaminaCorrectionThreshold and exposed via UPROPERTY()
UStaminaMovement::ServerCheckClientError
added by PR from vorixo
- Remove
bForceIWYU
- Changed
FSavedMove_Character_Prone::PrepMoveFor
to useSuper
instead ofFSavedMove_Character
- Removed
IsSprintingAtSpeed()
check forUSprintMovement::GetMaxSpeed()
- Prone lock timer implemented properly (with prediction instead of timer handle) to fix desync
- Can no longer jump while prone
- Remove ground checks for sprint and strafe movement properties (walking off a ledge shouldn't momentarily change to normal speed, etc)
- ClientHandleMoveResponse use LogNetPlayerMovement instead of LogTemp
- Minor readability change to ClientHandleMoveResponse and a helpful comment
- Add export macro and remove final for StaminaMoveResponseDataContainer
- Expose stamina as protected
- Change ObjectInitializer property name from OI
- Fixed incorrect information in comment for recovering stamina
- Removed accidental include
- Removed stamina inheritance from sprint
- Fixed CanSprint() being used unnecessarily, CanSprintInCurrentState is utilized properly here
- Moved sprint input checking to virtual func
IsSprintWithinAllowableInputAngle
- Sprint checks 3D velocity on ground, replaced magic number with UPROPERTY
VelocityCheckMitigatorSprinting
- Moved implementations out of headers
- Greatly improved comments
(Thanks to cedric & vori for the code review)
- Fixed issue where stamina corrections were being overwritten
- Added Stamina
- Initial Release