GMS 1.3
This version is the last update for UE5.4. After this, I will move my work to UE5.5 and continue the subsequent development according to the plan.
This update for UE5.4 includes significant improvements and fixes that enhance the overall functionality and user experience of the Generic Movement System.
Major Changes
- Improved the quality of the default locomotion, especially turn start and turn-in-place movements.
- Adjusted the state machine structure for better performance and clarity.
Bug Fixes
- Pivot Movement Replication: Fixed an issue where pivot movement was not properly replicated in multiplayer, and diagonal pivot movements were not triggering correctly.
- Rotation Mode Assertions: Resolved an assertion issue in the engine related to sync group markers when switching rotation modes while playing Start/Stop animations of different lengths.
- Start Animation Playback: Fixed an issue where the Start animation did not play when the rotation mode was set to ViewDirection.
- State Machine Improvements: Enhanced the structure and transition logic of the default locomotion state machine for robustness.
- Velocity Direction Input: Fixed an issue where the option "UseInputDirection when movement was blocked under VelocityDirection" was not functioning.
- Landing Animation Selection: Corrected the selection logic for landing animations based on the incorrect landing speed.
Movement Control System Improvements
- Network Replication: Added network replication for
OwnedTagson the movement system component and provided APIs for adding, removing, or overriding these tags, making it easier to sync tags in non-GAS projects. - Jump and Crouch Logic: Ensured that jumping and crouching are mutually exclusive when using GAS.
- Blocked Movement Logic: Improved logic for determining when movement is blocked.
- Stride Warping Configuration: Moved stride warping settings from
AnimGraphSettingto individual moving state settings, allowing for separate configuration of Start/Pivot stride warping.
Demo Improvements
- Demo Experience Update: All demo levels will now use a room-style demo similar to
ContentExample, providing a unified experience across all my products. Simple blueprints are available for quickly building level prototypes or demo maps. - GGS Integration: GGS is free and part of GMS, providing interaction and UI examples for demo purposes. The core of GMS remains on "one movement system component" + "one main animation blueprint."
Animation Integration Improvements
- Gun movement definition improvement: Addressed missing aiming configurations in the ranged weapon movement set settings from version 1.2, resolving issues with IK and aiming. All gun animations (pistol, rifle, shotgun) have been configured and are ready for use or as reference cases.
- New Unarmed movement definition: Part of unarmed animations from GASP 5.4 have been added to GMS as reference, and movement definitions have been configured, allowing for free combination/switching between Lyra's Unarmed and GASP's Unarmed animations.
Development Experience Enhancements
- AM_FootFX Animation Modifier: The animation modifier can now optionally auto-place SyncMarkers (enabled by default), providing more accurate placement than the engine's built-in SyncMarkers modifier.
- Comments as Documentation: Added more comments and usage instructions on key configuration fields.
- API Accessibility: Made some APIs public and allowed more APIs to be overridden in blueprints.
Additive Layer Improvements
- Configuration Exposed: More settings are exposed in the movement set settings, allowing the alpha of LandRecovery to be adjusted based on whether the character is moving or not.
Turning System Improvement
- Complexity Shift: The complexity of the turn-in-place system has been moved from the control part to the animation part. The OffsetRoneBone and Steering animation nodes introduced in GASP are now utilized for the starting turn and standing turn in GMS's default locomotion.
- Animation Dependency: This system relies on root motion for the starting/turning animations. While it offers improved quality, it may result in a stickier control feel. Therefore, it can be optionally disabled in the GeneralSettings of the movement set, providing GMS with the flexibility to choose between high responsiveness and high fidelity.
- Directional Input: The system also allows for optional triggering of turn-in-place animations when lightly tapping the joystick or direction keys under VelocityDirection, similar to Dragon Age.
- Automatic Selection: There is no longer a distinction between Montage and Graph methods for turn-in-place. The system will automatically select between delayed and non-delayed turns based on control settings and delay activation settings.
Lean System Adjustments
- Lean Blending Space: Lean can be configured to map "movement speed range to blending space value scaling range," allowing for different degrees of lean based on different character's moving speed.
Stack Overlay System Improvements
- Overlay Configuration: Each
AnimData_Overlaynow allows configuration of blend-in and blend-out times separately, addressing scenarios where quick blend-in and slow blend-out are desired. - Logical Error Fixed: Fixed a logic error where an inactive overlay would not reset its data, merely invalidating it to avoid animation jittery.
- Performance Optimization: Extracted relevance updates to
NativeThreadSafeUpdateto improve performance.
Migration Guide
- TAG Migration: Due to changes in the default locomotion structure, some gameplay tags have been redirected. If your project uses these tags for overlays/layering, add the following migration to your
Config/DefaultGameplayTags.ini
plaintext
1[/Script/GameplayTags.GameplayTagsSettings]2+GameplayTagRedirects=(OldTagName="GMS.SM.Locomotion",NewTagName="GMS.SM.Grounded")3+GameplayTagRedirects=(OldTagName="GMS.SM.Locomotion.Grounded",NewTagName="GMS.SM.Grounded")4+GameplayTagRedirects=(OldTagName="GMS.SM.Locomotion.Jump",NewTagName="GMS.SM.InAir.Jump")5+GameplayTagRedirects=(OldTagName="GMS.SM.Locomotion.Fall",NewTagName="GMS.SM.InAir.Fall")6+GameplayTagRedirects=(OldTagName="GMS.SM.Locomotion.Land",NewTagName="GMS.SM.Grounded.Land")
