基于AI IDE 打造快速化的游戏LUA脚本的生成系统

前面写了一篇关于使用AI IDE进行C++安全开发的博客《使用AI IDE 助力 C++ 高性能安全开发!》, 得到许多同学们的喜欢,今天我们来继续在游戏开发中扩展一下AI的能力,看看能不能给游戏研发团队一些启发。

在游戏研发中,Lua曾经扮演着一个极其重要的角色,不管是在基于C++的服务端扩展其灵活性,还是在游戏引擎和框架中作为底层语言封装后的主要业务开发语言,Lua都具备高效灵活和简单易上手的优点。比如著名的游戏服务器框架Skynet和游戏引擎框架cocos2d-x-lua,都受到了许多研发团队的追捧。

曾经、LUA也作为游戏行业策划人员的必备技能,通过LUA脚本来编写任务、技能也经常是相关策划的主要工作、而在这个过程中,大量繁琐的测试和修改,也经常令策划人员感到崩溃。

本节我们将以InsCode AI IDE为例,打造一个策划人员的实用脚本生成流程,帮助策划人员从这种繁琐中解放出来。

一、安装与环境配置

首先,我们先去官网下载二进制lua,这里我下载了5.2.4版本的LUA二进制库和头文件。

下载后,解压出来,文件夹名称更换为lua-5.4.2。

然后 下载安装 InsCode AI IDE | InsCode AI IDE ,进入欢迎页后单击右边侧栏的"扩展",在弹出的插件商店里输入关键字"C",就可以看到许多的插件支持,其中华为云有提供"Cpp Project Wizard",下载安装一下,方便我们快速的创建C++工程。

安装好后,点击创建C/C++工程,在弹出的"新建工程"配置对话框中填写相关信息,创建一个C++工程。

创建好之后,我们配置一下编译命令,点击右上角的配置栏里的"编辑",在弹出的运行/配置对话框中,点击"+"号增加一个JAVASCRIPT调试终端,这里的JAVASCRIPT调试终端只是因为要选一个执行命令的选项罢了,跟JAVASCRIPT没什么关系哈。

然后在Command里输入:

bash 复制代码
g++ ./main.cpp -o ./main.exe -L D:/lua-5.4.2 -llua54 -I D:/lua-5.4.2/include | ./main.exe 

确定后,这样就可以在点击右上角的绿色三角按钮时对main.cpp进行编译并运行结果了,不过现在还没有用到LUA,我们在main.cpp里CTRL+A全选一下代码,然后再点CTRL+J,在弹出的对话框里输入:"增加一个通过LUA调用函数的实例",然后点击"生成"。

通过这种方式,我们可以只对当前main.cpp进行轻量化的修改,AI生成完成后,点击"全部接受",这时就可以看到LUA相关的代码了。

不过编译运行后,并没有什么反应,这是因为当前文件夹缺少lua54.dll,我们将其从Lua的文件夹拷贝过来,再次编译运行,就可以看到运行后打印"Hello from Lua!"。

这样我们第一步的工作就算完成了。

二、需求转脚本的实现

一般来说、在一个系统中使用LUA,主要的方法就是由高级程序员将一些功能处理封装成LUA可以调用的函数,然后整理这个函数列表和说明给到业务开发或策划人员,由他们在LUA中的特定函数中进行调用并编写逻辑,下面我们举例说明。

我们假设现在已经有一堆函数和说明,比如在一个txt文档中、我随手写了一些LUA函数:

Lua 复制代码
#创建函数
#创建玩家,参数为玩家id,x位置,y位置,返回值为成功或失败
Lua_CreatePlayer(id,x,y)
#创建怪物,参数为怪物id,x位置,y位置,返回值为成功或失败
Lua_CreateMonster(id,x,y)
#创建NPC,参数为怪物id,x位置,y位置,返回值为成功或失败
Lua_NPC(id,x,y)


#掉落物品函数,x位置,y位置,物品id
Lua_DropObject(x,y,objectid)

#加血,参数为type类型(0代表player,1代表monster,2代表npc),对应id,增加的值
Lua_AddHP(type,id,hp)

#对话,参数为弹出对话的文字内容
Lua_Talk(text)

#对话一个问题,并等待玩家返回结果,参数为弹出对话的文字内容,返回True或False代表玩家选择了"是"或"否"
Lua_Wait_Ask(text)

#取得位置,参数为type类型(0代表player,1代表monster,2代表npc),对应id,返回x位置,y位置
Lua_GetPos(type,id)
#移动函数,参数为type类型(0代表player,1代表monster,2代表npc),对应id,目标x位置,y位置
Lua_MoveTo(type,id,x,y)
#在位置点附近随机移动函数,参数为type类型(0代表player,1代表monster,2代表npc),对应id,中心点x位置,y位置,radius移动半径
Lua_Rand_Walk(type,id,x,y,radius)

