当前位置:AIGC资讯 > AIGC > 正文

AIGC:基于ON-DO模型的AA游戏脚本规范(AA Game Script)

AIGC:基于ON-DO模型的AA游戏脚本规范(AA Game Script)

ygluu 卢益贵

关键词:游戏脚本、lua脚本、AIGC、游戏前端服务端、游戏策划、游戏配置表、红点系统

目录

一、前言

二、ON-DO模型

三、变量名规范

四、ON表达式规范

五、DO表达式规范

六、流程控制脚本规范(ON-DO表达式对)

七、系统变量列表

八、系统事件值列表

九、系统函数列表

十、游戏对象配置抽象规范

十一、成长线抽象规范

十二、结束语

十三、附录

一、前言

引用旧图抛砖引玉:

图 1.1 AIGC在游戏应用需要模型抽象

不要指望AI能0-1的输出一个完整无误的游戏客户或服务端代码及配置表。AI和游戏中间必需有一层抽象来简化AI的操作。

像lua这样的脚本是一门泛行业的脚本,她非常神通但又逻辑性太强,对于游戏策划来说能掌控好她也不容易。

本文介绍一种以特定游戏需求为抽象的脚本规范,均可以用文本表达式或者lua脚本完成。她的目的是抽象和简化配置逻辑,让策划和AI可以简单的在配置层面即可完成某种特定类型游戏脚本的设定(根据82法则,抽象能解决大于等于80%的需求即可,另外小于20%的需求可以特定解决)。

本文起名AA游戏脚本(AA Game Script),简称AA脚本。命名无任何含义仅是标识符。

相关参考见附录。在本人以前博文中提到的数据名,在本文统称变量名,两者等效。本文亦是本人过去博客知识点的系统化总结。

注:如有雷同纯属巧合,请留言必删之。

二、ON-DO模型

在游戏开发当中,多数策划配置需求不外乎:当什么条件满足时做什么事情,所以本文将这种模式抽象为ON-DO模型。ON-DO模型基于一个叫数据引擎的核心组件,她是游戏中所有数据的提供者和事件驱动者及任务执行者。

图2.1 玩家数据和行为纳入数据引擎范畴

图2.2 ON表达式的监听和触发(观察者模式)

on-do模型概念词:

on:在某种条件达成的时候
do:做什么事情

on-exp:on表达式,如:(A>10)&(B<0)
do-exp:do表达式,如:A+11;B-10

on-obj:on对象,即on-exp表达式解析以后的程序可执行对象
do-obj:do对象,即do-exp表达式解析以后的程序可执行对象

on-do 配置样例:

图2.2 配置层的ON-DO表达式

ON-DO 模型同样适用于客户端的红点系统:

图2.3

三、变量名规范

变量定义是ON-DO模型前提,可设定变量的初始值、最大和最小值、清零周期、有效期:

图3.1 变量表定义

1、变量名为“杀XXX”的,表示杀死名称为XXX的怪物。

2、如果不在变量表定义的变量一般作为临时变量处理,不保存,玩家下线失效。

3、如果不设定有效期的默认终身有效。

4、如果不设定最小/最大/初始值的默认是0,0表示无最大值要求。

5、变量无所不包:属性变量、系统变量、自定义变量等。

6、策划或AI可以在变量表自定义变量名称,在ON表达式中使用,在DO表达式中修改变量值。

四、ON表达式规范

ON表达式由变量名(数据名称、事件)、变量值(数字、字符串、时间名称)、数据函数、四则运算(+-*/)、比较运算(>=<)、逻辑运算(&|)、括号(())组成。

例1:日期>=2023-01-01 & 时间>18:00:00 & 事件=进入地图 & 当前地图=花山

例2:等级>=10 & 金币-10 & 上山卡-20

例3:等级>=20 & (金币-30 | 上山卡-30)

例4:当前地图=花山 & 杀恶犬>=100

注:金币和入谷卷-x表示某物品消耗多少达成的条件,例3所示:当玩家等级大于20级时,消耗30枚金币或者消耗30张入谷卷即可做xxx任务。

五、DO表达式规范

DO表达式由变量名、执行函数、四则运算(+-*/)、运输值、分号(;)。

例1:等级+1; 金币+10; 最大攻击+10; 跳转(恶犬洞)

注:

1、物品+-*/表示基于物品当前数量为基数

