跳到主要内容

流图基础

Guide

把 Behavior 读成一条玩法规则:在指定时机,使用当前目标和数值,按连线顺序执行动作

Poison Arrow 为例, 它的 Behavior 从 On Card Played 开始,先造成伤害,再使用实际结算结果播放表现,最后施加 Poison

Poison Arrow 从出牌入口经过伤害与表现,最后施加 Poison 的 Behavior

上图把一次出牌拆成了执行顺序与数据关系:

  • 流程连线决定节点先后
  • 数据连线把目标和实际伤害交给需要它们的节点

读懂这两类连线后,便能沿着画布判断卡牌最终产生什么结果

Behavior 属于内容资产

FlowGraph 直接保存在 Card、Status 或 Enemy 中,不需要另外创建图资产,打开某项内容的 Edit FlowGraph,编辑的就是该资产自己的 Behavior

所有者Behavior 表达的规则常见起点
Card卡牌在打出、抽取、弃置等时机发生什么On Card Played 与其他 Card Entry
Status状态如何响应战斗时机、修改数值或处理层数Battle/Status Entry 与 Hook
Enemy敌人如何选择 Intent,以及该 Intent 执行什么On Enemy Behavior Start 与 Intent Pattern
提示

复制内容资产时,Behavior 会随资产一起复制,因此在修改副本时,不会对原资产流图产生任何印象

从正确的触发时机开始

Behavior 归属于具体内容后,每条可执行路径还需要从与规则相匹配的入口开始

起点适用规则示例
Entry在战斗或内容生命周期到达时执行动作出牌后造成伤害、回合开始时触发状态
Hook在 GCS 提交数值前修改或取消结果增加伤害、改写抽牌数、拒绝出牌
Intent Pattern选择并公布敌人的下一次行动从 Sequence 或 Weighted Pattern 中选出 Leaf Intent

触发时机属于规则本身,“回合结束时”生效的状态应连接对应的回合结束 Entry,不能用时间接近的其他入口替代,精确时机见 Entry 节点Hook 节点战斗生命周期

控制流决定顺序,数据流提供参数

连线回答的问题常见端口
控制流下一个执行哪个节点Out / InTrue / FalseBody / Done、命名 Case
数据流当前节点使用哪个目标、集合或数值Source/Result Output 连接到 Consumer Input
提示

一个 Action 只有在控制流到达时才会执行,数据节点不需要接入控制流,它们会在下游节点需要输入时提供当前值

固定字段与输入端口

支持动态输入的字段可以在固定值与输入端口之间切换

端口已连接 -> 使用连线提供的当前值
端口未连接 -> 使用节点字段中保存的值

固定费用、伤害或持续时间适合直接填写字段,需要读取当前护甲、已损失 HP、状态层数或 Hook 输入时,再切换为端口,具体操作见流图编辑器

数据在需要时求值

数据不会预先沿整张图广播,Action 开始执行时,才会从连接的 Source、Get、Operator 或 Selector 读取当前值

上图说明数据连线读取的是节点执行当下的战斗状态,先造成伤害再读取 HP,得到的便是伤害后的数值

提示

需要让多个后续节点共享同一快照时,应先把结果保存到 Graph Variable 或 Battle Variable

上下文决定 Self、Opponent 与当前卡牌

同一个节点能够用于 Card、Status 和 Enemy,是因为 Behavior 执行时会带入当前宿主、行动者、目标和战斗状态

需要的数据常见来源
当前卡牌This Card 或 Entry Output
当前行动者或状态持有者SelfActive Unit 或 Entry Output
玩家选择或规则计算的目标Card Selection、Source 字段或已连接 Selector
HP、护甲、能量、牌堆和状态层数对应的 Get 节点
伤害、治疗、移动和状态修改Action 节点的实际 Result Output
Hook 或事件参数匹配入口提供的 Output

Self 的实际对象随宿主变化:玩家卡牌中通常是玩家,Status 中是状态持有者,Enemy Behavior 中是当前敌人,目标来源与端口优先级见目标选择

选择合适的数据范围

传递方式适用范围
直接连线一个下游节点立即使用当前值
Action Result后续逻辑或表现需要使用实际生效的伤害、治疗、移动或层数变化
Graph Variable同一次 Behavior 执行中的多条路径共享快照
Battle Variable数值需要跨 Entry、卡牌或回合保留
Internal Event不同内容资产需要在没有直接连线时交换数据
提示

表现层应优先使用 DealtChangedDrawnAdded 等实际结果,而不是原始输入,护甲、Hook、上限和目标校验都可能改变最终数值,沿用 Result 才能让飘字、音效和血条变化与结算保持一致

内容字段与 Behavior 各自负责什么

保存在内容资产中放入 Behavior 中
名称、描述、费用、类型、稀有度、标签、美术、Card Target、叠层规则、单位属性与 Battle Rules伤害、治疗、护甲、牌堆移动、状态反应、Hook、敌人行动、Choice、Wait、Event 与表现请求

先用内容字段定义玩家能够识别的对象和稳定规则,再用 Behavior 表达执行顺序与动态结果,打开流图编辑器可以完成实际连线,节点参考提供精确端口和参数,已验证的组合则集中在卡牌配方状态配方敌人配方