《Lua游戏AI开发指南》一2.3 扩展SandboxApplication类

简介:

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

2.3 扩展SandboxApplication类

项目创建好之后,你需要为Premake创建3个空白文件。创建如下的源文件和头文件:

src/my_sandbox/include/MySandbox.h 
  src/my_sandbox/src/MySandbox.cpp 
  src/my_sandbox/src/main.cpp

现在就可以运行vs2008.bat、vs2010.bat、vs2012.bat或者vs2013.bat来重新生成Visual Studio解决方案了。然后,当打开这个解决方案时,你就能看到新的my_sandbox项目了。

每个沙箱示例程序都需要扩展SandboxApplication基础类来声明可执行的Lua脚本的位置。

遵照下面的模式来声明你的MySandbox类:

MySandbox.h:

   #include "demo_framework/include/SandboxApplication.h"

   class MySandbox : public SandboxApplication { 
   public:
       MySandbox(void);

       virtual ~MySandbox(void);

       virtual void Initialize();
   };

继承SandboxApplication类可以提供一些基础的功能。目前我们只需要重载Initialize函数来添加Lua脚本资源的路径。

继承SandboxApplication还能重载Update和Cleanup等函数。任何其他的C++代码都可以通过这些函数注入到主应用程序中。

当重载这些函数时,你总是应该调用Sandbox Application基类的原始实现,因为它们处理了沙箱的清理、初始化和更新等功能。
在沙箱的源文件中,只需要设置沙箱的Lua脚本资源的路径,并调用父类的Initialization函数。

MySandbox.cpp:

   #include "my_sandbox/include/MySandbox.h"

   MySandbox:: MySandbox ()
       : SandboxApplication("My Sandbox") {}

   MySandbox::~ MySandbox () {}

   void MySandbox::Initialize()
       SandboxApplication::Initialize();

       //Relative location from the bin/x32/release/ or
       //bin/x32/debug folders
       AddResourceLocation("../../../src/my_sandbox/script");
   }

最后,你可以在main.cpp文件中添加一点启动代码来开始你的应用程序:

main.cpp:

   #include "my_sandbox/include/MySandbox.h"   
   #include "ogre3d/include/OgreException.h"

   #define WIN32_LEAN_AND_MEAN 
   #include "windows.h"

   int main() {
       MySandbox application;
       try { 
           application.Run();
       }
       catch(Ogre::Exception& error) { 
           MessageBox(
               NULL, 
               error.getFullDescription().c_str(), 
               "An exception has occurred!",
               MB_OK | MB_ICONERROR | MB_TASKMODAL);
       }
   }
相关文章
|
2月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
282 1
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
3月前
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
简介:本文整理自阿里云高级技术专家李麟在Flink Forward Asia 2025新加坡站的分享,介绍了Flink 2.1 SQL在实时数据处理与AI融合方面的关键进展,包括AI函数集成、Join优化及未来发展方向,助力构建高效实时AI管道。
673 43
|
3月前
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
本文整理自阿里云的高级技术专家、Apache Flink PMC 成员李麟老师在 Flink Forward Asia 2025 新加坡[1]站 —— 实时 AI 专场中的分享。将带来关于 Flink 2.1 版本中 SQL 在实时数据处理和 AI 方面进展的话题。
243 0
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
|
5月前
|
人工智能 运维 监控
基于魔搭MCP广场的AI效率革命:在通义灵码中一键调用2400+工具的开发指南
MCP广场技术架构解析与效率优化全攻略。通过统一工具接入规范、智能路由引擎及Serverless执行器,显著降低集成成本,提升AI开发效率。实战演示从环境配置到工具调用全流程,并深入讲解异步处理、成本控制、安全接入等企业级方案。实测数据显示,工具接入周期缩短93%,年节省超85万元。适合追求高效AI研发的团队参考。
272 0
|
2月前
|
人工智能 关系型数据库 Java
当MySQL遇见AI:使用Vector扩展实现智能语义搜索
传统数据库的关键词搜索已无法满足现代应用对智能语义查询的需求。本文介绍如何通过MySQL的向量扩展(Vector Extension),将大模型产生的文本嵌入向量存储在MySQL中,并实现高效的语义相似度搜索。我们将完整演示从环境准备、数据库表设计、Java应用集成到性能优化的全流程,让您的传统关系型数据库瞬间具备AI智能检索能力,为构建下一代智能应用提供核心数据支撑。
302 3
|
2月前
|
人工智能 算法 数据库
给AI装上一个'超级大脑':信息检索如何改变RAG系统的游戏规则
从传统检索方法到现代向量检索,通过一个购物助手的故事,直观展示了不同检索技术的原理与应用。学会这些技巧,让你的AI不再是「记忆只有金鱼长度」的大模型!
141 24
|
2月前
|
机器学习/深度学习 人工智能 算法
当AI提示词遇见精密算法:TimeGuessr如何用数学魔法打造文化游戏新体验
TimeGuessr融合AI与历史文化,首创时间与空间双维度评分体系,结合分段惩罚、Haversine距离计算与加权算法,辅以连击、速度与完美奖励机制,实现公平且富挑战性的游戏体验。
|
30天前
|
人工智能 小程序 搜索推荐
【一步步开发AI运动APP】十二、自定义扩展新运动项目2
本文介绍如何基于uni-app运动识别插件实现“双手并举”自定义扩展运动,涵盖动作拆解、姿态检测规则构建及运动分析器代码实现,助力开发者打造个性化AI运动APP。
|
2月前
|
存储 人工智能 安全
企业级 AI Agent 开发指南:基于函数计算 FC Sandbox 方案实现类 Chat Coding AI Agent
通过 Sandbox 与 Serverless 的深度融合,AI Agent 不再是“黑盒”实验,而是可被企业精准掌控的生产力工具。这种架构不仅适配当前 AI Agent 的动态交互特性,更为未来多模态 Agent、跨系统协作等复杂场景提供了可复用的技术底座。若您的企业正面临 AI Agent 规模化落地的挑战,不妨从 Sandbox 架构入手,结合函数计算 FC 的能力,快速验证并构建安全、高效、可扩展的 AI 应用系统。