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面试题:热更新简介、原理及示例相关推荐

  1. lua游戏服务器热更新

    Lua热更新实现 用途 在生产环境上,总有可能出现不可预知的Bug,而通常修改好Bug仅仅又修改几句,停机维护的成本又太高,对于游戏来说,通常每个服就是单独的进程,也做不到像分布式环境下,关掉一部分机 ...

  2. Webpack 热更新HMR 原理全解析

    这是 Webpack 原理分析系列第十篇文章,前文可到公众号[Tecvan]查阅. 一.什么是 HMR HMR 全称 Hot Module Replacement,中文语境通常翻译为模块热更新,它能够 ...

  3. hmr webpack 不编译_Webpack HMR 热更新实现原理深入分析

    概述 在使用 Webpack 构建开发期时,Webpack 提供热更新功能为开发带来良好的体验和开发效率,那热更新机制是怎么实现的呢? 代码实现 Webpack 配置添加 HotModuleRepla ...

  4. 腾讯开源手游热更新方案,Unity3D下的Lua编程

    写在前面 \\ xLua是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾讯自研游戏,因其良好性能.易用性.扩展性而广受好评.现在,腾讯已经将xLua开源到GitHub. ...

  5. vue created 调用方法_深入解析 Vue 的热更新原理,偷学尤大的秘籍?

    大家都用过 Vue-CLI 创建 vue 应用,在开发的时候我们修改了 vue 文件,保存了文件,浏览器上就自动更新出我们写的组件内容,非常的顺滑流畅,大大提高了开发效率.想知道这背后是怎么实现的吗, ...

  6. 手游为什么要热更新,C#为什么不能热更新,LUA为什么可以

    手游为什么要热更新,C#为什么不能热更新,LUA为什么可以 热更新是什么?简单的说就是打补丁,只补需要部分,不用重个游戏包重打上传 热更新问题的本质是代码更新而不是资源更新,为什么呢? 大型手游都是将 ...

  7. 【Lua】ToLua逻辑热更新

    1 前言 Lua基础语法 中系统介绍了 Lua 的语法体系,xLua逻辑热更新 中介绍了 xLua 的应用,本文将进一步介绍 Unity3D 中基于 ToLua 实现逻辑热更新. 逻辑热更新是指:在保 ...

  8. webpack配置及热更新原理

    1:配置webpack 1:新建一个vue项目: 进入目录,在终端创建: vue create 项目名: 2:创建新文件 对应的文件目录src下新建存放css文件index.css,项目的入口文件ma ...

  9. [寒江孤叶丶的Cocos2d-x之旅_17]Cocos2d-x 3.2版本以上LUA脚本热更新(动态更新)解决方案

    原创文章,欢迎转载,转载请注明:文章来自[寒江孤叶丶的Cocos2d-x之旅系列] 博客地址:http://blog.csdn.net/qq446569365 能够进行热更新,是Lua脚本的最大优势, ...

最新文章

  1. 5-Interrupt Management Framework
  2. 【Let‘s Go】Go语言入门篇
  3. OpenGL环境多维数据集映射
  4. windows下安装mysql教程
  5. Oracle 安装 检查操作系统版本 必须是 5.0 5.1 的解决办法
  6. 老王带你理解算法复杂度O(1),O(N),O(N^2)
  7. Mysql连接失败报Received fatal alert: protocol_version问题解决
  8. 深入理解ArrayList
  9. 计算机学院嘉年华标题,我院计算机系举办计算机嘉年华系列活动
  10. 【王道计组笔记】总线(3):总线仲裁的基本概念
  11. JavaScript内建对象
  12. layui根据name获取对象_python面向对象——学校学生教职工管理系统类的实例
  13. Java反射常见面试题
  14. 超好用json转excel工具
  15. 计算机取证程序论文,计算机取证论文参考文献推荐 计算机取证论文参考文献哪里找...
  16. Flash学习资源下载列表
  17. 这10个免费电子书网站合集赶紧收藏了!
  18. 22考研英语高频词汇
  19. 逆地址解析-【高德地图】【腾讯地图】
  20. 简单学JAVA-学好Java能做啥

热门文章

  1. 蒙特卡罗法(随机模拟法)
  2. qt tabwidget怎么在切换到特定界面时做特定的事_自然用户界面——是什么以及如何设计更加自然的用户界面?...
  3. css选中后的背景,css怎么实现鼠标选中文字后改变背景色
  4. IEEE 802.11
  5. 用接口,写一个简单的小游戏
  6. 周末韶关行之乳源大峡谷
  7. Mac搭建Java开发环境最佳指南
  8. 曝国安苏宁争夺威尔士当红前锋 开价500万镑年薪
  9. 【总结】Halcon图像拼接
  10. html如何判断文本框是否为空,javascript怎么判断文本框是否为空?