跳到主要内容

概览

Guide

GameCardSystem (GCS) 是 TinyGiants 面向 Unity 研发的可视化卡牌肉鸽战斗框架,覆盖从内容创作到运行时的完整链路,系统基于 ScriptableObject 的 Workbench 模式,支持以全可视化的方式创作卡牌与战斗内容;内置的 FlowGraph 可视化流图体系,允许开发者在无需编写任何代码的情况下实现《月圆之夜》、《杀戮尖塔》等各类经典卡牌机制效果,此外,框架还提供了完善的底层 API与触发事件,以便你对运行时进行深度扩展

GCS 完整可视化构筑体系,包含 Game Card Editor、FlowGraph、Play Mode 与 Game Card Monitor

上图呈现了 GCS 从内容创作到实机验证的完整工作链路,Game Card Editor 定义卡牌与战斗内容,FlowGraph Editor 把玩法规则编排为 Behavior,Play Mode 执行战斗,Game Card Monitor 再把状态与执行记录带回创作环节,这四个环节围绕同一份内容和同一套运行时工作,因此,一项机制可以从资产定义追踪到实机结果,再依据证据继续调整

项目需要自定义 HUD、地图、任务或存档时,GCSApi 与 Events 会把这些系统接入同一场战斗,自定义节点、端口和内容注册表也沿用现有 FlowGraph 与创作界面,不需要另建一套平行的战斗逻辑

从场景初始化进入完整工作链路​

GCS 的实际入口是一套可运行的场景骨架,Manager、Bootstrap 与内容数据库就绪后,内容定义和 Behavior 才会进入 Battle Runtime,运行结果则由 Monitor、API 与事件继续交给创作工具和项目系统

上图把场景初始化、内容创作、行为编排、战斗运行、问题诊断和代码接入连成一条可反复迭代的流程,编辑器建立内容与规则,运行时产生结果,Monitor 提供证据,API 与事件则把同一场战斗连接到项目中的其他系统,这套关系决定了 GCS 的主要能力与使用方式

能力范围核心规模对项目的直接价值
可视化内容创作6 种编辑模式在同一窗口创建卡牌、卡组、玩家、敌人、状态与遭遇战
可视化玩法编排147 个可用节点、103 组机制配方用节点组合表达卡牌、状态与敌人行为
运行时与代码接入170 个 GCSApi 公开成员名、47 个内置事件读取、控制和扩展战斗,连接项目流程与自定义 UI
Play Mode 诊断7 个 Monitor 标签页核对实时状态、等待来源、Flow 执行摘要与事件历史
随包成品13 场战斗、2 套彼此隔离的数据库分别运行 12 场单角色战斗与 Party Showcase,不混合两套创作数据

从场景骨架开始建立战斗内容​

打开 Game Card System 并点击 Initialize System,GCS 会创建或复用 GameCardManager 与 GameCardEncounterBootstrap,补齐战场、手牌、HUD 和表现对象,并注册六类预设数据库,完成后即可创作内容或启动固定 Encounter

Game Card System 面板完成初始化后,Manager、六类数据库与 Bootstrap 已就绪

面板中的 Manager、六类数据库与 Bootstrap 全部就绪后,场景已经具备战斗入口,完整对象职责见战斗场景,固定入口与动态入口的区别见战斗启动

Game Card Editor 的六种模式,依次覆盖 Card、Deck、Player、Enemy、Status 与 Encounter

Game Card Editor 的 List、Inspector 与 Preview 围绕当前内容同步更新,List 管理数据库和条目,Inspector 编辑定义及其 Behavior,Preview 检查外观、内容构成、行为摘要和直接引用,另外,六种模式共用搜索、筛选、排序、Undo/Redo、Validation 与 Used By,完成一种内容后可以沿引用关系继续创建下一种内容

内容主要定义在战斗中的职责
卡牌名称、描述、费用、类型、Target、关键词、美术与 Behavior玩家行动、卡牌生命周期与结算规则
卡组卡牌条目与份数Starting Deck、Reward Deck 与 Master Deck 的内容来源
玩家角色HP、能量、初始卡组、Prefab 与资源显示玩家单位、起始资源与角色表现
敌人HP 范围、Tier、Prefab、Intent 与 Behavior预告并执行敌人行动
状态Buff/Debuff、叠加、上限、衰减、图标与 Behavior持续效果、规则修改、计数与回合响应
遭遇战玩家、敌人阵容、奖励卡组与 Battle Rules把已有内容装配成可以启动和结算的战斗