#跟随函数,参数为type类型(0代表player,1代表monster,2代表npc),对应id,目标type类型,目标对应id
Lua_Follow(type,id,type2,id2)
#普通攻击函数,参数为type类型(0代表player,1代表monster,2代表npc),对应id,目标type类型,目标对应id
Lua_Attack(type1,id1,type2,id2)
#技能攻击函数,参数为type类型(0代表player,1代表monster,2代表npc),对应id,目标type类型,目标对应id,技能id
Lua_SkillAttack(type1,id1,type2,id2,skillid)

有了这个函数列表,下面我们尝试为某id值为1012的NPC编写一个LUA脚本控制其逻辑,逻辑需求为下:"当玩家点击NPC时,会弹出对话问玩家:"你是否准备好去迎战恶龙?",玩家点击"是"后,NPC会掉落一个护身符,并给玩家加100滴血,然后会开始跟随玩家。",我们可以将其放置到npc_1012.txt中作为npc的逻辑需求描述策划案。

一般来说,NPC会有一个专门的脚本文件,并有一些特定的主动和被动函数供系统调用,策划的工作就是在这些函数中使用上述给定的Lua函数进行编写。

比如上述需求,可能是在某id值为1012的lua文件 npc_1012.lua中编写,这个lua文件中已经有玩家点击NPC时响应的处理函数player_click_npc,我们的工具是在这个函数填写具体的逻辑。

然后我在右点侧栏点击"AI",使用"改写"模式,在对话框中加入:"修改npc_1012.lua,从文件Function.txt中读取函数注释及函数声明,按照对应npc_1012.txt的策划案在player_click_npc函数中实现相应的功能。"

没错,AI很好的理解了策划案,并编写出了正确的LUA脚本。

Lua 复制代码
function player_click_npc(player_id, npc_id)
    -- 弹出对话框询问玩家是否准备好迎战恶龙
    Lua_Talk("你是否准备好去迎战恶龙?")
    
    -- 等待玩家选择
    local result = Lua_Wait_Ask("你是否准备好去迎战恶龙?")
    
    if result == true then
        -- 玩家选择"是",NPC掉落一个护身符
        local x, y = Lua_GetPos(2, npc_id)  -- 获取NPC当前位置
        Lua_DropObject(x, y, 1001)  -- 假设护身符的物品id为1001
        
        -- 给玩家加100滴血
        Lua_AddHP(0, player_id, 100)
        
        -- NPC开始跟随玩家
        Lua_Follow(2, npc_id, 0, player_id)
    end
end

看着完成的函数,我只能用震惊来表达此时此刻的心情。

因为,它意味着,我们稍做一些自动化的处理,就可以让AI为我们的策划案生成无数的技能、NPC逻辑、任务了。即便要修改,也只需要修改一下策划案,而不必再花费大量的脚本去看那些脚本代码了。

三、变革、就在今天

本节我基于AI IDE,成功的实现了让AI从策划案到脚本,按照系统程序员给定的函数列表说明完成脚本的过程、虽然这只是小小的一步,但懂的自然懂。

基于InsCode AI IDE的知识库服务、你可以从内部的WEB端文档,结合策划案,快速的打造出无限量的LUA脚本,从而再也不必花费大量的人力和精力让策划人员挠头掉发减寿。

变革、就在今天!

相关推荐
赛逸展张胜4 分钟前
CES Asia是一个关于什么的展会?
大数据·人工智能·科技
Coovally AI模型快速验证33 分钟前
YOLO11全解析:从原理到实战,全流程体验下一代目标检测
人工智能·yolo·目标检测·机器学习·计算机视觉·目标跟踪·yolo11
1nullptr37 分钟前
lua和C API库一些记录
开发语言·lua
Jerry Nan38 分钟前
Lua元表
开发语言·lua
湫ccc1 小时前
《Opencv》基础操作详解(2)
人工智能·opencv·计算机视觉
羑悻的小杀马特1 小时前
【AIGC篇】畅谈游戏开发设计中AIGC所发挥的不可或缺的作用
c++·人工智能·aigc·游戏开发
火山方舟1 小时前
解密!企业级智能客服高效运营的秘密武器 | 大模型流程设计与Prompt模版
前端·人工智能·稀土
闻缺陷则喜何志丹1 小时前
【C++动态规划】1105. 填充书架|2104
c++·算法·动态规划·力扣·高度·最小·书架
CES_Asia1 小时前
国资助力科技创新,闪耀CES Asia 2025
人工智能·科技·智能手机·智能音箱·智能电视
eric-sjq2 小时前
基于xiaothink对Wanyv-50M模型进行c-eval评估
人工智能·python·语言模型·自然语言处理·github