🚀 Spring Sale is live! 🚀 Don't miss your chance to get all my products at 30% OFF!  

Get it!

Release Notes

GMS 1.3 Change Log(2024.02.17)

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 OwnedTags on 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 AnimGraphSetting to 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_Overlay now 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 NativeThreadSafeUpdate to 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
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")

GMS 1.2 Change Log

  1. Simplified movement set management. In this version, you can push/pop movement definition to override different movement set settings without tracking different movement set tag, The number of tags can be reduced to "MovementSet.Default/ADS/Crouch/ADS_Crouch". Other type of movement sets can be "MovementSet.Guard/Guard/Crouched".
  2. Camera System improvement. Removed BC_Lite_CameraManager and replaced it with more powerful Generic Camera System
  3. MovementSetUserSetting. Added the ability to add custom data to movement set setting, so users can easily access custom data when customlizing your own anim layer.
  4. Minors bug fixing.
  5. Removed 9CG's dual sword anim pack integration. Currently , I'm heavily using anim packs from Space.Bar.Anim. So I decided to remove this integration from GMS.
  6. More comments on how things work.

Migration Guide

There are folder structure changes in this version. In order to prevent asset reference breaking, you need to add following package redirections to your own project's DefaultGame.ini

1[CoreRedirects]
2;GMS 1.2 Upgrade.
3+PackageRedirects=(OldName="/Game/GenericGame/MovementSystem/Demo",NewName="/Game/GenericDemo/GMS",MatchSubstring=true)
4+PackageRedirects=(OldName="/Game/GenericGame/MovementSystem/Intergration",NewName="/Game/GenericGame/MovementSystem/Integration",MatchSubstring=true)
5Moving demo files into their own folder allows easier updating in future and you only need to migrate contents inside GenericGame folder and leave GenericDemo folder for reference only.

GMS 1.1 Change Log


1.The default Locomotion (Grounded and Inair) has been implemented as a separate states anim layer, ABPT_GMS_Layer_States_Default, completely isolated from the MainAnimInstance. This allows you to directly replace different Locomotion implementations by switching between different movement sets (for example, switching to MovementSet.Mannequin.Unarmed.Swimming when entering SwimmingMode).

2.The GMS_MainAnimInstance now provides several functions that allow any other AnimInstance to register a mapping of "animation state nodes -gameplay tags." This enables simple tag matching to determine whether various animation graph nodes are activated, providing great flexibility when configuring animation overlays. It also makes it easier for you to expand animation selection based on tags.

3.The asset configuration for the default Locomotion has changed from AnimSequenceBase to AnimSequence to prevent accidental selection of unsupported animation asset types. Additionally, previously, both Jump and Land had to be configured for default Locomotion; now, you can configure just Jump or Land, and if there are no corresponding animations, the respective state will not be activated.

4.All AnimLayerSettings now provide a Blueprint-overridable function, IsDataValid, allowing users engaged in custom development to validate data legality through Blueprint.

5.The basic controls for the demo character (Walk/Run, Sprint, Crouch) are now entirely implemented using pure Blueprint GAS, making the entire character event graph cleaner and simpler. A new simple ability manager has been provided to help you better manage the mapping between abilities and input.

6.The demo character previously lacked camera control logic; now, a new simple camera manager has been added, allowing you to switch between different camera modes based on the character's states. It will automatically handle camera blending and transitions.

7.The component hierarchy of the demo character has been greatly simplified, and a new simple ObjectAttacher component has been added, primarily for my own development convenience, while existing as a component that does not pollute the main character logic.

Experimental Motion Matching Support:


Thanks to this update, customizing or replacing the default Locomotion implementation has become very easy. I have now integrated Motion Matching (Game Animation Sample Project) as an animation layer (ABPT_GMS_Layer_States_MM) into GMS.


This means you can mix traditional state machines and motion matching in your project, using the same API for control, and it supports multiplayer.


This part is an experimental update and has not yet reached perfection; some methods and implementations will be improved upon formal release.


Currently, travel animation has synchronization issues over the network. Therefore, this update is only suitable for GMS users wanting to try it out.

GES 1.1 Change Log (GES is part of GMS):


Previously, GES only supported playing attached VFX and SFX; now it supports Oneshot, broadening its usability.

For example, when creating the melee impact for the combat system, I only need one GameplayCue to play the VFX/SFX when the weapon hits a character, ground, or object. Depending on the character's SourceTags and TargetTags (different equipped weapons, whether defending or blocking), different VFX/SFX can be selected for playback.

How to upgrade?


Download new demo project, follow migration docs to override old content.