Skip to content

Change Log

Jared Taylor edited this page Dec 17, 2021 · 311 revisions

(Future Updates)

These are just notes, nothing here has been done yet or is set in stone

  • MIGHT be able to modify friction based on angular velocity (should result in skidding)
  • MIGHT have ability to look in direction of movement (especially for AI)

2.5.0.0 (Work in Progress - Major Update)

Versioning format changed to be more flexible and readable

Anim graph and animations have had multiple changes to improve aesthetic and needs to be re-retargeted to get them (too many to list)

Major

  • Distance matching (multi-threaded)
    • Distance Matching [Start] (anim graph node)
    • Distance Matching [Stop] (anim graph node)
  • Quadrupeds
  • Animations Reworked
    • All standing locomotion loops, starts, and stops have been fixed up significantly
    • Stop Backwards animations added

Noteworthy

  • Option to use move backwards multiplier for acceleration (now enabled by default)
  • Leg IK behaviour revamped and fixed
  • Gait node behaviour improved significantly (now factors non-1.0 axis input, and yes also in multiplayer)
    • Tidied up node and added debugging options
  • ForceWalkOff/OnLedge has been moved to a self contained function, had extra settings added and better defaults to prevent auto-stair climbing glitch
  • Re-did the animation tools to tidy up the base classes and blueprints as well as added functionality needed for distance matching
    • Root motion extraction moved to code for performance and cleanliness
  • Removed SRIG_MoveIt (use Humanoid Rig now)