卡牌是主要创作对象,单角色预设数据库包含 80 张卡牌,覆盖 5 个大类和 4 个稀有度;Party Showcase 使用独立的六张卡牌,包括 Strike、Defend 与四张队友目标卡牌。两套数据共同展示攻击、技能、爆发、支援、诅咒、费用变化、多段攻击、状态施加、卡牌生成、牌堆操作和队伍目标,同时不会把多人玩法专用条目混入原有预设数据库

Workbench Card 模式,展示一张成品卡牌的 Inspector 和实时卡牌预览

左侧的玩家单位定义玩家控制的角色:HP、能量显示、初始卡组、职业标签、prefab 和预览美术,Demo 包含战士、法师、猎人、牧师四条职业线

Workbench Player 模式,展示玩家单位、初始卡组和预览

右侧的敌人单位则定义了AI控制的角色,随包 16 个敌人覆盖普通、精英、Boss 和召唤物,由意图行为流图驱动,而不是通过硬编码 AI 来实现逻辑选择

Workbench Enemy 模式,展示敌人属性、行为和意图预览

状态用于表达增益、减益、计数器和规则修改,随包 30 种状态覆盖持续伤害、护盾、力量/敏捷式数值变化、控制状态、反伤、再生,以及 hook 驱动的规则修改

Workbench Status 模式,展示状态身份、堆叠规则、行为和引用信息

这六类内容以 ScriptableObject 子资产的形式保存在对应数据库中,进入战斗后,GCS 会据此创建彼此独立的卡牌、单位、状态和牌堆实例,HP、费用与状态层数等运行数据只在实例中变化,不会写回原始资产,内容如何组织和启用见数据库管理,静态定义与运行实例的边界见定义与运行实例

Game Card Editor 定义战斗中有哪些对象及其引用关系,Card、Status 与 Enemy 的实际行为则交给 FlowGraph Behavior

用 147 个节点组合玩法行为​

Card、Status 与 Enemy 分别拥有自己的 Behavior,同时共用节点、端口和执行上下文,Entry 决定何时启动,控制线组织顺序和分支,数据线传递单位、卡牌、集合与计算结果,固定字段不足以表达动态规则时,可以将字段切换为端口并接收上游数据

Card、Status、Enemy 三类 Behavior 与 Group 可折叠子图

上图把三类 Behavior 与 Group 放在同一套画布体系中,卡牌从出牌或生命周期入口开始结算,状态在战斗时机与 Hook 中响应,敌人通过 Intent Pattern 选择行动,Group 则整理复杂局部连线而不改变执行关系,147 个可用节点由 145 个核心节点与 2 个 Demo FX 扩展节点组成

节点家族数量主要职责
Entry33在战斗、回合、卡牌、单位、状态、能量或事件时机启动 Behavior
Hook18在伤害、护甲、治疗、能量、抽牌、费用等结果提交前修改或取消
Action27修改 HP、护甲、能量、卡牌、状态、变量、回合和单位
Operator22比较、计算、筛选、排序、选取、合并和转换数据
Get19读取单位、卡牌、牌堆、状态、变量与事件参数
Flow10组织分支、循环、序列、Choice、Switch、Wait 与 Gate
FX7 + 2 Demo请求 VFX、SFX、动画、飘字、位移、闪烁与镜头反馈
Intent6构建敌人意图叶节点、序列、随机与生命阈值模式
Event2发送 GCS 内部事件或可选 GES 事件
Group1整理复杂画布,不改变内部真实执行关系

流图基础解释控制流、数据流、上下文和求值,节点总览提供全部家族入口,另外,三个配方库已经把常见机制整理为 103 组可编辑 FlowGraph

