跳到主要内容

概览

Guide

GameCardSystem(GCS)是面向 Unity 的卡牌肉鸽战斗框架,可视化编辑战斗内容与规则,并通过 API 和事件接入项目系统

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

上图展示了 GCS 卡牌肉鸽框架的完整可视化构筑体系,在 Game Card Editor 中创建的卡牌、状态和敌人通过 FlowGraph Editor 配置 Behavior,进入 Play Mode 后可在 Game Card Monitor 追踪同一份内容的结算与等待记录,再回到对应资产调整规则

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

初始化场景会准备 Manager、Bootstrap 与六类内容数据库,Battle Runtime 运行这些数据库定义的遭遇战

上图中的 Battle Runtime 同时提供战斗诊断和代码接入,Monitor 帮助查找需要修改的 Behavior,自定义 HUD、地图、任务和存档可通过 GCSApi 与 Events 读取或响应战斗状态

能力范围核心规模对项目的直接价值
可视化内容创作6 种编辑模式在同一窗口创建卡牌、卡组、玩家、敌人、状态与遭遇战
可视化玩法编排148 个节点条目、103 组机制配方用节点组合表达卡牌、状态与敌人行为
运行时与代码接入176 个 GCSApi 公开成员名、48 个内置事件读取、控制、保存、恢复和扩展战斗,连接项目流程与自定义 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 模式,展示玩家单位、初始卡组和预览

右侧的敌人单位通过意图 Behavior 选择行动,随包 16 个敌人覆盖普通、精英、Boss 与召唤物

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

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

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

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

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

用节点组合玩法行为​

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

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

上图中的卡牌、状态与敌人共用 FlowGraph 画布,卡牌从出牌或生命周期入口开始结算,状态通过 Entry 与 Hook 响应战斗,敌人通过 Intent Pattern 选择行动,编排这些行为时可以使用 146 个核心节点与 2 个 Demo FX 扩展节点,并用 Group 收拢相关节点,保留原有执行关系

节点家族数量主要职责
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战斗场景、战斗启动
保存与继续Run 与稳定战斗检查点、本地槽位、已有存档系统及场景恢复存档与恢复

这些系统共同维护最终战斗结果,画面无法解释结果来源时,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 参考列出全部公开成员,事件使用指南与事件参考说明 48 个内置事件的订阅方式和精确时机

游戏需要在关闭后继续时,GCSSaveController 将保存并退出、继续游戏按钮连接到稳定检查点,检查点保留有序牌堆、单位状态、状态与 Hook 进度、敌人计划、延迟效果和待选奖励,存档与恢复同时说明如何把检查点合并到项目已有的存档记录

项目需要专属机制时,扩展仍然使用同一套 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 LTS 需使用 2021.3.18f1 或之后的补丁,支持 Unity 2022.3 LTS 与 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 接入、事件使用指南
保存进度并在以后继续存档与恢复
扩展节点与内容类型自定义节点、自定义端口、执行上下文
排查创作或运行问题问题索引、内容创作问题、运行时问题