Minor

  • Improved animation blending for start/stop
  • Added better titles for strafe / gait nodes to reflect what they're built on
  • Cleaned up all animation nodes to reduce casting and re-used code
  • StartInputSpeed property for anim graph (0-1 controller input range used for start animation)
  • Tidied up MoveItEditorTools module
  • Tidied up headers and removed unused includes
  • Updated Niagara Spawning to use pooling where appropriate
  • Stopping Blendspaces changed to 1D
  • Removed all FORCEINLINE - bad practice (allow compiler to do this itself, it's smarter than us)

Bug Fixes

Major

  • Fixed considerable inaccuracies with AirLean node
  • Reprocessed every animation to fix a UE4 edge-case resulting in broken export of animations
  • GetMaxBrakingDeceleration no longer mistakes max speed for sprinting
  • Added aggressive saving and redirector fixing when organizing retargeted animations to prevent blendspaces removing references edge case
  • Fix for look target node, should look at objects better now and ideally without jitter

Minor

  • Fix for applying capsule half height twice when alternating crouch and floor sliding (thanks to RoyAwesome)
  • Stopped floor sliding and sprinting from removing incline for speed comparisons when on ground (should improve behaviour in edge cases)

Other

  • Partial and very incomplete NinjaCharacter support has begun to be added

2.328

  • BlueprintNativeEvents for runtime disabling:
    • CanHitWall
    • CanScuffWall
    • CanHitCharacter

3.327 (Pending Epic Approval)

  • Fixed UE4 bug causing missing references in blendspaces

2.326

  • Added missing null check that some editor tools require in MICMC

2.325

  • Fixing neck, head, clavicle poses in all animations - this ensures retargeting works flawlessly so long as your character is setup correctly
  • Ensured every single animation available is now retargeted by adding unused animations to anim graph

2.324

  • Added improved root motion support (for use with GAS or single player games)
    • bDisableControlRotationDuringRootMotion added to disable Control Rotation during root motion (so character wont rotate during root motion)
    • StopRootMotionOrientTime provides an interpolation back to the control rotation after root motion (you can set this based on the montage when you tell it to play)
    • MIPlayerCameraManager added for optional use with ability to clamp yaw during root motion montage to prevent it breaching turn in place limit
    • MIPlayerController for optional use which exposes SetPawn to Blueprint, this can be used to init the MIPlayerCameraManager (OnCharacterUpdated)
    • Added function to MICharacter OnAnimInstanceChanged which should be used to reset MIPlayerCameraManager (OnCharacterUpdated)
  • Hit wall / character etc. functions now check for any root motion source (not just root motion in CMC)

2.323

  • MoveIt_RetargetSorter was broken by 4.27. Custom solution implemented to fix this.
  • Data cache performance improved by modifying variable layout (memory alignment) to reduce cache misses
    • Grouped properties for better caching for CMC, Character, AnimInstance
    • This means some properties will be poorly ordered when reading classes, but trade-off is worthwhile

2.322

  • ViewComponent uses socket offset for spring arm instead of transform so collisions trigger properly

2.321

  • Added unused animations to anim instance so they will still be retargeted
  • Disabled loop on unused pivot animations so users wont get caught off-guard

2.32

  • Changes to ImpactSystem (Footsteps)
    • Added BitMask for impacts to include/exclude states (default, ragdoll, floor sliding)
      • FloorSliding now uses hands also
    • Added Event Callback FMIOnSurfaceImpact for impacts based on local role
      • Accessible via UMIAnimInstance as UPROPERTY(BlueprintAssignable, Category = Impact) FMIOnSurfaceImpact OnSurfaceImpact;
        • Note: Callback settings must support calling this and it must be bound for it to be called!
      • Global settings & per-impact
      • Callback includes:
        • FName BoneName
        • UPhysicalMaterial* PhysMat
        • FVector Location
        • FRotator Rotation
        • float BoneSpeed
    • Fixed a bug where it would return out of loop instead of using continue
  • Changed MoveItFullBodyIK LoadingPhase to PostConfigInit to fix a bug with ControlRig (EarliestPossible caused other issues)

2.315

  • Changed MoveItFullBodyIK LoadingPhase to EarliestPossible to fix a bug with ControlRig

2.314

  • Footsteps (surface impacts) now work correctly in 5.0EA circumventing engine bug that returned 0 velocity for bones
  • 4.27 support added (has deprecation warnings because neither 4.26 nor 5.0EA has the new functions)

2.313

  • OnStartFloorSlide and OnStopFloorSlide, OnStartCrouchRun and OnStopCrouchRun made virtual

2.3121

  • Fixed packaging bug

2.312

All pre-existing animation blueprints should change the Idle LeftStateEvent to "StartTurn" and remove "StartTurn" from the transitions stemming from TurnConduit (don't forget Crouch)

  • Added template for Twin Stick movement
  • Added setting to always continue rotating to last non-zero input direction
  • Added new Turn in Place animations - 15° / 30° / 45°
  • Added optional IdleRotationRate to use instead of RotationRate when not moving
  • Fixed bug with TurnInPlace where StartTurn was not being called in the first instance
  • Fixed bug with LandingPose node that was evaluating incorrectly (and disrupting IK/pelvis)
  • Added missing includes

2.311

  • Added GetMaxGaitSpeed to MICharacterMovementComponent which simply calls GetMaxSpeed() but you can override in C++ to change GaitSpeed on a per-project basis (see MIAnimInstance)
  • Fixed bug where aim offsets weren't computing properly without OrientToView

2.31

For pre-existing animation BPs it is recommended to change the gait node blend out time to 0.6 from 0.2

To revert back to previous system simply go to AMICharacter::IsSprinting and read comments for further instruction

  • Sprint overhauled to allow sprinting from idle
  • IsSprintingAtSpeed moved to MICharacter instead of MICharacterMovementComponent and renamed to IsSprinting to allow BP override
    • All functions referencing IsSprintingAtSpeed are modified as required
    • Now returns true if there is any movement instead of exceeding walk speed (can start sprinting with any movement)
  • MaxAccelerationSprinting is reduced greatly as it can now sprint from idle
  • Gait Node default blend out time changed to 0.6 from 0.2 to allow it to be partially used when starting from idle -> sprint

2.303

  • RetargetSorter now correctly saves (to prevent blendspaces losing references)
  • RetargetSorter now fixes up references itself so you don't have to
  • RetargetSorter has UX update (helpful text and improved activation conditions and default source folder location filled in)
  • Added export macro to FPhysicsBlend
  • Changed log category for full body IK solver to prevent UE5 conflict
  • Initialized missing anim node properties properly
  • Fixed issue with CR_MoveIt preventing packaging

2.302

  • Fixed missing include

2.301

2.3

Update guide for pre-existing blueprints: https://youtu.be/dt4A30kgjwg

  • Support for UE5 Early Access
  • MIBoneTools disabled deprecation warnings that occur with UE5
  • Added UE5 Early Access FullBodyIK solver to UE4.26, a significant task
  • Changed FootIK to use FullBodyIK solver and Control Rig (it's faster, and actually works with UE5)
  • Fixed missing includes
  • Removed unnecessary build.cs includes

2.213

  • Virtual C++ events for OnStartSprinting and OnStopSprinting
  • Fixed missing include in MICharacter

2.212

  • Added MetaHuman retarget pose
  • Added MetaHuman retarget information to documentation

2.211

  • Adding InputSource to MISpringArmComponent to allow it to get values from PlayerController instead of Character
  • Fixed missing includes and declarations in MISpringArmComponent (Even Epic's tooling didn't pick them up)

2.21

  • Added FallbackMode to physical material (so when using character-specific lookups they are optional for each character)
  • AdvancedDisplay not functioning correctly for all properties in 4.26 so modifier removed from some character properties related to physical impacts
  • Fixed many comments for physical animation
  • Updated copyright notice

2.204

  • Added character-specific functionality for physical material assets

2.203

  • Fixed MISpringArmComponent
    • bCameraMoveDuringJump now works correctly
      • Debug option now disables correctly
    • Zoom options work as expected
  • Added ability to enable/disable aim offset externally (MIAnimInstance->bAllowAimOffset)

2.202

  • Added Blueprint function for IsSprinting to MIAnimInstance to add control over animation state

2.201

  • Removed box trace for foot IK temporarily, needs redoing

2.2

  • Orient to ground now bone based instead of world based (works for any root orientation)
  • MoveIt now supports non-UE4 characters properly
  • Changed Foot IK to use a box instead of line trace to prevent foot clipping (Deferred)
  • Added debug drawing options for anim graph nodes for easier setup (so far only foot IK)
  • Improved jumping animations

2.1

  • 4.25 Support Dropped
  • Cleared 4.26 deprecation warnings for FAnimationRuntime::AccumulateAdditivePose

2.045

  • 4.24 Support Dropped
  • Cleared 4.25 deprecation warnings for UProperty->FProperty

2.042

  • IK Bone Tool has warning added to restart editor to avoid crash

2.041

  • Added tool to automatically add IK bones to mesh(es)
  • Added functionality to force close windows when extracting turn in place curves (as this can cause issues)

2.04

  • Added custom MISpringArmComponent - check BP_MoveIt_ExampleCharacter AdventureBoom for usage (also in the event graph!)
    • Orbit functionality (turns camera when moving sideways like Mario Odyssey)
    • Static Jump (stops camera moving when jumping)
    • Zoom (smooth camera zoom via input)
      • Pitch to Zoom Curve to allow zooming based on vertical angle

2.03

  • Fixed a bug where ragdoll used incorrect property for normal sync (i.e not aggressive/initial sync)
  • Moved character cached replicated properties to header
  • Added enum GetMIMovementState

2.02

  • Added to MICharacter GetPhysicalMaterialOverride which takes absolute priority on physical material used, perfect for applying special footsteps when using abilities, etc
  • Fixed issue with Epic breaking my turn in place on listen servers! OnRegister was changing NetSmoothingMode
  • Corrected ListenServerNetworkSimulatedSmoothRotationTime (TIP should look smoother)
  • Added initial replication for characters becoming relevant for the RootYawOffset to help the initial turn in place line up

2.01

  • Fixed timing of bTurnRight determined by anim graph
  • Tentative fix for FAccelerationFrameCache causing a crash
  • Removed unused cache
  • Turning radius defaulted to 0 as it was confusing some users

2.0

Major

  • New animation set & features
  • Improved turn in place
    • Reworked anim graph setup and core logic for nicer / cleaner turning
    • Unlimited custom step sizes (rather than restricted to 2)
    • Rest frames now work properly (IsTurning becoming false)
    • Turn animation rate based on reaching max turn angle
    • Turn animation rate based on changing direction while playing previous (other direction) animation
    • MaxTurnAngle 0.0 now works as intended
    • FootIK correctly compensates TIP offset
  • Crouch sprinting added (running while hunched over)
  • Proper AI support
  • Support for Linux Toolchain (when compiling from windows - should work from Linux OS too, tell me in Discord if it doesn't)

Noteworthy

  • Animation settings forced to top of details panel via details customization
  • Simplified base character
  • Demo character uses toggled inputs instead of held inputs
  • AimOffset should no longer have strange rotations (fixed order of operations)
  • Physical animations improved immensely
  • Added "Coyote Time" (where it will still allow jumping for an incredibly small amount of time after walking off a ledge, helps platforming feel far more responsive, stops players feeling cheated "I pressed jump in time!", and prevents the scenario where a character walks off a tiny notch in a bumpy terrain as jump is pressed)
  • Added "Bunny Time" (where it allows you to still jump if you pressed jump slightly before landing, making jumping feel much more responsive)
  • ViewComponent no longer needs to be setup for each character (default behaviour provided), only requires custom blueprints for non-MoveIt projects or blueprint only projects
  • Major changes to default movement properties (primarily to support new animations and improve look and feel)
  • Setting for crouching in air behaviour
  • Fixed bUseSeparateBrakingFriction doesn’t care if you’re in air (default CMC, just added an option for handling it better)
  • Turn In Place Tool Improvements
    • Remove all Anim Notifies
    • Disable Root Motion
    • Force Root Lock
    • Correctly marks as dirty (requiring save)
  • Added Details Customization to set default movement system
  • Modified helper widgets and functionality to only work based on net mode
  • Animation Resorter Tool for proper structure after retargeting
  • Event delegates for hitting wall, scuffing wall, hitting character
  • Added capability to automatically trigger floor slide
  • Many Ragdoll settings exposed
  • Duck node has settable trace channel

Minor

  • Better categorization of properties
  • Sprint backwards speed multiplier (for rare-ish cases where sprinting backwards is allowed in your game)
  • Ground Friction for Sprinting
  • Animation speed now factors Z speed when on ground
  • Legacy Turn In Place Node Removed
  • Legacy Weapon Pose Removed (In favour of new anim graph setup which has proper blending)
  • IsTurnInPlaceEnabled now handled in C++ instead of BP (because its confusing / not obvious when extending in C++)
  • SurfaceImpacts can be both globally and individually toggled on/off

Bug Fixes

  • MANY are not listed
  • Can now sprint backwards (CanSprint now checks if MaxSprintDirectionInputAngle is over 0) (NOTE: no relevant animation provided)
  • AimOffset properly computed for non-TIP movement systems
  • Super typedef removed from animation nodes
  • CalcVelocity missing sanity checks
  • Removed unnecessary landing compression nodes
  • Fixed issue with scaled meshes and SpringBase node
  • Fixed missing null check in IsCurrentFloorMovable
  • Fix bug with GetCurrentSyncTime sometimes having ROLE_None for GetLocalRole()
  • Fixed bug with tear off ragdoll

1.23

  • Work-In-Progress Quadruped Support (Pre-Alpha Prototype) & addition of the MoveIt Dog
  • Client-side predicted randomization! (eg. net synced randomized recoil patterns)
  • Walk Animations & Blendspace setup & GetMaxAnimSpeed added to CMC so that pivot and slopes properly reflect anim speed
  • Improved leaning setup
  • Niagara support for MIPhysicalMaterial
  • Separate move backward speed multiplier for crouching
  • Root motion resets turn in place properly
  • Added game mode to FeatureMap

1.22

Update guide for pre-existing blueprints: https://youtu.be/OqqvICQekWU

  • Floor Sliding added as beta feature
  • Gait node improvement (minimum gait prevents legs turning outward and provides nicer starts/stops)
  • Strafe right orientation has better angles
  • Strafe right has better sprint direction detection
  • Stopping directional issues (esp. with strafe right) resolved
  • Improved procedural strafing logic
  • Added better options for disabling wall impact effects
  • Added nice UI to demo character, changed cameras and movement modes into mini-game mode settings
  • TIP Tools has button to remove all anim notifies
  • TIP Tools fixed bug where it doesn't check for curve before removing
  • Footstep particle less noticable, less white
  • Dog added (model only, pending next release)
  • Fixed an issue where friction wasn't being correctly modified when using separate braking friction
  • Fixed an issue where sprinting braking deceleration was being incorrectly applied
  • Fixed issue with MICharacterMovement not marked as transient
  • Fixed issue where animation montages were rotated after playing
  • Fixed issue where animates montages encountered foot sliding
  • Fixed incorrect inversion of armed state for strafing nodes

1.21

Update guide for pre-existing blueprints: https://youtu.be/Esko5jprecA

  • Animation graph overhaul allowing layering of weapon poses
  • Separation of strafe input type based on strafe orientation (allows strafe right to use acceleration instead of the new default velocity)
  • Integrating turn in place and ragdoll
  • FMIWeapon uses MeshComponent instead of SkeletalMeshComponent to support Static Mesh weapons
  • Fixed animation jitter in packaged builds when starting/stopping (gait spring tick issue)
  • Fixed bug where moving animation continues to play after walking into wall
  • New non-developer editor module for tools

1.20

  • Turning radius (cycled movement) implemented for orient to view
  • Changed to velocity based animations (from acceleration) - this is beta but has been enabled by default due to overwhelming benefit
  • Fixed bug with ragdoll and turn in place (may still have issues, but its improved)
  • Pivot speed threshold can use percentage of max speed instead of specific value
  • PivotType can be set to disabled
  • Overall improvements to animation logic

1.11

Update guide for pre-existing blueprints: https://youtu.be/ofAwLMgBD_0

  • Start & stop animations
  • Corrected editor module type (caused issues with standalone animations)
  • Changed the default ground friction, makes the movement much nicer
  • Changed the cameras to have nicer angles
  • Turn in place tool: Removed need for specified angle with distance based curve and fixed issue when processing multiple assets
  • Fixed bug with incline curves in CMC returning incorrect value
  • Removed CanEditChange in favour of EditCondition (thanks to obsoletion of 4.22) - this also fixes the warnings in 4.25 due to UProperty change to FProperty

1.10

Update guide for pre-existing blueprints: https://youtu.be/X9Oc1KJKDIo

  • New turn in place system (based on Fortnite's)
    • Animation tools (for extracting curves from root motion and modifying existing curves to be compatible)
  • New animations for both unarmed and rifle states
  • Bug fix: Foot IK node would shift pelvis weight back or forward (depending on pose) while Idle
  • Fixed Anim Graph ordering (better aim offset and weapon pose posing)

1.03

  • Removed unnecessary check that could cause issues

1.02

  • Fixed missing null check for anim node TranslatePoleVectors

1.01

  • Fixed issue with GetMaxBrakingDeceleration sprint detection
Clone this wiki locally