战斗流程
从 Encounter 建立战场,在玩家决策与敌人 Intent 之间推进回合,直到胜利、失败或奖励结算
启动 GameEncounter 后,GCS 会根据其中的玩家、敌人、卡组和 Battle Rules 创建一场独立战斗,玩家随后通过手牌作出决策,敌人按已经公布的 Intent 行动,双方交替推进直到产生结果
上图展示了 Encounter、玩家回合、敌人回合和战斗结果之间的完整关系,初始化先建立可操作的战场,玩家与敌人阶段再循环使用这份状态;每次伤害、状态或行动结算后,GCS 都会检查战斗是否应当继续
战斗从 Encounter 开始
GameEncounter 决定本场使用的玩家角色、敌人顺序、奖励卡组和战斗规则,场景中的 GameCardManager、棋盘、手牌区和表现组件负责承载这场战斗,但不会替代 Encounter 中的内容配置
启动过程会依次产生五项可见结果:
-
根据玩家和敌人定义创建独立的单位状态
-
根据 Starting Deck 或持久 Master Deck 创建本场卡牌实例
-
按
Starting Hand Size抽取起手牌并准备初始能量 -
为存活敌人规划第一组 Intent
-
进入第一个玩家阶段,开放出牌与目标选择
这些结果可以在战场 UI 和 Game Card Monitor 中核对,定义与运行实例的区别见定义与运行实例
玩家与敌人回合交替推进
| 阶段 | 玩家看到的结果 | 主要配置来源 |
|---|---|---|
PlayerTurnStart | 护甲、能量、状态和抽牌规则完成本回合准备 | Status、Hook 与 Encounter Battle Rules |
PlayerPhase | 玩家读取战场、选择 Active Player、从全队共享能量支付费用、选择目标并打出卡牌 | Card 的 Owner、Source、Target、Behavior 与当前战斗状态 |
PlayerTurnEnd | 决策窗口关闭,剩余手牌和回合结束状态继续处理 | Card、Status 与 Hand Discard |
EnemyPhase | 存活敌人依次执行已公布 Intent,再规划下一次行动 | Enemy Behavior、Intent Pattern 与 Status |
初始化时已生成共享起手牌,第一个玩家回合不重复抽牌,从第二回合起,PlayerTurnStart 为全队执行一次 Draw Per Turn
默认策略让所有玩家共享一个 PlayerPhase,自定义 IPartyActivationPolicy 可分配成员行动,并通过 EndActivePlayerActivation 推进
胜负检查与流程等待
GCS 在卡牌、敌人行动和其他结算点检查胜负,默认规则在所有已参战敌人死亡后判胜,在玩家队伍无存活成员时判负,死亡成员保留在队伍中,可供复活
尚未产生结果时,阶段切换等待 FlowGraph 提交的三类阻塞工作
-
Wait按配置时长暂停当前执行路径 -
Gate等待项目表现层显式完成并释放 -
Choice等待玩家提交合法选择
普通 VFX、SFX 或界面刷新不会因为“仍在播放”而自动阻塞阶段,需要让玩法流程等待表现时,应在行为图中显式使用 Wait 或 Gate,Wait 的参数见流程节点,Gate 对阶段推进的影响见运行时概览
战斗结果
胜利会先执行战斗结束时机,再按 Encounter 的 Reward Deck 与 Card Reward Count 提供候选,奖励处理完成后才会结束战斗,失败则跳过卡牌奖励,直接结束当前战斗并把结果交给项目的失败流程