2、执行函数是游戏任务的执行者,如“跳转(恶犬洞) ”表示跳转到恶犬洞地图。

六、流程控制脚本规范(ON-DO表达式对)

例1 经验值升级:

ON: 经验值>=1000  

DO: 等级+1; 经验值-1000

例2:等级升级奖励和属性加成

ON: 任务等级=0 & 事件=NPC对话 & NPC=新人甲      

DO: 任务等级=1; 经验+1000; 金币+2000


ON: 任务等级=1 & 事件=NPC购买 & NPC=弓弩商      

DO: 任务等级=2; 经验+2000; 金币+3000


ON: 任务等级=2 & 事件=杀怪 & 杀怪>=10                

DO: 任务等级=3; 经验+3000; 金币+4000


ON: 任务等级=3 & 事件=杀怪 & 杀西人怪>=3            

DO: 任务等级=4; 经验+4000; 金币+5000

例3:流程控制脚本(重点)

// AA脚本示例(ON-DO模型)

Name:每日BOSS

ON: 时间>=18:25

DO:

创建地图(花山, 安全地图=1)

刷怪(巨兽, x, y, z)

入口图标(花山); 跑马灯(巨兽出来捣乱了,快来击杀它吧!)

聊天(世界频道, 巨兽出来捣乱了,快来击杀它吧!)

ON: 时间>=18:30

DO:

地图变量(花山, 安全地图=0)

跑马灯(巨兽出来捣乱了,快来击杀它吧!)

聊天(世界频道, 巨兽出来捣乱了,快来击杀它吧!)

ON-OR: 时间>=19:00

DO-OR: GOTO(清场)

ON-OR: 死亡怪物=巨兽

DO-OR: GOTO(清场)

Label:清场

// label之后无条件的可以不写表达式, 也可以不写ON:

ON: 

DO: 清场()

注:

1、使用ON-DO表达式对可以完成流程控制脚本。

2、连续的ON-OR和DO-OR表达式对表示其中一对满足即跳到下一个流程步骤。

七、系统变量列表

事件、充值(当次)、当前地图、当前敌人、当前怪物、当前物品、当前技能、购买支出、卖出收入、日期、时间、开服天数等。

可根据实际游戏业务需求设定,由程序层维护。

八、系统事件值列表

出生、上线、离线、进入地图、离开地图、杀怪、走路、跑步、飞、NPC对话、NPC购买。

可根据实际游戏业务需求设定事件名称,由程序层触发。

九、系统函数列表

最大(a,b)、最小(a,b)、随机(x)、随机(a, b)、跳转(地图id_name)、广播(消息)、触发(事件名称)等、刷怪(怪物名, x, y, z)、掉落(物品名)、聊天(世界频道, 内容) 、地图变量(地图id_name, 变量=123)。

可根据实际游戏业务需求完善函数功能,由程序层执行。

十、游戏对象配置抽象规范

图10.1 游戏对象抽象规范

按照图10.1的配置抽象,可以很好的融入到ON-DO模型当中,对象id_name可以直接用在on-do表达式中。对象具有的游戏行为特征由ai-ids设置。

注:地图和掉地上的物品也可以有AI,比如有人进入魔性地图时地图会和人对话,地上的武器也可以向路人喊话。

十一、成长线抽象规范

按数值升级的递进式模型来抽象,包含任务、皮肤、爬塔等。

图11.1 成长线抽象

凡是有等级的,只有激活的那一级有效。每个成长线类型自动有含有以“等级”为结尾的变量名,这样可以用于ON-DO表达式,如皮肤“李白白”自动有变量“李白白等级”。

十二、结束语

本文以xls表和txt文本为例,也可以使用lua表来表示。

本规范尚未健全,还需进一步完善。基于统一标准的抽象模型,不管是对于策划还是AI来说要容易理解和实现得多。

十三、附录

附录1:

游戏高度可配置化(一)通用数据引擎(data-e)及其在模块化游戏开发中的应用构想图解_游戏开发 数值可配置-CSDN博客

附录2:

游戏高度可配置化(二)用“模型抽象”化解游戏策划和程序员的江湖恩怨-CSDN博客

附录3:

游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发-CSDN博客

附录4:

浅谈数学模型在UGC/AIGC游戏数值配置调参中的应用(AI智能体)_游戏ai 数值-CSDN博客

附录5:

