《Lua游戏AI开发指南》一2.9 创建智能体Lua脚本

简介:

本节书摘来异步社区《Lua游戏AI开发指南》一书中的第2章,第2.9节,作者: 【美】David Young(杨) 译者: 王磊 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.9 创建智能体Lua脚本

为了创建一个新的智能体,我们需要创建另一个Lua脚本并实现Agent_Cleanup、 Agent_HandleEvent、 Agent_Initialize和Agent_Update函数。

创建一个Lua文件如下:

src/my_sandbox/script/Agent.lua
Agent.lua:

   function Agent_Cleanup(agent) 
   end

   function Agent_HandleEvent(agent, event) 
   end

   function Agent_Initialize(agent) 
   end

   function Agent_Update(agent, deltaTimeInMillis) 
   end

现在有了一个基础的智能体脚本,我们可以在沙箱中创建一个智能体实例了。修改沙箱的初始化函数,使用Sandbox.CreateAgent函数创建AI代理。

要记住,每个AI智能体都在它自己的Lua虚拟机(Virtual Machine,VM)中运行。虽然这个智能体的逻辑是在一个单独的VM中运行,但是你仍然可以从沙箱的Lua脚本中访问并修改它的属性,因为智能体数据是在C++代码中管理的。

修改沙箱的初始化函数,使用Sandbox.CreateAgent函数创建你的AI智能体。

Sandbox.lua:

   function Sandbox_Initialize(sandbox)

       ...

       Sandbox.CreateAgent(sandbox, "Agent.lua");
   end

2.9.1 创建视觉表象

现在沙箱中已经有了一个可运行的智能体,我们还需要为它创建视觉表象以便能够观察它。这一次,我们使用Core.CreateCapsule函数来程序生成一个胶囊网格,然后附加到智能体上。把智能体传入Core.CreateCapsule函数中就会把生成的Ogre网格直接附加到智能体上面,并在它移动时自动更新这个胶囊的位置和旋转。

Sandbox.CreateObject对象相比,我们只需要创建一个视觉表象,因为智能体已经以胶囊的形式在物理世界中进行模拟了。

创建一个Lua文件如下:

src/my_sandbox/script/AgentUtilities.lua
AgentUtilities.lua:

   function AgentUtilities_CreateAgentRepresentation( 
       agent, height, radius)

      -- Capsule height and radius in meters.
      local capsule = Core.CreateCapsule(agent, height, radius); 
      Core.SetMaterial (capsule, "Ground2");
   end

Agent.lua:

   function Agent_Initialize(agent) 
       AgentUtilities_CreateAgentRepresentation(
           agent, agent:GetHeight(), agent:GetRadius());
   end

现在运行沙箱就能看到智能体的视觉表象了,它是一个同样使用Ogre Ground2材质的胶囊,如图2-4所示。


2_4

2.9.2 更新智能体的位置

我们可以设置智能体的位置来让它四处移动。由于智能体参与了物理模拟,如果放在空中它就会落向地面;如果被放到地面以下,则会被推到地面上来。

-- Position in meters.
   local position = Vector.new(
       xCoordinate, yCoordinate, zCoordinate);
   Agent.SetPosition(agent, position);

2.9.3 更新智能体的朝向

改变智能体的朝向类似于设置位置向量,不同的是需要提供一个前进方向向量。因为沙箱模拟的是类人形的智能体,物理模拟会锁定它的方向以让它始终保持直立。当设置智能体的前进方向向量时,沙箱会把y轴看成是向上的轴向。

local forwardDirection = Vector.new( 
       xDirection, 0, zDirection);
   Agent.SetForward(agent, forwardDirection);
相关文章
|
人工智能 自然语言处理 Devops
云效 AI 智能代码评审体验指南
云效AI智能代码评审正式上线!在合并请求时自动分析代码,精准识别问题,提升交付效率与质量。支持自定义规则、多语言评审,助力研发效能升级。立即体验AI驱动的代码评审革新,让AI成为你的代码质量伙伴!
572 7
|
5月前
|
人工智能 自然语言处理 算法
【2025云栖大会】AI 搜索智能探索:揭秘如何让搜索“有大脑”
2025云栖大会上,阿里云高级技术专家徐光伟在云栖大会揭秘 Agentic Search 技术,涵盖低维向量模型、多模态检索、NL2SQL及DeepSearch/Research智能体系统。未来,“AI搜索已从‘信息匹配’迈向‘智能决策’,阿里云将持续通过技术创新与产品化能力,为企业构建下一代智能信息获取系统。”
609 9
|
5月前
|
人工智能 测试技术 API
构建AI智能体:二、DeepSeek的Ollama部署FastAPI封装调用
本文介绍如何通过Ollama本地部署DeepSeek大模型,结合FastAPI实现API接口调用。涵盖Ollama安装、路径迁移、模型下载运行及REST API封装全过程,助力快速构建可扩展的AI应用服务。
1410 6
|
5月前
|
人工智能 运维 安全
加速智能体开发:从 Serverless 运行时到 Serverless AI 运行时
在云计算与人工智能深度融合的背景下,Serverless 技术作为云原生架构的集大成者,正加速向 AI 原生架构演进。阿里云函数计算(FC)率先提出并实践“Serverless AI 运行时”概念,通过技术创新与生态联动,为智能体(Agent)开发提供高效、安全、低成本的基础设施支持。本文从技术演进路径、核心能力及未来展望三方面解析 Serverless AI 的突破性价值。
|
5月前
|
人工智能 API 开发工具
构建AI智能体:一、初识AI大模型与API调用
本文介绍大模型基础知识及API调用方法,涵盖阿里云百炼平台密钥申请、DashScope SDK使用、Python调用示例(如文本情感分析、图像文字识别),助力开发者快速上手大模型应用开发。
1931 17
构建AI智能体:一、初识AI大模型与API调用
|
5月前
|
机器学习/深度学习 人工智能 算法
用于实验室智能识别的目标检测数据集(2500张图片已划分、已标注) | AI训练适用于目标检测任务
本数据集包含2500张已标注实验室设备图片,涵盖空调、灭火器、显示器等10类常见设备,适用于YOLO等目标检测模型训练。数据多样、标注规范,支持智能巡检、设备管理与科研教学,助力AI赋能智慧实验室建设。
用于实验室智能识别的目标检测数据集(2500张图片已划分、已标注) | AI训练适用于目标检测任务
|
5月前
|
存储 机器学习/深度学习 人工智能
构建AI智能体:三、Prompt提示词工程:几句话让AI秒懂你心
本文深入浅出地讲解Prompt原理及其与大模型的关系,系统介绍Prompt的核心要素、编写原则与应用场景,帮助用户通过精准指令提升AI交互效率,释放大模型潜能。
899 5

热门文章

最新文章