lua面试题:热更新简介、原理及示例
1、什么是热更新?
热更新也叫不停机更新,是在游戏服务器运行期间对游戏进行更新。实现不停机修正bug、修改游戏数据等操作。也可以这样讲:一辆车以时速150km跑着,突然爆胎了,然后司机告诉你,我不停车,你去把轮胎换了,小心点。恩
2、热更新原理
第一种:
lua中的require会阻止多次加载相同的模块。所以当需要更新系统的时候,要卸载掉响应的模块。(把package.loaded里对应模块名下设置为nil,以保证下次require重新加载)并把全局表中的对应的模块表置 nil 。同时把数据记录在专用的全局表下,并用 local 去引用它。初始化这些数据的时候,首先应该检查他们是否被初始化过了。这样来保证数据不被更新过程重置。
代码示例:
function reloadUp(module_name)package.loaded[modulename] = nilrequire(modulename)
end
这种做法简单粗暴,虽然能完成热更新,但是 问题很多,旧的引用的模块无法得到更新,这种程度的热更新显然不能满足现在的游戏开发需求。
第二种:
function reloadUp(module_name)local old_module = _G[module_name]package.loaded[module_name] = nilrequire (module_name)local new_module = _G[module_name]for k, v in pairs(new_module) doold_module[k] = vendpackage.loaded[module_name] = old_module
end
lua面试题:热更新简介、原理及示例相关推荐
- lua游戏服务器热更新
Lua热更新实现 用途 在生产环境上,总有可能出现不可预知的Bug,而通常修改好Bug仅仅又修改几句,停机维护的成本又太高,对于游戏来说,通常每个服就是单独的进程,也做不到像分布式环境下,关掉一部分机 ...
- Webpack 热更新HMR 原理全解析
这是 Webpack 原理分析系列第十篇文章,前文可到公众号[Tecvan]查阅. 一.什么是 HMR HMR 全称 Hot Module Replacement,中文语境通常翻译为模块热更新,它能够 ...
- hmr webpack 不编译_Webpack HMR 热更新实现原理深入分析
概述 在使用 Webpack 构建开发期时,Webpack 提供热更新功能为开发带来良好的体验和开发效率,那热更新机制是怎么实现的呢? 代码实现 Webpack 配置添加 HotModuleRepla ...
- 腾讯开源手游热更新方案,Unity3D下的Lua编程
写在前面 \\ xLua是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾讯自研游戏,因其良好性能.易用性.扩展性而广受好评.现在,腾讯已经将xLua开源到GitHub. ...
- vue created 调用方法_深入解析 Vue 的热更新原理,偷学尤大的秘籍?
大家都用过 Vue-CLI 创建 vue 应用,在开发的时候我们修改了 vue 文件,保存了文件,浏览器上就自动更新出我们写的组件内容,非常的顺滑流畅,大大提高了开发效率.想知道这背后是怎么实现的吗, ...
- 手游为什么要热更新,C#为什么不能热更新,LUA为什么可以
手游为什么要热更新,C#为什么不能热更新,LUA为什么可以 热更新是什么?简单的说就是打补丁,只补需要部分,不用重个游戏包重打上传 热更新问题的本质是代码更新而不是资源更新,为什么呢? 大型手游都是将 ...
- 【Lua】ToLua逻辑热更新
1 前言 Lua基础语法 中系统介绍了 Lua 的语法体系,xLua逻辑热更新 中介绍了 xLua 的应用,本文将进一步介绍 Unity3D 中基于 ToLua 实现逻辑热更新. 逻辑热更新是指:在保 ...
- webpack配置及热更新原理
1:配置webpack 1:新建一个vue项目: 进入目录,在终端创建: vue create 项目名: 2:创建新文件 对应的文件目录src下新建存放css文件index.css,项目的入口文件ma ...
- [寒江孤叶丶的Cocos2d-x之旅_17]Cocos2d-x 3.2版本以上LUA脚本热更新(动态更新)解决方案
原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列] 博客地址:http://blog.csdn.net/qq446569365 能够进行热更新,是Lua脚本的最大优势, ...
最新文章
- 5-Interrupt Management Framework
- 【Let‘s Go】Go语言入门篇
- OpenGL环境多维数据集映射
- windows下安装mysql教程
- Oracle 安装 检查操作系统版本 必须是 5.0 5.1 的解决办法
- 老王带你理解算法复杂度O(1),O(N),O(N^2)
- Mysql连接失败报Received fatal alert: protocol_version问题解决
- 深入理解ArrayList
- 计算机学院嘉年华标题,我院计算机系举办计算机嘉年华系列活动
- 【王道计组笔记】总线(3):总线仲裁的基本概念
- JavaScript内建对象
- layui根据name获取对象_python面向对象——学校学生教职工管理系统类的实例
- Java反射常见面试题
- 超好用json转excel工具
- 计算机取证程序论文,计算机取证论文参考文献推荐 计算机取证论文参考文献哪里找...
- Flash学习资源下载列表
- 这10个免费电子书网站合集赶紧收藏了!
- 22考研英语高频词汇
- 逆地址解析-【高德地图】【腾讯地图】
- 简单学JAVA-学好Java能做啥