GCS 1.6 Release Notes

The documentation of Generic Game Framework.

Cover.GCS
罗传月武(YueWu)

Author

罗传月武(YueWu)

专注游戏开发和Web技术。

Created: Dec 22, 2025Updated: Sep 15, 2026

Table of contents

Version 1.6

Changes since 1.5. The placeholder bullet path is now a configurable, predicted runtime: one definition can fire single shots, chains, and emitters, with local responsiveness and server authority. TraceInstance, TaggedValues, and combat-side attachment mapping are removed instead of patched further. This is a source- and asset-breaking upgrade.

Added

  • Ranged attacks can be data-authored instead of spawning a custom actor per pattern. UGCS_BulletSystemComponent is the runtime you attach to a character. RequestSpawnBullet / RequestSpawnBulletWithEntryId create batches; pooling and Fast Array replication track entries, per-bullet state, and hits.
  • Melee-like responsiveness without applying damage twice. Only the owning player's first volley predicts trajectory and presentation; predicted bullets do not apply Gameplay Effects. Chain and emitter follow-ups spawn on the server. Blueprints can implement confirm / deny callbacks. Default timeout is 2 seconds.
  • Projects can swap bullet presentation without rewriting hit resolution. Implement IGCS_BulletInterface, or keep subclassing AGCS_BulletInstance. The system owns identity, pooling, and authoritative hits; the instance owns motion and FX.
  • A hit can grow follow-up shots without a second spawner. Definitions can chain on hit or emit later shots on an interval. Those requests are authority-only.
  • The same volley will not keep hitting the same target. Definitions can share a hit list, apply a hit cooldown, and delay explosion.
  • Ability fire and animation windows are separate. UGCS_AbilityTask_BulletTrace reads the AttackRequest from a Gameplay Event. AnimNotifyStates carry data; they do not run traces.
  • Combat flow can be inspected in Gameplay Debugger. The GenericCombatSystem category shows attack results, traces, bullets, targets, and weapons.
  • Mac is a supported development and target platform. This release targets Unreal Engine 5.8.

Changed

  • Lock-on no longer requires a Pawn host. UGCS_TargetingSystemComponent is a UActorComponent. The current target replicates OwnerOnly; candidates refresh on the authority and the local AutonomousProxy. C++ that searched for UPawnComponent will miss it.
  • A predicted hit is not processed again when the replica arrives. Sharing a PredictionKey marks the replicated result as matched and skips a second LocalPredicted processor.
  • Settings names match the other Generic plugins. UGCS_CombatSystemSettings is now UGCS_DeveloperSettings. Plugin config is DefaultGenericCombatSystem.ini.
  • Poise sits with the GGA attribute menus. AS_Poise uses GGA|Attributes|Stamina. Names and defaults are unchanged; Blueprint menu grouping changes.
  • The old bullet subsystem is no longer the path forward. New code uses the component. SpawnBullet on UGCS_BulletSubsystem is deprecated.

Removed

  • Combat no longer keeps its own attachment map. Use Generic Game System socket relationship mapping instead of maintaining two rulesets.
  • CollisionTraceInstance and the filter that depended on it are gone. Hits go through trace definitions plus IGCS_TraceCauserInterface on bullets and weapons.
  • TaggedValues on attack results and UserSettings on attack definitions are gone. Use the combat payload plus Extension / NativeExtension.
  • PlayPredictableMontageForTarget and the replicated montage path are gone. There is no in-plugin replacement. Montage sync is a project responsibility.

Upgrade Notes

Source- and asset-breaking. C++, Blueprints, attack / bullet Data Assets, and any copied ini may need edits. Skipping the migration fails to compile, or ranged fire, attachments, and custom magnitudes stop working.

  1. Change C++ references from UGCS_CombatSystemSettings to UGCS_DeveloperSettings. If the host copied BaseGenericCombatSystem.ini, confirm it now loads DefaultGenericCombatSystem.ini.
  2. Implement IGCS_BulletInterface on custom bullets, and move SpawnBullet / UGCS_BulletSubsystem calls to RequestSpawnBullet. Do not apply Gameplay Effects on the predicted path.
  3. For ranged fire, use UGCS_AbilityTask_BulletTrace to read the AttackRequest. Do not treat an AnimNotifyState as a trace executor.
  4. Replace attachment, TaggedValues, UserSettings, and TraceInstance calls. PlayPredictableMontageForTarget has no plugin replacement.
  5. Look up targeting as a UActorComponent, not a UPawnComponent.