网易首页 > 网易号 > 正文 申请入驻

【厚积薄发】大家现在都是怎么实现热更新的?

0
分享至


这是第366篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页: community.uwa4d.com

本期目录:

  • 大家现在都是怎么实现热更新的
  • SLG或者策略游戏的联盟边界线是如何实现的
  • 实现门窗破碎效果并且性能好的方案
  • Screen.SetResolution和UniversalRenderPipelineAsset.renderScale有什么区别

Script

Q:大家现在都是怎么实现热更新的?除了C#反射这个老办法、或者Lua,大家还用了什么办法吗?以及有人不用热更新吗?想在立项阶段先做个调研,避免之后填坑,谢谢各位!

A1:Lua缺点是很多,原因很大一部分是因为大家用的是ToLua这种一揽子解决方案。本身Lua就慢,ToLua为了让大家像C++上使用Lua那样快速上手,在底层做了不少事情,包括对UserData的处理(导致了Lua的GC和C#的GC冲突)和对LuaState的OOP化。对C#的无脑Wrap和对Lua的OOP改造也进一步加剧了这些问题。更何况,Lua和C#之间并没有大家想象中那么契合。一个最简单的例子,任何Lua传给C#的String都是新的GC Alloc。然而,对于热更新方案,我们并没有太多的选项,Lua算是一种比较成熟、性能上勉强能用的方案,最重要的是,用的人要真的会(不仅仅是会语法),那么性能上才不会有大问题。当然,还是要期待大牛研发出更优雅和优秀的方案。

感谢凯奥斯@UWA问答社区提供了回答

A2: ILRuntime本质上就是为了iOS热更(代码)而开发的,Android热更可以用ILRuntime,也可以完全不用。

说回正题,一般热更新分两块:代码+资源。资源热更新几乎都是通过AssetBundle来实现,代码热更新可以用某种解释器+解释执行的语言来实现,可供选择的有Lua、AS3、Python、JS、C#等,据我所知,主流是Lua,次主流是C#.

热更新的选择上,我们项目最初所有代码都是C#写,不考虑热更新是因为团队没一个人会Unity 3D,全是边学边做,"做出来"是第一要务。上线后自然顶不住运营的压力,在中国很多Android渠道的情况下,运营的这个需求是合理的,否则每次版本更新,各个渠道审核-上线的时间同步是非常困难的。

然后我们首先用xLua打补丁修Bug,这样成本最低,后来运营要求能通过热更新加功能,而不仅仅是改Bug,那么要么用Lua写所有可能会被热更新的代码,这需要把现有的大量C#代码翻译过来;要么想办法让C#能热更新。很自然就选择了后者+ILRuntime的方法。

最后的技术方案是这样:

1. 基本限制

热更新部分的代码都不继承MonoBehaviour,也就是都不挂脚本,非热更新部分随意,热更新对 MonoBehaviour这种比较特殊的东西的支持都挺麻烦,要么不用; 要么只是做个不可热更新的消息转发层; 要么开发时挂脚本,打包时用某种特殊的方式把它变成代码里动态AddComponent。

2. Android

不用任何第三方的热更新方案,用C#反射执行DLL,性能和代码写法和纯C#基本一样。

19年9月Google Play强制要求APP都支持64位,Unity的应对方案是Android IL2CPP,暂时没有支持Mono Backend 64位的打算,而且Unity IL2CPP实现的真不怎么样。所以到时候只能是IL2CPP + ILRuntime的方式,性能差的一大截,主要慢在ILRuntime上。

3. iOS

ILRuntime + DLL解释执行,当然是在IL2CPP下。

4. 优点

语言(C#)开发环境工具链统一,随时可以变成不支持热更新形式,如果苹果未来不允许任何解释执行的方式。

框架搭好后,满足一些限制条件(非硬性限制,主要是避免麻烦,限制主要是1个,可热更部分的代码不要继承不可热更的代码,不继承MonoBehaviour是这个限制的子集),写逻辑的同学开发方式和原生C#开发完全一样,包括调试。

第三方插件直接可用(大部分插件都是基于C#写的)。

5. 缺点

稳定性的坑还是有一些,通常发生于一些相对高级的语言特性组合,特别是各种反射代码。 另外.net4.6的asyncwait支持现在的版本应该也还不够稳定。

纯计算的性能弱于Lua,计算密集型的代码还是想办法放在不可热更新的部分吧。

历史短,Git贡献者少,项目考验少(据我的了解,上线的商业项目在x-1x之间,具体的项目有MMO,有SLG,有休闲,也有棋牌),原理上大的优化空间没有,小的优化空间还是有一些;另外整合了各种常用Feature的框架也少,虽然我感觉这块基本都会自己写。

感谢gx@UWA问答社区提供了回答

A3:当前以及未来主流热更方案:HybridCLR

https://edu.uwa4d.com/course-intro/0/432

感谢黄大仙@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/5a9fc420d35eb22c10a0a365

Rendering

Q:请问SLG或者策略游戏的联盟边界线是如何实现的?类似下图这种很平滑的边界线是怎么实现的呢?


A:在战争迷雾吧有类似魔兽争霸地图贴花的算法可以参考:

https://www.cnblogs.com/sifenkesi/archive/2011/03/03/1970051.html

感谢牛头人不服@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/6491548496577277855f2e5d

Rendering

Q:大家有没有游戏中实现门窗破碎效果性能好的方案?目前使用的插件是RayFire for Unity。

针对以上问题,有经验的朋友欢迎转至社区交流分享:

https://answer.uwa4d.com/question/65780e323625c22cffcb1d7b

Rendering

Q:之前低端机都是通过Screen.SetResolution降低渲染分辨率提高性能,发现UniversalRenderPipelineAsset有一个renderScale也可以降低渲染效果。想请问下,两者本质区别是什么?在低端机两者一起降会更好?

针对以上问题,有经验的朋友欢迎转至社区交流分享:

https://answer.uwa4d.com/question/657bbfff40a8d93b624afc25

封面图来源于网络

今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com

UWA社区:community.uwa4d.com

UWA学堂:edu.uwa4d.com

点击下方名片关注我们,将我设为星标,及时接收小编每日推送哦,性能优化不迷路~

近期精彩回顾

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
女人在过夫妻性生活时,为什么总发出声音?医生:大多数人不了解

女人在过夫妻性生活时,为什么总发出声音?医生:大多数人不了解

皮皮讲文
2024-01-02 10:36:17
实探安徽铜陵坍塌居民楼:建成二十余年历经三次改造,仍未阻止悲剧发生

实探安徽铜陵坍塌居民楼:建成二十余年历经三次改造,仍未阻止悲剧发生

极目新闻
2024-06-01 22:05:24
专家指出三大原因:所有罪名成立,特朗普不会在监狱里待上一分钟

专家指出三大原因:所有罪名成立,特朗普不会在监狱里待上一分钟

冠世
2024-06-01 10:26:24
心静如水!0-2丢冠,41岁少帅没哭,与安切洛蒂握手后缓慢离场

心静如水!0-2丢冠,41岁少帅没哭,与安切洛蒂握手后缓慢离场

侧身凌空斩
2024-06-02 05:30:17
王阳被举报!官方紧急回应!

王阳被举报!官方紧急回应!

银河卧谈会
2024-06-01 20:29:34
穆里尼奥谈维尼修斯:金球奖应该颁给获胜者

穆里尼奥谈维尼修斯:金球奖应该颁给获胜者

直播吧
2024-06-02 05:44:13
央视三胎宣传片,网友:这可能是现在人不想生孩子的原因!

央视三胎宣传片,网友:这可能是现在人不想生孩子的原因!

史说新风
2024-05-31 09:23:42
新加坡保安当着日本游客的面对中国游客作羞辱性手势,网友炸锅了

新加坡保安当着日本游客的面对中国游客作羞辱性手势,网友炸锅了

鬼谷子思维
2024-05-31 16:18:19
脖子被撞断!女子看手机遇车祸当场死亡,现场画面奇怪又辛酸

脖子被撞断!女子看手机遇车祸当场死亡,现场画面奇怪又辛酸

就一点
2024-06-01 20:30:09
在泰国被视为毒品,缅甸边境越来越多的人喝它

在泰国被视为毒品,缅甸边境越来越多的人喝它

缅甸中文网
2024-06-01 16:05:03
中国曾三次忍辱负重“装孙子”,完美躲过美国制裁!最终迎来崛起

中国曾三次忍辱负重“装孙子”,完美躲过美国制裁!最终迎来崛起

猫眼观史
2024-05-16 18:11:46
奇迹!四川村民放田水时捕获重达14.3公斤的巨型鲵!

奇迹!四川村民放田水时捕获重达14.3公斤的巨型鲵!

亿通电子游戏
2024-05-31 10:06:12
体坛大佬苟仲文落马,手下四大金刚几乎全落马,儿子老板也被带走

体坛大佬苟仲文落马,手下四大金刚几乎全落马,儿子老板也被带走

邮轮摄影师阿嗵
2024-06-01 22:02:48
林更新在香港冒雨跑步,又高又瘦很自律,腿上有一块淤青 ​​​

林更新在香港冒雨跑步,又高又瘦很自律,腿上有一块淤青 ​​​

素素娱乐
2024-06-01 16:13:30
曝红十字会直升机送烤全羊:涉事男子被扒,照片流出,官方回应

曝红十字会直升机送烤全羊:涉事男子被扒,照片流出,官方回应

求实者
2024-05-31 19:24:36
二叔拿3万,要求我给他儿子捐肾,我开出4个条件,二叔:不要脸

二叔拿3万,要求我给他儿子捐肾,我开出4个条件,二叔:不要脸

星辰故事屋
2024-05-30 17:02:45
接档《庆余年2》?60集射雕英雄传首播将至,郭靖黄蓉颜值成亮点

接档《庆余年2》?60集射雕英雄传首播将至,郭靖黄蓉颜值成亮点

娱乐圈十三太保
2024-06-01 23:59:09
4年2亿美元续约大合同!只是东契奇欧文的玩具!史上最水DPOY……

4年2亿美元续约大合同!只是东契奇欧文的玩具!史上最水DPOY……

篮球实战宝典
2024-05-31 21:59:38
加沙超14000名儿童已丧生 加沙儿童:我们在巴勒斯坦长不大 加沙儿童“六一”得到的不是礼物,而是无休止的轰炸 愿战争停止!

加沙超14000名儿童已丧生 加沙儿童:我们在巴勒斯坦长不大 加沙儿童“六一”得到的不是礼物,而是无休止的轰炸 愿战争停止!

每日经济新闻
2024-06-01 16:21:45
贝林汉姆欧冠圆梦感激父母 多特球迷也会自豪 伤心的是利物浦

贝林汉姆欧冠圆梦感激父母 多特球迷也会自豪 伤心的是利物浦

敖铭
2024-06-02 05:48:17
2024-06-02 06:10:44
侑虎科技UWA
侑虎科技UWA
游戏/VR性能优化平台
1247文章数 864关注度
往期回顾 全部

科技要闻

余承东:不卷价格!雷军:将双班制生产!

头条要闻

小伙投资300万在瑞典开拉面馆生意火爆 1碗面卖100元

头条要闻

小伙投资300万在瑞典开拉面馆生意火爆 1碗面卖100元

体育要闻

女排最强2主攻合体 合砍40分打懵泰国

娱乐要闻

白玉兰提名:胡歌、范伟争视帝

财经要闻

实锤!普华永道,危!

汽车要闻

吉利银河E5 Flyme Auto智能座舱首发

态度原创

房产
时尚
手机
游戏
旅游

房产要闻

重磅!琼海出台楼市新政:住房出租、挂牌计划出售,都可减套数!

伊姐周六热推:电视剧《时光正好》;综艺《快乐老友记 第二季》......

手机要闻

小米澎湃OS再次公布进展通报:相册闪退已解决,部分问题修复中!

《军团要塞2》机器人泛滥 超14万人请愿V社重视一下

旅游要闻

台北故宫博物院新展:文书珍品里的端阳时节

无障碍浏览 进入关怀版