FPS游戏框架漫谈第八天

话说当我们上架一款游戏,无论游戏内容的多和少,游戏是人开发的,那么就可能存在bug,从而引发玩家逃离,那么作为游戏的技术负责人需要为这些潜在的风险提供什么避险神器呢??????

这就引出了我们今天要谈论的话题热更新, 热更新技术是什么呢?

一个热字就知道,我们的游戏肯定一直在运行中的,外网玩家是随时可以进行注册和登录并且进行游戏体验,那么这个功能就要求我们不能关闭游戏服务器进行重启来更新游戏逻辑,甚至是下架外网上架各种渠道的游戏安装包,然后进行上架进行内容更新的甚至是bug的修复,这个方式是比较传统的 可以叫冷更新?????????????????

既然提到热更新,那么比较传统的热更方式对于编译型语言是DLL动态库的形式进行代码逻辑热更,

针对解释型语言就简单了配置unity引擎自带的AssetBundle的方式以资源包的方式进行远程下载,替换本地文本的方式直接完成了热更。

那么我们的项目c#语言能不能采用dll动态库的方式进行热更呢,就现有状态安卓平台没有新增限制,苹果平台考虑到软件风险直接不支持dll方式进行热更??????

那么问题来了,苹果是如何干预了原有的dll热更呢????????????????????????

首先我们要知道dll是怎么实现了热更,说白了就是我们可以直接通过dll中的信息动态创建代码逻辑,然后在交给编译器进行编译成中间语言,中间语言在翻译成字节码,拿到字节码交给机器,机器就认识了。

然后苹果干了一件什么事,让这个流程中断了呢。首先是苹果直接在操作系统的层面上改变了上面的这个流程,定义了所谓的Full AOT模式,这个模式不像安卓平台是支持JIT也就是边编译边执行,那么需要什么逻辑去支持Full AOT模式呢,很简单直接丢掉翻译这步,如果遇到我们采用的dll动态库创建出来的原始代码,是不会给你有编译机会的,那么就这个时候你并不是中间语言,直接丢给虚拟机是不认识的,这个虚拟机的功能是拿到中间语言转换成字节码。那么结果是什么,把他当成字节码去解读,肯定是找不到中间语言定义的语法的,直接会报错找不到啥啥啥?????????????????????????

这个时候我们怎么办,放弃ios平台的bug修复了吗,不???? 我们公司的技术负责人是1000万个不服的。我想想既然直接是拿到中间语言转换字节码 ,那么我如果将我们新增了代码或者修复了bug的原始工程直接进行编译,编译之后我们是可以拿到一个中间语言版本 对应我们C#工程来说其实就是Mono.Cecil库。那么我们直接把这个库进行替换,那么这个库编译成字节码之后是不是我们新加的内容是不是已经进去了呢??????????? 想了下还是真是,但是有人会疑问外网的c#代码是不是没有新增吗。我想说我们的操作系统跑的不是c#原始代码 而是最终的010101011010101001机器码,所以我们要做的事就是Xlua做的事,据说这个插件还不错,腾讯开源,啊哈哈

第九天见

相关推荐
阿斯加德D20 小时前
天国:拯救 2风灵月影修改器下载(已汉化)2026最新版下载分享
测试工具·游戏·3d·游戏程序
YF021121 小时前
Android 物理摇杆按键映射技术详解
android·游戏
li星野1 天前
双指针 & 贪心算法六题通关:从回文串到跳跃游戏(Python + C++)
python·游戏·贪心算法
无人装备硬件开发爱好者1 天前
STM32G474 + 1.32 寸 OLED(128×96)俄罗斯方块游戏实现指南
stm32·嵌入式硬件·游戏
小清兔2 天前
Addressable的设置打包流程
笔记·游戏·unity·c#
研究点啥好呢2 天前
途游游戏AI产品经理面试题精选:10道高频考题+答案解析
人工智能·游戏·产品经理
带娃的IT创业者2 天前
Valve 开源 Steam Controller:当硬件设计遇上开源精神,一场游戏外设的革命才刚刚开始
游戏·开源·开源硬件·cad·知识共享·valve·游戏外设
阿斯加德D2 天前
《霍格沃茨之遗》风灵月影修改器下载(已汉化)2026最新版
人工智能·测试工具·游戏·3d·游戏程序
开开心心就好2 天前
支持音视频图片文档的格式转换器
人工智能·学习·游戏·决策树·音视频·动态规划·语音识别
aaaffaewrerewrwer2 天前
一个功能非常完整的在线 Word Search Puzzle(单词搜索)网站推荐:支持自定义出题、打印与多语言
游戏·word·个人开发