概述
本文说明 Generic Combat System(GCS)中一次攻击如何从请求进入命中处理,以及目标如何结算属性变化并生成战斗结果。
进攻流程
玩家、AI 或其他接入相应 Ability 与战斗组件的 Actor 都可以发起攻击。近战与子弹使用不同的请求和命中路径,但都会根据攻击定义准备命中效果。
近战攻击
- Ability 激活攻击动作,并准备
UGCS_AttackRequest_Melee,其中包含攻击定义行和要控制的 Trace 标签。 - 动画中的
GCS_ANS_AttackTrace保存该请求数据;它本身不是运行时 Trace 执行器。 - Ability/项目逻辑在攻击窗口调用
UGCS_AbilityTask_CollisionTrace的AddMeleeRequest与RemoveMeleeRequest。任务通过UGCS_TraceSystemComponent启停匹配的 Trace,并在命中时把目标和命中信息通知 Ability。 - Ability 或项目逻辑根据
FGCS_AttackDefinition决定对命中目标应用哪些 Gameplay Effect。
子弹攻击
UGCS_AttackRequest_Bullet通过 BulletDefinition 行配置子弹和关联的攻击定义,也可配置发射/瞄准来源、Socket、偏移及可选的目标预设。- Ability 的 GameplayEvent 流将 BulletRequest 放入事件数据的
OptionalObject。UGCS_AbilityTask_BulletTrace监听指定事件标签,读取请求后调用UGCS_BulletSystemComponent生成子弹。 - BulletSystemComponent 根据 BulletDefinition 引用的 AttackDefinition 准备命中效果;命中后的 Gameplay Effect 应用由服务器权威处理。
子弹的本地预测只覆盖玩家发起的首批子弹轨迹与视觉表现,不会在预测子弹上应用 Gameplay Effect。实际命中与效果结算由服务器处理;链式子弹和发射器子弹也由服务器生成。
调整 Gameplay Effect
FGCS_AttackDefinition 可以提供目标 Gameplay Effect 或 EffectContainer、攻击标签和 SetByCaller 数值。攻击流程可在应用前按游戏规则继续调整效果规格;例如将攻击参数传入计算,添加动态标签,或根据子弹飞行距离修改数值。
伤害计算
GCS 提供攻击请求、命中效果和结果处理之间的通用接线。具体伤害、抗性和属性变化由项目的 Gameplay Effect 与伤害执行计算定义。
防守流程
受击者收到并执行 Gameplay Effect 后,属性系统会把 PostGameplayEffectExecute 回调转发给该实体配置的 CombatFlow。CombatFlow 根据属性变化构造并注册攻击结果;结果随后经战斗系统组件复制,并交给配置的 AttackResultProcessor 处理。
详细的回调、结果字段和处理器执行策略见战斗流。
总结
GCS 将攻击请求、近战 Trace、子弹生成、Gameplay Effect 结算和攻击结果处理拆成可配置的环节。近战与子弹的命中路径不同;受击后的属性处理与反馈则汇入目标的 CombatFlow。