机制范围配方入口
多段攻击、X 费、抽弃牌、发现、重放、变形、费用和卡牌生命周期52 个卡牌配方
毒、灼烧、力量、易伤、荆棘、壁垒、沉默、复活、装备和全局规则30 个状态配方
意图序列、加权随机、Boss 阶段、召唤、分裂、逃跑、牌堆干扰和跨系统事件21 个敌人配方

这些配方只使用正式节点与运行时,复制后可以继续修改端口、字段和目标来源,Behavior 完成后便会在 Play Mode 中产生费用变化、目标选择、伤害、状态、牌堆移动和表现请求

在 Play Mode 中执行并验证规则​

玩家打出卡牌时,GCS 会检查当前 Phase、手牌归属、有效费用、目标、关键词与 Hook,操作成立后执行 Card Behavior,再通过 Controller 更新伤害、护甲、状态与牌堆,卡牌随后进入 Discard 或 Exhaust,需要玩家选择或等待特定流程时,Behavior 可以显式使用 Choice、Wait 或 Gate,普通 VFX、SFX 和动画请求不会自动阻塞阶段

Hunter 职业的实机战斗,画面包含玩家、三名敌人、手牌、能量、牌堆与意图

画面中的玩家与敌人 HP、手牌费用、能量、牌堆数量、敌人意图和当前回合都来自同一份战斗状态,Encounter 决定初始阵容与规则,Behavior 负责结算,战斗状态机持续推进回合、敌人行动、Choice、Reward 与胜负判定

运行范围负责的结果深入阅读
战斗生命周期初始化、玩家回合、敌人阶段、胜利、失败、Choice 与 Reward战斗流程、战斗生命周期
卡牌与牌堆Draw、Hand、Discard、Exhaust 与跨战斗 Master Deck卡牌与牌堆生命周期
目标选择Self、Opponent、All、Selector、随机目标和玩家选择目标选择
状态与 Hook叠加、衰减、来源、Behavior 与提交前修改状态生命周期
表现与等待UI、VFX、音频、动画、Wait、Gate 与 Choice自定义 UI 接入、FX 节点与流程节点
场景与启动Manager、Bootstrap、Battle Board、Hand、HUD 与 Presentation战斗场景、战斗启动

这些系统共同维护最终战斗结果,画面无法解释结果来源时,Game Card Monitor 会把实时状态与执行过程放到同一个诊断窗口中

用 Game Card Monitor 核对结果​

Game Card Monitor 的七个实时页签,覆盖 Battle、Pile、Unit、Phase、Gate、Flow 与 Event

上图中的七个标签页分别提供结果证据和过程证据,Battle、Pile 与 Unit 用于确认当前战斗、牌堆和单位状态,Phase、Gate、Flow 与 Event 则用于判断流程停在何处、哪些节点已经访问,以及对应事件是否触发

标签页可以检查的内容
BattleEncounter、Phase、Turn、玩家、敌人、Pending Intent 与等待状态
PileHand、Draw、Discard、Exhaust 与 Master Deck
UnitHP、护甲、能量、状态层数、存活状态和 Pattern Walk
Phase阶段转换历史与 Choice Pending
GateHolder、Active Reasons 与 Acquire/Release 记录
FlowBehavior Owner、Trigger、访问节点数与同步执行耗时
Event事件时间线、Payload 摘要与订阅者数量

Game Card Monitor说明全部字段和检查顺序,问题索引从启动、出牌、状态、事件与表现异常进入对应修复路径,Monitor 确认战斗实际发生了什么,GCSApi 则让项目代码读取这些结果并提交下一项操作

通过 GCSApi 接入项目并继续扩展​

GCSApi 是项目代码访问战斗的统一入口,HUD、地图、任务、存档和开发工具可以用它启动战斗、提交玩家操作、读取状态、安全修改战斗并订阅事件,项目代码与可视化内容始终驱动同一份战斗状态

最小调用只负责选择 Encounter 和提交玩家意图,具体战斗规则仍然来自内容资产与 Behavior

using TinyGiants.GCS.Runtime;

GCSApi.StartBattle(encounter);
bool played = GCSApi.TryPlayCard(card, target);
GCSApi.EndPlayerTurn();

GCSApi 使用指南按接入顺序给出完整示例,API 参考列出全部公开成员,事件使用指南与事件参考说明 47 个内置事件的订阅方式和精确时机