【数据中台战略】可配置化数学建模的应用案例图解_信息系统建模应用案例-CSDN博客

总结

AIGC:基于ON-DO模型的AA游戏脚本规范(AA Game Script)


ygluu 卢益贵


关键词:游戏脚本、lua脚本、AIGC、游戏前端服务端、游戏策划、游戏配置表、红点系统


目录


一、前言


二、ON-DO模型


三、变量名规范


四、ON表达式规范


五、DO表达式规范


六、流程控制脚本规范(ON-DO表达式对)


七、系统变量列表


八、系统事件值列表


九、系统函数列表


十、游戏对象配置抽象规范


十一、成长线抽象规范


十二、结束语


十三、附录




一、前言


引用旧图抛砖引玉:



图 1.1 AIGC在游戏应用需要模型抽象


不要指望AI能0-1的输出一个完整无误的游戏客户或服务端代码及配置表。AI和游戏中间必需有一层抽象来简化AI的操作。


像lua这样的脚本是一门泛行业的脚本,她非常神通但又逻辑性太强,对于游戏策划来说能掌控好她也不容易。


本文介绍一种以特定游戏需求为抽象的脚本规范,均可以用文本表达式或者lua脚本完成。她的目的是抽象和简化配置逻辑,让策划和AI可以简单的在配置层面即可完成某种特定类型游戏脚本的设定(根据82法则,抽象能解决大于等于80%的需求即可,另外小于20%的需求可以特定解决)。


本文起名AA游戏脚本(AA Game Script),简称AA脚本。命名无任何含义仅是标识符。


相关参考见附录。在本人以前博文中提到的数据名,在本文统称变量名,两者等效。本文亦是本人过去博客知识点的系统化总结。


注:如有雷同纯属巧合,请留言必删之。


二、ON-DO模型


在游戏开发当中,多数策划配置需求不外乎:当什么条件满足时做什么事情,所以本文将这种模式抽象为ON-DO模型。ON-DO模型基于一个叫数据引擎的核心组件,她是游戏中所有数据的提供者和事件驱动者及任务执行者。



图2.1 玩家数据和行为纳入数据引擎范畴



图2.2 ON表达式的监听和触发(观察者模式)


on-do模型概念词:



on:在某种条件达成的时候
do:做什么事情



on-exp:on表达式,如:(A>10)&(B<0)
do-exp:do表达式,如:A+11;B-10



on-obj:on对象,即on-exp表达式解析以后的程序可执行对象
do-obj:do对象,即do-exp表达式解析以后的程序可执行对象



on-do 配置样例:



图2.2 配置层的ON-DO表达式


ON-DO 模型同样适用于客户端的红点系统:



图2.3


三、变量名规范


变量定义是ON-DO模型前提,可设定变量的初始值、最大和最小值、清零周期、有效期:



图3.1 变量表定义


1、变量名为“杀XXX”的,表示杀死名称为XXX的怪物。


2、如果不在变量表定义的变量一般作为临时变量处理,不保存,玩家下线失效。


3、如果不设定有效期的默认终身有效。


4、如果不设定最小/最大/初始值的默认是0,0表示无最大值要求。


5、变量无所不包:属性变量、系统变量、自定义变量等。


6、策划或AI可以在变量表自定义变量名称,在ON表达式中使用,在DO表达式中修改变量值。


四、ON表达式规范


ON表达式由变量名(数据名称、事件)、变量值(数字、字符串、时间名称)、数据函数、四则运算(+-*/)、比较运算(>=<)、逻辑运算(&|)、括号(())组成。



例1:日期>=2023-01-01 & 时间>18:00:00 & 事件=进入地图 & 当前地图=花山


例2:等级>=10 & 金币-10 & 上山卡-20


例3:等级>=20 & (金币-30 | 上山卡-30)


例4:当前地图=花山 & 杀恶犬>=100



注:金币和入谷卷-x表示某物品消耗多少达成的条件,例3所示:当玩家等级大于20级时,消耗30枚金币或者消耗30张入谷卷即可做xxx任务。


五、DO表达式规范


DO表达式由变量名、执行函数、四则运算(+-*/)、运输值、分号(;)。



例1:等级+1; 金币+10; 最大攻击+10; 跳转(恶犬洞)



注:


1、物品+-*/表示基于物品当前数量为基数


2、执行函数是游戏任务的执行者,如“跳转(恶犬洞) ”表示跳转到恶犬洞地图。


