核心内容摘要
新手必看!Emotion2Vec+ Large语音情感识别系统保姆级入门指南
1 前述中文名AA游戏脚本命名无任何含义仅是标识符英文名AA Game Script简 称AA脚本AAGS作 者ygluu码客WeChat: 48092788AA脚本旨为为游戏提供一种更加简单而又灵活的配置方式。
注
本人在其他博文中提到的数据名在本文中统称为变量名两者等效
本文亦是本人过去博客知识点的系统化
总结相关参考见附录
恕作者见识有限如有雷同纯属巧合请留言必删之附图 条件系统原理2 ON-DO模型在游戏开发当中多数策划配置需求不外乎当什么条件满足时做什么事情而游戏有他独有的数据形态从而造就了一种既定模式所以本文将这种模式抽象为ON-DO模型。
ON-DO模型概念词汇On在某种条件达成的时候Do做什么事情Cond条件表达式如(A
(B
Act动作表达式如A11;B-10ON-DO模型三步骤
定义变量
完善条件函数和编写条件表达式
完善动作函数和编写动作表达式3 条件表达式规范四则运算 - * /比较运算 逻辑运算 | and or优先级( )变量: 见附录变量表函数: 见附录函数库常量abc 123 ...消耗动作(减号)-注减号表示能够扣减指定的物品或数据如玩家等级10 入场卷-10 金币-20示例示例1日期
时间18:00:00 事件(进入地图) 地图(名称花山)示例2等级10 金币-10 上山卡-20示例3等级20 (金币-30 | 上山卡-
示例4当前地图花山 杀恶犬1004 动作表达式规范四则运算 - * /累计运算 - * / - * /赋值(等于号或冒号均可) :分隔符(分号);优先级( )函数见附录函数库示例:示例1攻击100;防御20示例2: 金币20;灵芝20示例3消耗(金币:100,银币:
;跳转(南天门,103,
// 函数参数规范由函数定义示例4奖励(金币:100,银币:
;奖励(
// 奖励包里的配置ID示例6: 充值188;事件(充值) // 设置充值变量触发充值事件示例6: 地图Map.Name;怪物Mon.Name;怪物类型红怪;事件(杀怪) // 设置杀怪数据触发杀怪事件5 流程控制表达式规范活动系统设计规范流程控制是ON-DO表达式对组合的文本文件如ctrl.aa默认逐对执行。
ON-OR和DO-OR表达式对是或关系两对或多对时表示任意一对满足即可单对则还是与关系。
示例活动表达式Name每日BOSSON: 时间18:25DO:创建地图(花山, 安全地图
// 地图设置为非战斗状态刷怪(巨兽, x, y, z)入口图标(花山); 跑马灯(巨兽出来捣乱了快来击杀它吧)聊天(世界频道, 巨兽出来捣乱了快来击杀它吧)ON: 时间18:30DO:地图变量(花山, 安全地图
// 18:30开始战斗跑马灯(巨兽出来捣乱了快来击杀它吧)聊天(世界频道, 巨兽出来捣乱了快来击杀它吧)// 如果超时则ON-OR: 时间19:00DO-OR: GOTO(清场)// 如果死亡则ON-OR: 死亡怪物巨兽DO-OR: 奖励(金币:100,药水
;GOTO(清场)Label清场// label之后无条件的可以不写表达式, 也可以不写ON:ON:DO: 清场()7 养成线系统设计规范事实上任务系统是比较复杂的养成线系统养成线有一个特征是逐级升阶且养成线一般有属性加成上线重算和物品奖励一次性。
用两对ON—DO表达式和一个属性加成表达式描述用模块名“等级”作为等级变量每次升级则自增如下表所示8 变量定义规范变量表var.xlsxCfgId: 变量ID如果不填则使用CfgName计算CRC64碰撞则提示改名CfgName: 变量名用于配置描述全局唯一ShowName: 显示名用于UI等不填默认等于CfgNameReset: 重置周期不同和0表示不重置1每日重置2每周重置3每月重置4每年重置Valid: 有效期不填表示永久有效如“10月1~10月7日”表示每年国庆有效Cond条件表达式非空则系统会依据条件执行Act动作表达式Act: 动作表达式Init: 初始值默认0整形值有效Min: 最小值默认0整形值有效Max: 最大值默认int64的最大值整形值有效注变量类型有string、int
obj无需定义设定以最后一次赋值的类型为准。
9 函数定义规范函数名(参数1,参数2,..)注意
所有函数默认返回int640表示失败等于布尔值的false
函数参数规范由各函数定义10 配置表规范基础字段类型int: 64位有符号整形bool: 布尔型string: 字符串型Cond: 条件表达式Act: 动作表达式容器字段类型arr: 数组, 类型由第一个元素的基础字段类型决定可自嵌套如map: 哈希表key-value键值对key类型可为int和stringvalue类型位基本字段类型可自嵌套和嵌套arr如}通用字段名CfgId: int配置ID全局唯一int64可规划好各表的ID分段范围表内自增不填则系统默认使用CfgName字段的crc64值碰撞则提示改名如果需要分组设置的每1万一个ID段如2组ID10000100003组ID100001000010000, 即可根据分组信息获取配置内容CfgName: string配置名全局唯一必填字符串型CfgType: int配置类型如药材、货币、武器、服装、红怪、CfgFlagint配置标志即CfgType的细分ShowName: string显示名称用于UI多国语言等不填则默认使用CfgName如果多国语言使用“/”分隔Prop: map该配置对象具有的自身属性如地图表{可穿人false,可穿怪false}Attr: map拥有者获得的属性加成如物品表{防御100,攻击200}Cond: Cond条件表示式Act: Act动作表达式条件达成均执行ActAtrr: Act属性加成字段每次上线获取合并ActOnce: Act单次执行的动作表达式条件达成的时候仅执行一次的示例11 系统支撑AA脚本的系统支撑
实现原理参考附录5《万物皆ID、万事皆事件、万人皆数据》。
如果你的游戏是用Lua来实现业务逻辑的可以在设计期使用工具将AA脚本的配置表按接口规范翻译成lua脚本参考附录5>附录1 变量库•时间•日期•时间日期•年•月•日•天•星期•时•分•秒•地图 // 当前所在地图•X // 当前位置X坐标•Y // 当前位置Y坐标•Z // 当前位置Z坐标•充值 // 当前充值变量亦即最后一次充值可自行补充完善中...附录2 事件库•年 // 时间信息改变•月•日•天•星期•时•分•秒•上线•下线•断线•进入地图•离开地图•死亡 // 被对手杀死•杀死 // 刚刚杀死一个对手•复活•走•跑•跳•飞•路过 // 从对方x距离走过•碰、对话 // 碰到对方、对话•踩、穿 // 踩到或穿过对方可自行补充完善中...附录3 条件函数库•事件(A,B,...) // 判断事件是否包含所列值•消耗(A:100,B:200,...)•对方(名字, 伏地魔)、对方(类型, 怪物) // 判断PK对方指定的变量是否等于预期值•地图(名字, 南天门)、地图(类型, 天界) // 判断地图指定的变量是否等于预期值可自行补充完善中...附录4 动作函数库•事件(A,B,...) // 依次触发所列事件•消耗(A:100,B:200,...)•奖励(A:100,B:200,...)、奖励(