项目需要专属机制时,扩展仍然使用同一套 FlowGraph 与运行时契约

扩展点适用场景文档
自定义节点增加玩法动作、数据来源、选择器、运算或表现请求自定义节点
自定义端口推断字段输入,声明结果输出、选项与控制分支自定义端口
执行上下文读取输入和目标,通过 Controller 修改状态并发布结果执行上下文
类型、标签与描述 Token增加项目分类、筛选维度与动态卡牌文本扩展卡牌类型、标签与描述 Token
可复制样例从七类家族模板和七个对应成品节点开始扩展自定义节点

四个注册表会自动发现符合契约的节点、卡牌类型、标签与描述 Token,不需要维护手工注册清单,另外,项目同时使用 GameEventSystem 时,可以通过GES 集成在 FlowGraph 与外部事件系统之间建立双向通道

随包 Demo 提供可以拆解的完整成品​

随包 Demo 把创作工具、FlowGraph、运行时、表现接口和扩展方式组合成可以直接运行的成品,Warrior、Mage、Hunter 与 Priest 四条职业线各有 Normal、Elite、Boss 三场单角色战斗;Party Showcase 复用 Hunter 场景构成,通过独立的六个数据库呈现三角色队伍。这种切分保留了原有预设数据,也让多人功能能够作为一个完整样例单独检查

Demo 内容数量组成
可运行场景1312 场职业战斗与 Party Showcase
单角色数据库12 个 Encounter、12 个 Player、16 个 Enemy、80 张 Card、16 个 Deck、30 个 Status原有四条职业线及其完整可复用内容
多角色数据库1 个 Encounter、3 个 Player、3 个 Enemy 定义、6 张 Card、1 个 Deck、5 个 StatusScout 提供共享 Party Tactics,三名玩家对战 Hunter 的 Normal、Elite 与 Boss 敌人

Demo 总览说明数据库与内容规模,Demo 战斗场景展示全部阵容和实机画面,Demo 内容参考与资源布局则把场景结果连接回内容资产及其文件归属

这些成品同时提供工程质量证据,说明同一套工具链已经覆盖多职业构筑、普通战、精英战、Boss 阶段、召唤、复杂状态和战后奖励

面向正式项目的工程边界​

工程维度已提供的基础
Unity 与渲染管线支持 Unity 2021.3 及以上版本,推荐 Unity 6,Demo 支持 Built-in Render Pipeline 与 URP
运行依赖GCS 运行时零第三方依赖,过渡与程序动画使用 TinyGiants 自有 TGTween
内容稳定性ScriptableObject 子资产保存定义,Unity 引用连接内容,Active Database 控制主动发现范围,GUID 支持内容查找
创作保护Game Card Editor 提供 Undo/Redo、Validation、Used By 与跨数据库复制;FlowGraph Editor 检查节点身份、Host 与端口结构
运行一致性Controller 统一提交修改,Hook 在提交前修改或取消,事件广播变化,显式 Gate 等待表现完成
诊断能力Monitor 显示 Battle、Pile、Unit 快照,并记录 Phase、Gate、Flow 与 Event 历史

安装与初始化给出支持版本、导入结果和首场景检查,项目结构说明包内容与项目数据的边界,确认这两项后即可按当前目标进入教程、创作指南、参考手册或故障排查

选择下一步​

评估 GCS 时先运行第一场战斗或 Demo 场景,准备接入项目时进入第二场战斗、内容创作或代码集成,其余主题按当前任务选择

当前目标推荐入口
体验一场完整战斗第一场战斗
从空场景创建自定义战斗第二场战斗
理解内容、Behavior 与运行机制数据库管理、流图基础、战斗流程、运行时概览
创建卡牌与战斗内容卡牌、卡组、玩家角色、敌人、状态、遭遇战
查找节点或现成机制节点总览、卡牌配方、状态配方、敌人配方
接入 UI 与项目代码GCSApi 使用指南、自定义 UI 接入、事件使用指南
扩展节点与内容类型自定义节点、自定义端口、执行上下文
排查创作或运行问题问题索引、内容创作问题、运行时问题