8.7 KiB
8.7 KiB
| 1 | 1.设计目的 | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | ||||||||||||||||||||||||||
| 3 | 优化版本并行开发效率,缩短特殊玩法需求频繁迭代功能的开发周期。 | |||||||||||||||||||||||||
| 4 | ||||||||||||||||||||||||||
| 5 | 2.工作流 | |||||||||||||||||||||||||
| 6 | ||||||||||||||||||||||||||
| 7 | 对应负责人开启活动需求统筹表,下游各组资产制作完成后,根据需求统筹表描述放到对应路径提交上传,策划通过下列几个表格进行配置好索引表并上传,在引擎内使用导入工具检查资源。 | |||||||||||||||||||||||||
| 8 | ||||||||||||||||||||||||||
| 9 | 3.配置 | |||||||||||||||||||||||||
| 10 | ||||||||||||||||||||||||||
| 11 | 活动玩法会涉及到场景资源,镜头资源,UI资源,特效资源,所有资源会配表做静态字典映射,在开启活动模块式根据映射加载对应资源,行为树逻辑编辑器在节点引用时会从对应字典内进行查找引用。 | |||||||||||||||||||||||||
| 12 | ||||||||||||||||||||||||||
| 13 | 3.1 行为树配置表(自定义name) | |||||||||||||||||||||||||
| 14 | ||||||||||||||||||||||||||
| 15 | 工作表1:玩法关卡配置表,用来索引玩法场景的逻辑ID,场景资源,地图坐标打点list,默认主相机 | |||||||||||||||||||||||||
| 16 | 打点功能编辑器 | |||||||||||||||||||||||||
| 17 | Doc | 行为树ID | 关卡备注 | 场景名称 | 地图打点组 | 延迟关闭加载图 | 默认相机ID | ... | ||||||||||||||||||
| 18 | Name | ActivityStageID | Doc | SceneName | MapInfo | CloseLoadingDelay | CameraID | |||||||||||||||||||
| 19 | Type | Int | String | String | ID | Float | Int | |||||||||||||||||||
| 20 | ||||||||||||||||||||||||||
| 21 | 工作表2:行为树逻辑表,配置行为树头文件和行为树逻辑本身。 | |||||||||||||||||||||||||
| 22 | ||||||||||||||||||||||||||
| 23 | 行为树id | 说明(注释) | 节点 | 节点 | 节点 | 节点 | 节点 | 节点 | ... | 行索引id | ||||||||||||||||
| 24 | 301502490 | 行为树头文件 | 平行 | ①【关卡ID+0】为头文件,里面的逻辑只执行一次,用来声明初始数据或执行一些初始化逻辑。 | ||||||||||||||||||||||
| 25 | 组合 方法:通用关卡赋值 | ②【关卡ID】后开始是行为树正文,主要写正式逻辑,默认1秒运行60次(根据性能需求可调整到1秒20次)。 | ||||||||||||||||||||||||
| 26 | 组合 方法:关卡初始化 | ③【行索引id】会在当前行拥有功能节点时打表自动生成,方便报错时定位行数。 | ||||||||||||||||||||||||
| 27 | 后面是你自己的逻辑 | ④【组合方法】封装函数或子树,类似行为树的子树统一处理一些通用赋值,比如开场是否隐藏UI,是否播放某个入场动画,对多字典进行赋值等等。 | ||||||||||||||||||||||||
| 28 | ⑤ 行为树默认包含四个基础执行节点: | |||||||||||||||||||||||||
| 29 | 30150249 | 行为树逻辑正文 | 顺序 | ● 平行:执行该节点下的所有子节点并返回true,无论子节点是否执行成功。 | ||||||||||||||||||||||
| 30 | 组合 方法:关卡预准备 | ● 顺序:该节点下一旦有子节点返回false则停止执行返回false,子节点全部返回true该节点才返回true。 | ||||||||||||||||||||||||
| 31 | 平行 | ● 选择:该节点下一旦有子节点返回true则停止执行返回true,子节点全部返回false该节点才返回false。 | ||||||||||||||||||||||||
| 32 | 组合 方法:关卡通用集合 | ● 乱选:随机执行一个子节点,结果为true则返回true,结果false返回false。 | ||||||||||||||||||||||||
| 33 | 后面是你自己的逻辑 | ⑥ 需要一个组合方法在头文件里分别在黑板创建1#(当前行为树域)2#(角色域)3#(自定义域)4#(系统全局域),UI,相机,特效,演出配置的映射字典 | ||||||||||||||||||||||||
| 34 | ~ | (或是在外部Data管理,功能节点默认找对应字典)。 | ||||||||||||||||||||||||
| 35 | ||||||||||||||||||||||||||
| 36 | 待讨论: | |||||||||||||||||||||||||
| 37 | 1.行为树运行帧数是否需要做限制。如果限制,会提升性能,但后续一些需要精准tick的逻辑无法实现,比如一些音游点击类的活动。如果不限制,需要对策划配置进行约束比如禁止使用行为树通写每帧大量物体set坐标的逻辑来控制对象移动 | |||||||||||||||||||||||||
| 38 | 2.行为树表管理,每个策划一张自己的行为树表区分文件名,如果需要用就自己配置自己的,表头和注释从模板表里同步到策划表,这样可以防止并行开发时互相占用表格。 | |||||||||||||||||||||||||
| 39 | 3.索引ID是否统一用int(查询性能以及命名统一性),需要额外做一个ID段分配器,给策划分配自己的独立ID段。 | |||||||||||||||||||||||||
| 40 | ||||||||||||||||||||||||||
| 41 | 工作表3:行为树进行节点查询与说明,主要是注释用 | |||||||||||||||||||||||||
| 42 | 例: | |||||||||||||||||||||||||
| 43 | 节点类型 | 描述 | 中文节点映射 | 参数1 | 参数2 | 参数3 | 参数4 | 参数5 | ||||||||||||||||||
| 44 | DoGetTime | 参数1(帧数) = 当前关卡时间(帧数) + 参数2 (秒 转 帧数) | int赋值时间 | int 帧数存值 | fix 时间 单位秒 | |||||||||||||||||||||
| 45 | CheckNpcCamp | 比较阵营是否相等或包含参数1NPC参数2阵营 ,(包含、相交、相等都是队友) | 比较阵营 | int 自定义 | int 自定义 | |||||||||||||||||||||
| 46 | DoSetFightTarget | 设置Npc1(参数1)的攻击目标为Npc2(参数2) 参数1:Npc1 参数2:Npc2(攻击目标) | 设置战斗目标 | int Npc1 | int Npc2的Id | |||||||||||||||||||||
| 47 | ||||||||||||||||||||||||||
| 48 | ||||||||||||||||||||||||||
| 49 | ||||||||||||||||||||||||||
| 50 | 工作表4:组合节点说明,同上 | |||||||||||||||||||||||||
| 51 | 例: | |||||||||||||||||||||||||
| 52 | 组合树ID | 组合树类型 | 注释 | |||||||||||||||||||||||
| 53 | String | 节点名称 | ||||||||||||||||||||||||
| 54 | 200009 | 方法:关卡初始化 | ||||||||||||||||||||||||
| 55 | 200010 | 方法:关卡预准备 | ||||||||||||||||||||||||
| 56 | ||||||||||||||||||||||||||
| 57 | ||||||||||||||||||||||||||
| 58 | 3.2 ActivityUiLut | |||||||||||||||||||||||||
| 59 | ||||||||||||||||||||||||||
| 60 | UI资源,填写需要使用的关卡和映射ID,可以填String | |||||||||||||||||||||||||
| 61 | 关卡ID | UI映射ID | Prefab路径 | |||||||||||||||||||||||
| 62 | int | int | path | |||||||||||||||||||||||
| 63 | ||||||||||||||||||||||||||
| 64 | ||||||||||||||||||||||||||
| 65 | 3.3 ActivityCameraLut | |||||||||||||||||||||||||
| 66 | ||||||||||||||||||||||||||
| 67 | 相机资源,配置同上 | |||||||||||||||||||||||||
| 68 | 关卡ID | Cam映射id | Prefab路径 | |||||||||||||||||||||||
| 69 | int | int | path | |||||||||||||||||||||||
| 70 | ||||||||||||||||||||||||||
| 71 | ||||||||||||||||||||||||||
| 72 | 3.4 ActivityFXLut | |||||||||||||||||||||||||
| 73 | ||||||||||||||||||||||||||
| 74 | 特效资源,配置同上 | |||||||||||||||||||||||||
| 75 | 关卡ID | FX映射id | Prefab路径 | |||||||||||||||||||||||
| 76 | int | int | path | |||||||||||||||||||||||
| 77 | ||||||||||||||||||||||||||
| 78 | ||||||||||||||||||||||||||
| 79 | 3.5 ActivityMapInfoLut | |||||||||||||||||||||||||
| 80 | ||||||||||||||||||||||||||
| 81 | 地图打点存储表,需要对应的地图点位编辑器 | |||||||||||||||||||||||||
| 82 | infoID | 点位ID | 坐标 | 点位ID | 坐标 | 点位ID | 坐标 | 点位ID | 坐标 | |||||||||||||||||
| 83 | int | String | Vector3 | String | Vector3 | String | Vector3 | String | Vector3 | |||||||||||||||||
| 84 | ||||||||||||||||||||||||||
| 85 | ||||||||||||||||||||||||||
| 86 | 3.6 ActivityDialogInfoByStage | |||||||||||||||||||||||||
| 87 | ||||||||||||||||||||||||||
| 88 | 活动文本UI配置索引表,文本配置ID就是下面DialogInfo配置表的name | |||||||||||||||||||||||||
| 89 | ||||||||||||||||||||||||||
| 90 | 玩法关卡ID | 对应文本配置表 | ||||||||||||||||||||||||
| 91 | int | String | ||||||||||||||||||||||||
| 92 | ||||||||||||||||||||||||||
| 93 | ||||||||||||||||||||||||||
| 94 | 3.7 DialogInfo+自定义序号 | |||||||||||||||||||||||||
| 95 | ||||||||||||||||||||||||||
| 96 | 具体文本配置 | |||||||||||||||||||||||||
| 97 | 与行为树一样,每个策划一张自己的dialoginfo,需要先跟本地化管线讨论 | |||||||||||||||||||||||||
| 98 | id | isMask | MaskTarget | ClickKey | DialogType | UiType | PrefabPath | Name | Text | Duration | Params1 | Params2 | Params3 | Params4 | Params5 | |||||||||||
| 99 | 配置ID | 是否开启蒙层 | 蒙层位置 | 关闭蒙层键值 | 战中类型 | UI样式,用来改变同类型战中的样式 | UI预制体路径 默认不填写 | 显示角色名 | 正文 支持富文本 | 显示时间 | 特殊参数1 | 特殊参数2 | 特殊参数3 | 特殊参数4 | 特殊参数5 | |||||||||||
| 100 | int | bool | 万分比屏幕坐标 | int | int | int | String | 对话正文 | float | |||||||||||||||||
| 101 | ||||||||||||||||||||||||||
| 102 | 行为树对应功能节点 | |||||||||||||||||||||||||
| 103 | 节点名称 | 参数1 | ||||||||||||||||||||||||
| 104 | DoShowDialog | DialogInfoID | ||||||||||||||||||||||||
| 105 | int | int | ||||||||||||||||||||||||
| 106 | ||||||||||||||||||||||||||
| 107 | 4.QA&Debug | |||||||||||||||||||||||||
| 108 | ||||||||||||||||||||||||||
| 109 | 1.上传对应行为树前需要策划自检,流程是否完可以整跑通,过程中是否有节点报错,根据对应报错ID行进行Debug | |||||||||||||||||||||||||
| 110 | 2.资源检查,需要策划导入时自行检查资源是否与需求对应,是否在导入时出现丢失索引。 | |||||||||||||||||||||||||
| 111 | 3.提测QA后,QA如发现流程卡死或报错,需要先向策划负责人提单,策划检查判断确定是非配置问题,再向其他对应下游提出修改需求。 |