六、流程控制脚本规范(ON-DO表达式对)


例1 经验值升级:



ON: 经验值>=1000  


DO: 等级+1; 经验值-1000



例2:等级升级奖励和属性加成



ON: 任务等级=0 & 事件=NPC对话 & NPC=新人甲      


DO: 任务等级=1; 经验+1000; 金币+2000



ON: 任务等级=1 & 事件=NPC购买 & NPC=弓弩商      


DO: 任务等级=2; 经验+2000; 金币+3000



ON: 任务等级=2 & 事件=杀怪 & 杀怪>=10                


DO: 任务等级=3; 经验+3000; 金币+4000



ON: 任务等级=3 & 事件=杀怪 & 杀西人怪>=3            


DO: 任务等级=4; 经验+4000; 金币+5000



例3:流程控制脚本(重点)



// AA脚本示例(ON-DO模型)



Name:每日BOSS



ON: 时间>=18:25


DO:


创建地图(花山, 安全地图=1)


刷怪(巨兽, x, y, z)


入口图标(花山); 跑马灯(巨兽出来捣乱了,快来击杀它吧!)


聊天(世界频道, 巨兽出来捣乱了,快来击杀它吧!)



ON: 时间>=18:30


DO:


地图变量(花山, 安全地图=0)


跑马灯(巨兽出来捣乱了,快来击杀它吧!)


聊天(世界频道, 巨兽出来捣乱了,快来击杀它吧!)



ON-OR: 时间>=19:00


DO-OR: GOTO(清场)



ON-OR: 死亡怪物=巨兽


DO-OR: GOTO(清场)



Label:清场


// label之后无条件的可以不写表达式, 也可以不写ON:


ON: 


DO: 清场()



注:


1、使用ON-DO表达式对可以完成流程控制脚本。


2、连续的ON-OR和DO-OR表达式对表示其中一对满足即跳到下一个流程步骤。


七、系统变量列表


事件、充值(当次)、当前地图、当前敌人、当前怪物、当前物品、当前技能、购买支出、卖出收入、日期、时间、开服天数等。


可根据实际游戏业务需求设定,由程序层维护。


八、系统事件值列表


出生、上线、离线、进入地图、离开地图、杀怪、走路、跑步、飞、NPC对话、NPC购买。


可根据实际游戏业务需求设定事件名称,由程序层触发。


九、系统函数列表


最大(a,b)、最小(a,b)、随机(x)、随机(a, b)、跳转(地图id_name)、广播(消息)、触发(事件名称)等、刷怪(怪物名, x, y, z)、掉落(物品名)、聊天(世界频道, 内容) 、地图变量(地图id_name, 变量=123)。


可根据实际游戏业务需求完善函数功能,由程序层执行。


十、游戏对象配置抽象规范




图10.1 游戏对象抽象规范


按照图10.1的配置抽象,可以很好的融入到ON-DO模型当中,对象id_name可以直接用在on-do表达式中。对象具有的游戏行为特征由ai-ids设置。


注:地图和掉地上的物品也可以有AI,比如有人进入魔性地图时地图会和人对话,地上的武器也可以向路人喊话。


十一、成长线抽象规范



按数值升级的递进式模型来抽象,包含任务、皮肤、爬塔等。



图11.1 成长线抽象


凡是有等级的,只有激活的那一级有效。每个成长线类型自动有含有以“等级”为结尾的变量名,这样可以用于ON-DO表达式,如皮肤“李白白”自动有变量“李白白等级”。


十二、结束语


本文以xls表和txt文本为例,也可以使用lua表来表示。


本规范尚未健全,还需进一步完善。基于统一标准的抽象模型,不管是对于策划还是AI来说要容易理解和实现得多。


十三、附录


附录1:


游戏高度可配置化(一)通用数据引擎(data-e)及其在模块化游戏开发中的应用构想图解_游戏开发 数值可配置-CSDN博客


附录2:


游戏高度可配置化(二)用“模型抽象”化解游戏策划和程序员的江湖恩怨-CSDN博客


附录3:


游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发-CSDN博客


附录4:


浅谈数学模型在UGC/AIGC游戏数值配置调参中的应用(AI智能体)_游戏ai 数值-CSDN博客


附录5:


【数据中台战略】可配置化数学建模的应用案例图解_信息系统建模应用案例-CSDN博客

更新时间 2024-08-22