赞
踩
ygluu 卢益贵
关键词:游戏脚本、lua脚本、AIGC、游戏前端服务端、游戏策划、游戏配置表、红点系统
目录
引用旧图抛砖引玉:
图 1.1 AIGC在游戏应用需要模型抽象
不要指望AI能0-1的输出一个完整无误的游戏客户或服务端代码及配置表。AI和游戏中间必需有一层抽象来简化AI的操作。
像lua这样的脚本是一门泛行业的脚本,她非常神通但又逻辑性太强,对于游戏策划来说能掌控好她也不容易。
本文介绍一种以特定游戏需求为抽象的脚本规范,均可以用文本表达式或者lua脚本完成。她的目的是抽象和简化配置逻辑,让策划和AI可以简单的在配置层面即可完成某种特定类型游戏脚本的设定(根据82法则,抽象能解决大于等于80%的需求即可,另外小于20%的需求可以特定解决)。
本文起名AA游戏脚本(AA Game Script),简称AA脚本。命名无任何含义仅是标识符。
相关参考见附录。在本人以前博文中提到的数据名,在本文统称变量名,两者等效。本文亦是本人过去博客知识点的系统化总结。
注:如有雷同纯属巧合,请留言必删之。
在游戏开发当中,多数策划配置需求不外乎:当什么条件满足时做什么事情,所以本文将这种模式抽象为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表达式由变量名(数据名称、事件)、变量值(数字、字符串、时间名称)、数据函数、四则运算(+-*/)、比较运算(>=<)、逻辑运算(&|)、括号(())组成。
例1:日期>=2023-01-01 & 时间>18:00:00 & 事件=进入地图 & 当前地图=花山
例2:等级>=10 & 金币-10 & 上山卡-20
例3:等级>=20 & (金币-30 | 上山卡-30)
例4:当前地图=花山 & 杀恶犬>=100
注:金币和入谷卷-x表示某物品消耗多少达成的条件,例3所示:当玩家等级大于20级时,消耗30枚金币或者消耗30张入谷卷即可做xxx任务。
DO表达式由变量名、执行函数、四则运算(+-*/)、运输值、分号(;)。
例1:等级+1; 金币+10; 最大攻击+10; 跳转(恶犬洞)
注:
1、物品+-*/表示基于物品当前数量为基数
2、执行函数是游戏任务的执行者,如“跳转(恶犬洞) ”表示跳转到恶犬洞地图。
例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 & 事件=杀怪 & 杀怪>=10DO: 任务等级=3; 经验+3000; 金币+4000
ON: 任务等级=3 & 事件=杀怪 & 杀西人怪>=3DO: 任务等级=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:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。