【ZeloEngine】沙箱机制

沙箱,沙盒,Sandbox

沙盒游戏是指开放世界游戏,比如MineCraft,玩家可以在里面自由地游玩

程序的Sandbox,是指引擎提供一个干净的环境,供程序员自由地写业务逻辑

本文讨论的Sandbox,比较接近Demo,Mod,插件的概念

动机

引擎的最终目的是做游戏,这个过程中会产出很多Demo

通过Sandbox,将Demo和引擎分割开,不断的开发新Demo,并把Demo中通用的部分向引擎迁移,形成一个开发循环

结论

  • 干净的切换Demo,每个Demo是独立的引擎实例
  • 独立的Demo目录,C++,Lua和资源目录
  • 自带Lua热更

思路

早期我想直接用插件机制去做Sandbox,结果做了两三个Demo就不行了,插件切换切不干净,出了问题很难定位,尤其是渲染问题

其实Godot的就差不多(可以去steam下一个玩一下)

其实这个流程应该设计为:

  • 一个Project Hub,显示Demo列表,用于启动选择Demo
  • 打开Demo后关掉Project hub
  • 启动引擎

用一个队列维护引擎实例,实例之间用文件传递Demo ID

打开Demo时写入ID,push实例,然后关掉自己

队列自动取出实例开始启动

顺带发现,这个自带热更,其实和重启引擎是一样的,但是更快

int main() {Zelo::ProjectHub().start();while (!Zelo::G::s_EngineList.empty()) {auto &engine = Zelo::G::s_EngineList.front();engine->start();Zelo::G::s_EngineList.pop_front();}return 0;
}

Sandbox开发流程

  1. 写C++插件
  2. 插件导出Lua脚本
  3. 创建一个Lua Sandbox,包含init,update,fini钩子
  4. Sandbox里安装和初始化插件
  5. 在sandbox_config.lua里注册一下Sandbox

C++写成插件,去钩引擎,不要直接为了Demo改引擎,会影响其他Demo

【ZeloEngine】沙箱机制相关推荐

  1. 浅谈JVM(一) ClassLoader的双亲委派和沙箱机制

    转载自 https://blog.csdn.net/start_lie/article/details/79016312 JVM(Java Virtual Machine)   java虚拟机 JVM ...

  2. 修改ffmpeg支持文件描述符,以适配android10沙箱机制

    问题背景 android10默认执行文件沙箱机制,native层代码失去了通过文件路径访问公共媒体文件的权限.当时可通过android:requestLegacyExternalStorage=&qu ...

  3. ios沙箱模式开启_iOS的沙箱机制 是否应该清理后台

    在这里不讨论iOS的封闭性,这些是手机厂商.应用程序开发者需要深入了解的,下面讨论的是iOS的沙箱机制,来了解它对我们个人用户所产生影响 什么是沙箱机制? ​ 每个APP都有自己的独立存储空间,安装的 ...

  4. 浅析沙箱机制(Sandboxie)

    https://m.qukuaiwang.com.cn/news/14003.html 大家也许都听说过:以太坊上的智能合约是在沙箱(Sandbox)中运行的.那么到底什么是沙箱呢?本文将带你揭开这一 ...

  5. 沙箱机制(Sandboxie)

    一.沙箱是什么? 沙箱是一个虚拟系统程序,沙箱提供的环境相对于每一个运行的程序都是独立的,而且不会对现有的系统产生影响,即沙箱提供一个限制该应用程序对系统资源的访问权限. 二.沙箱的应用 (1)搭建测 ...

  6. java 沙箱机制_浅析沙箱机制(Sandboxie)

    每个人都可能听说过以太坊的智能合约正在沙盒中运行.那沙盘究竟是什么?本文将带您了解这种机制的奥秘. 1.为什么需要沙盒机制? 默认情况下,应用程序可以访问计算机上的所有资源,例如CPU,内存,文件系统 ...

  7. java的沙盒安全模式_Java沙箱机制

    自从 Java 技术出现以来, 有关 Java 平台的安全性及由 Java 技术发展所引发的新的安全性问题,引起了越来越多的关注.目前,Java 已经大量应用在各个领域,研究 Java 的安全 性对于 ...

  8. 说说浏览器的沙箱机制

    黑客会在网页中插入一段恶意代码,然后利用浏览器漏洞来执行任意代码,这就叫做 "挂马".它是浏览器所面对的一种主要的威胁. 浏览器为了应对 "挂马" 威胁,从单进 ...

  9. “沙箱机制”是什么?

    沙箱(网络编程虚拟执行环境) 沙盘英文名sandbox(sandboxie),也叫沙箱,顾名思义可以看做是一种容器,里面所做的一切都可以推倒重来. 这里先引用百度百科中的解释: Sandboxie是一 ...

最新文章

  1. centos6 mysql5.7.16_centos 6.5装mysql5.7
  2. VC2019 使用GDI+ 显示PNG图片
  3. 代理模式(Proxy)简介
  4. 奇奇seo优化软件_信阳seo优化排名软件
  5. Stateless 3.0——.NET Core上的状态机库
  6. 2021四川高考成绩位次查询,2021年四川高考位次查询及一分一段表排名查询
  7. js中的object
  8. java内存结构不包含堆,JVM之详细分析java内存结构模型
  9. 动物称重管理系统HDX|FDX-B格式低频动物电子耳标面板式远距离读写器|识读器HX-L81100出线方式与标签识读距离
  10. Google桌面搜索和百度硬盘搜索索引停滞的原因
  11. 3种方式获取Wifi名称 兼容获取Wifi名字为空 WifiInfo.getSSID为空的情况
  12. 苹果手机用户流失严重,竟是因为这个原因?
  13. 18M 超轻量图像识别系统,商品、车辆、人脸识别一网打尽!
  14. 小学教材失实一事体现出僵化的教育思维
  15. Dynamic Movement Primitives与UR5机械臂仿真
  16. STM32H743内部所有SRAM的使用
  17. 通过Python脚本创建ArcGIS地图服务缓存
  18. 动漫网站-前端网页技术精美网站源码HTML+CSS+JS
  19. 大学都要学计算机吗,大学要买电脑吗?大学生为什么现在都要标配一台笔记本?...
  20. FastCGI sent in stderr: PHP message: PHP Fatal error: Call to undefined function __() in

热门文章

  1. go: no such tool “compile“(一次糟糕体验)
  2. httpclient3.1的relaseConnection的misunderstand
  3. 求奇数分之一序列前N项和
  4. amd锐龙笔记本cpu怎么样_如果你要购买笔记本的话!千万不要现在购买AMD锐龙笔记本!因为...
  5. 我讽刺中医把每个养生的都化成了神仙
  6. 反编译 轻松调频 Android APP 下载“飞鱼秀”录音
  7. python 抓取lol主播排行
  8. 金大侠眼光果然犀利:《笑傲江湖》只值一块钱
  9. 8.合并两个有序的数组
  10. 实习 | 深圳市彼岸心智科技有限公司招募新成员啦