- 已编辑
标题: 客户端热更方案
ILRuntime
- ILRuntime 官方教程
- ILRuntime跨域这个不是问题,是有些c#语法不完全支持, ilrt门槛也有点高,学习成本有点大,,ilrt库支持太麻烦了,不过对于动手能力强的人来说,不是啥大问题。性能也是一个方面,纯计算lua比ilrt高
- ilrt这个泛型问题就拦倒了很多人,很多人不理解,开发时没有Dictionary<object, object>,结果热更时有些泛型集合用不了
- ILRuntime对C#部分都支持其实,就一些不常用的不行,比如beginInvoke,委托只能invoke,其他一律不行,volatile的似乎也不行
- ilrt不是不适合et,et6接ilrt还更简单呢
关于ILRuntime2.0版本
蓝色幻想 2021/11/5
中间一列是寄存器版本
跑不过非寄存器模式的ilruntime这点是我没想到的
大多数用例都没跑过非寄存器版ilruntime
群友评价
傑 : 主要2.0的寄存器把计算的短板补上了
91焦先生 : ilrt的寄存器模式性能吊打lua
CSharp.lua
- csharp. lua性能不错,阿里巴巴用来做过fps手游,性能不是问题。你写啥就给你翻译成对应的lua。
- csharp.lua是字典等类转成了lua,这样能热更任何泛型字典
- csharp.lua相比ilrt还有个优势,就是泛型支持。ilrt用到的dict是冷更层的,所以没法支持所有泛型热更
- 优点就是对c#语法完全兼容, c#跟csharp. lua的关系就好比ts跟js。怎么没人去质疑为啥要用ts呢?CSharp.lua对C#支持是完备的,不需要关心底层的lua,这就跟写C++不用关心汇编一样,除非性能有问题才会在C++中包一下汇编代码
- 再说一次csharp.lua不是lua
- et永远不会用lua写逻辑,这语言就是坨屎 , 只要不写lua就行,啥热更都可以
相关库
- https://github.com/yanghuan/CSharp.lua
- https://github.com/yanghuan/CSharpLuaForUnity
- DukeChiang实现的分支
- 倾`微风月的ET-CSharp.lua
- 字母哥实现的版本
- 冷:基于字母哥版本的传奇小DEMO
进度记录
- csharp.lua绝对牛逼。我来整合charp. lua
- 提交了初步的csharp.lua代码,大家来研究吧,我一个人搞得累死了
- 我又不会lua,又不会xlua,临时看了三天,还是有点复杂的,比ilruntime复杂
- ILRT我两天就接好了,这玩意,我已经搞了4天了
- 算了,我放弃了,(ET6)我换ILRuntime了
- 主要我想到CSharp.lua后续工作我就头痛,要写个lualoader,要接入pbc,要接入json,每一项都得非常熟悉lua
- 删了,删了
mono热更
ET7可能使用此热更方案
新的mono热更方案(https://github.com/loongly/PureScript)进度记录
- 熊猫 2021/10/20 16:12:54 研究了两天mono热更方式,发现方案可行,我准备在et中加入这种热更方式
a. et的结构加入mono热更并不复杂,因为et没有mono脚本。 我打算嵌入一个mono到unity,然后解析执行脚本。mono跟il2cpp做最少的交互 本质上把mono当ilruntime使用
b. 发些资料给大家参考。如何嵌入mono
c. https://www.mono-project.com/docs/advanced/embedding/
d. https://zhuanlan.zhihu.com/p/36582629
e. https://zhuanlan.zhihu.com/p/266440911 - 熊猫 2021/10/22 18:29:49 才刚开始研究呢,哪有那么快啊,细节太多了。简单来说就是写个cpp插件引用一个新的mono进来,用新的mono去加载热更dll解析执行。
a. 新的mono怎么调用il2cpp的脚本,il2cpp的脚本怎么回调到新的mono中,这都是一堆工作
b. 新的mono gc是sgen比unity那垃圾gc可强多了
c. 任何引擎都可以引入一个mono - 熊猫 2021/10/26 19:46:28 放心,最近两个月,我会一直搞mono热更的
a. 只要那4个程序集不继承mono脚本,搞c#热更都非常简单
b. 等做完了mono热更,到时候你们移植到ue就简单了 - 熊猫 2021/11/11 16:29:49 这个mono热更,我想的目标是搞成一个静态库,跟lua虚拟机一样,嵌入就能用,但是这个工作量还是挺大的,能不能走通就不好说了,还是有各种坎,暂时不用想了。
- 熊猫 2021/11/12 17:13:31
鉴于mono热更还需要研究,短期没法应用,mono热更放到ET7.0中。ET7用huatuo了
huatuo 改名HybridCLR(wolong)
https://github.com/focus-creative-games/hybridclr
知乎专栏:
https://www.zhihu.com/column/c_1489549396035870720
熊猫 2022/3/25 18:53:10
喵喵喵? 猫大 会整合华佗吗?
@喵喵喵? 稳定了就可以啊,不过得et7了
熊猫 2022/4/25 18:52:10
et7用华佗,不存在踩不踩的问题
主要我实在不想维护热更了
et客户端的方式天然支持华佗,后面我就不用维护了,多舒服啊
熊猫 2022/9/2 18:19:26
最近试了wolong,搭配et太真是绝了,以后c#绝对统一游戏圈
wolong用起来啥限制都没有