Unity での HybridCLR ホット アップデートの実装

I.はじめに

HybridCLR は Huatuo (Huatuo) および Wolong (Wolong) ホット アップデート ソリューションとも呼ばれます。最下層は C++ で書かれています。これはホット アップデート ソリューションです。Lua、ILRuntime などとは異なるホット アップデート ソリューションです。HybridCLR はコードを拡張します。純粋
AOT ランタイムから AOT+Interpreter ハイブリッド ランタイムに変更することで、アセンブリの動的な読み込みをサポートし、

HybridCLR 公式 Web サイトのホット アップデートを実現します。

HybridCLR ホット アップデートの原則
IOS では、JIT コンパイルが許可されていません。JIT は、実行時に IL コードをマシン コードに動的にコンパイルし、メモリに保存する必要があるためです。ただし、IOS では、動的に生成された
マシン コードの実行は許可されていません (ランタイムの割り当てによりメモリが許可されません)。 HybridCLRは、解釈および実行するための独自のインタープリターのセットを実装します。解釈および実行では、実行時に追加のローカル マシン コードは生成されませんが、実行時に直接分析される行になります
行ごとに実行され、マシンコードにコンパイルされて実行されますが、メモリに保持されないため、JIT コンパイルの制限を受けません。


2: ホットアップデートとは何ですか?

ホットアップデートとは、ゲームにバグが発生したり、修正や特定の機能の追加が必要な場合に、インストールパッケージを再ダウンロードすることなく、ゲームのコンテンツを更新できることを意味します。ゲームがオンライン中にバグが発生したり、コンテンツを更新する必要がある場合、一般に 2 つの
方法があります。
1 つ目: 新しいインストール パッケージを再パッケージして App Store にアップロードします (レビューが必要で、時間がかかります)。次に、プレイヤーが新しいクライアント インストール パッケージをダウンロードできるようにします (再ダウンロードが必要で、トラフィックを消費します)。 2 つ目
: ゲーム内で更新するには、ゲーム開始時に更新が必要なパッチ パッケージまたはリソースをダウンロードします。1 つ目は
通常、メジャー バージョンの更新時に使用され、ゲームと呼ばれます2 番目のタイプはホット アップデートと呼ばれます。


3: ホットアップデートプロセス

—— バグを発見して修正する ——
AB パッケージにリソースをアップロードし、ホット アップデート ソリューションを使用してコードをアップロードする
—— プレイヤーはゲームを開始してアップデートが必要かどうかを確認する
—— パッチ パッケージをダウンロードする
—— アップデートが成功したかどうかを確認する (たとえば、 、MD5 検証を通じて)
—— ゲームに参加します


4: HybridCLR の利点

——Lua ソリューションのように追加の言語を学習する必要はなく、ILRuntime ソリューションのように非効率な Mono 仮想マシンを使用する必要もありません。——HybridCLR はネイティブ ランタイム レベルの実装であるため
、ホットアップデート部分のタイプはメインプロジェクトのAOT部分と同じで、タイプは完全に同等であり、シームレスに統合されています。コードを生成したりアダプターを作成したりせずに、呼び出し、継承、反映、マルチスレッドを自由に実行できます。


5: ツールのインストールと HybridCLR 環境の構成

ツールのインストール
- Unity のバージョンは 2020 以降である
- Visual Studio がインストールされている必要があるWindows Build Support(IL2CPP)或Mac Build Support(IL2CPP),Mac则需要安装Xcode
- Visual Studio は 2019 バージョン以降である必要がある
- Visual StudioUnity的游戏开发使用c++的游戏开发コンポーネントがインストールされている必要がある

HybridCLR 環境を構成します- https://gitee.com/focus-creative-games/hybridclr_unity.gitまたはhttps://github.com/focus-creative-games/hybridclr_unity.git
をパッケージからインストールします- メニュー バーで HybridCLR を選択します— インストーラー。インストールが成功すると、成功ログがコンソールに出力されます。— PlayerSetting — Scripting Backend が IL2CPP として選択されます。— PlayerSetting — API 互換性レベルが Net 4.x または .Net Framework として選択されます。— PlayerSetting — インクリメンタル GC の使用が選択されています。チェックを外して選択します (インクリメンタル GC は v4.0.0 以降サポートされていますが、ベータ版です)com.code-philosophy.hybridclr包







6: ホットアップデートの実装

——コードを作成してアセンブリを分割する (AOT アセンブリとホット更新されたアセンブリ)
ホット更新されたアセンブリは、ホット更新されていないアセンブリから参照することはできません。

——アセンブリを構成します。メニュー HybridCLR/Settings をクリックして、構成インターフェイスを開きます。ホット アップデートされたアセンブリを hotUpdateAssemblyDefinitions または hotUpdateAssemblies に追加します (hotUpdateAssemblies は dll サフィックスを追加しません)。hotUpdateAssemblyDefinitionsと hotUpdateAssemblies の
2 つのリストに注意してください。
これらを繰り返し追加しないでください。


——メニューを実行してHybridCLR/Generate/Allホット アップデート DLL、AOT DLL、およびいくつかのブリッジ機能を生成し、ディレクトリ内のホット アップデート DLL を
{project}/HybridCLRData/HotUpdateDlls/StandaloneWindows64Assets/StreamingAssets/HotUpdate.dll.bytes
サフィックスを追加する場所にコピーします)(复制后的dll.bytes


——ホットアップデートコード修正後。メニュー コマンドを実行してHybridCLR/CompileDll/ActiveBulidTargetホット アップデート DLL を再コンパイルし
{project}/HybridCLRData/HotUpdateDlls/StandaloneWindows64ディレクトリ内のホット アップデート DLL をパッケージ出力ディレクトリにコピーして、XXX_Data/StreamingAssets/HotUpdate.dll.bytes,プログラムを再実行します。


七:注意事項

——ホット アップデート アセンブリは、非ホット アップデート アセンブリから参照することはできません
——Unity リソース管理システムの制限により、ホット アップデート スクリプトをマウントするリソース (シーンまたはプレハブ) は ab パッケージにパッケージ化する必要があり、ロードするだけである必要がありますホット アップデート DLL。ab パッケージとしてパッケージ化されていない場合、スクリプト欠落エラーが発生します。

おすすめ

転載: blog.csdn.net/LLLLL__/article/details/132765936