返回介绍

博客

帮助文档

HybridCLR 介绍

发布于 2024-08-03 14:42:57 字数 3314 浏览 0 评论 0 收藏 0

license

logo

HybridCLR 是一个 特性完整、零成本、高性能、低内存近乎完美 的 Unity 全平台原生 c#热更新解决方案。

HybridCLR 扩充了 il2cpp 运行时代码,使它由纯 AOT runtime 变成 AOT+Interpreter 混合 runtime,进而原生支持动态加载 assembly,从底层彻底支持了热更新。使用 HybridCLR 技术的游戏不仅能在 Android 平台,也能在 IOS、Consoles、WebGL 等所有 il2cpp 支持的平台上高效运行。

由于 HybridCLR 对 ECMA-335 规范 的良好支持以及对 Unity 开发工作流的高度兼容,Unity 项目在接入 HybridCLR 后,可以几乎无缝地获得 C#代码热更新的能力,开发者不需要改变日常开发习惯和要求。HybridCLR 首次实现了将 Unity 平台的全平台代码热更新方案的工程难度降到几乎为零的水平。

欢迎拥抱现代原生 C#热更新技术 !

特性

  • 近乎完整实现了 ECMA-335 规范 ,只有极少量的 不支持的特性
  • 零学习和使用成本。对绝大多数开发者来说写代码近乎没有限制。 热更新代码与 AOT 代码无缝工作,可以随意写继承、 泛型反射 之类的代码。不需要额外写任何特殊代码、没有代码生成
  • 完全支持多线程,包含但不限于 volatile、ThreadStatic、async Task 等相关功能和特性。这是其他所有热更新方案都不支持的
  • 几乎完全兼容 Unity 的工作流。包括且不限于支持热更新 MonoBehaviour 、ScriptableObject、 DOTS 技术,资源上挂载的热更新脚本可以正确实例化,这是其他所有热更新方案都不支持的
  • 执行高效。实现了一个极其高效的寄存器解释器,所有指标都大幅优于其他热更新方案。 性能测试报告
  • 内存高效。 热更新脚本中定义的类跟普通 c#类占用一样的内存空间,远优于其他热更新方案。 内存占用报告
  • 支持 MonoPInvokeCallback,可以与 native 代码或者其他语言如 lua、javascript、python 良好交互
  • 支持一些 il2cpp 不支持的特性,如 makeref、 reftype、__refvalue 指令
  • 支持独创的 Differential Hybrid Execution(DHE) 差分混合执行技术,即可以对 AOT dll 任意增删改,会智能地让未改动的函数以 AOT 方式运行,变化或者新增的函数以 interpreter 模式运行,让热更新的游戏逻辑的运行性能基本达到原生 AOT 的水平
  • 支持 热重载 技术,可以 100%卸载程序集
  • 支持现代的 dll 加密技术,有效保障代码安全

支持的版本与平台

  • 支持 2019.4.x、2020.3.x、2021.3.x、2022.3.x、2023.2.x、 6000.x.y 全系列 LTS 版本
  • 支持所有 il2cpp 支持的平台
  • 支持团结引擎和鸿蒙平台

工作原理

HybridCLR 从 mono 的 mixed mode execution 技术中得到启发,为 unity 的 il2cpp 之类的 AOT runtime 额外提供了 interpreter 模块,将它们由纯 AOT 运行时改造为"AOT + Interpreter"混合运行方式。

icon

更具体地说,HybridCLR 做了以下几点工作:

  • 实现了一个高效的元数据(dll) 解析库
  • 改造了元数据管理模块,实现了元数据的动态注册
  • 实现了一个 IL 指令集到自定义的寄存器指令集的 compiler
  • 实现了一个高效的寄存器解释器
  • 额外提供大量的 instinct 函数,提升解释器性能

稳定性状况

HybridCLR 已经被广泛验证是非常高效、稳定的 Unity 热更新解决方案。

当前发布了 极其稳定 的 1.x-5.x 正式版本,足以满足大中型商业项目的稳定性要求。 目前有数千个商业游戏项目完成接入,其中有几百款已经双端上线,上线的项目中包括 MMORPG、重度卡牌、重度塔防之类的游戏。 绝大多数头部游戏公司 (如腾讯、网易)都已经在使用 HybridCLR。

可查看我们已知的头部公司中使用 HybridCLR 并且已经上线的 项目列表

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文