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