Unturnedの内部構造:人気ゾンビサバイバルゲームのソースコードを解剖する
多くのゲーム開発者は、大規模なオープンワールドと安定したネットワークコードをどのように両立させているのか、長年疑問を持っていました。答えは目の前にあることもあります。Smartly Dressed GamesがU3-SDKをオープンソースとして公開しました。これはUnityエンジンで構築されたヒットゲームUnturnedの「スケルトン」です。
mods用の大規模SDK実装の例を探していた際に、このリポジトリを発見しました。これは単に新しい帽子や武器を作成するためのスクリプト集ではありません。ここにあるのはゲームのコアソースコードであり、何百万人ものプレイヤーを抱えるプロジェクトが10年以上にわたってどのように生きてきたか、進化してきたかを明らかにしています。
なぜ開発者は他人のSDKを掘り下げるべきか
Unityで自分のゲームを作っているなら、YouTubeのチュートリアルは往々にして「無菌的な」例を示しがちだということが分かるでしょう。現実には、大規模なインベントリの最適化、ネットワーク越しの車の同期、そしてその他多くの問題に対処する必要があります。
U3-SDK интересен тем, что это живой проект. Он обновляется почти ежедневно. Это отличная возможность увидеть, как профессионалы организуют архитектуру крупного проекта на C#, как они работают с ассетами и как выстраивают процесс загрузки модов из Steam Workshop.
U3-SDKは生きているプロジェクトであり、ほぼ毎日更新されています。プロフェッショナルが大規模なC#プロジェクトの建築をどのように整理しているか、アセットをどのように扱うか、Steam Workshopからのmod読み込みプロセスをどのように構築しているかを見る絶好の機会です。
リポジトリの中身
このプロジェクトはUnity 2022.3.62f3をベースとしています。これはかなり最近のLTSバージョンなので、コードはUnity 5時代の骨董品のように見えません。クローン化してシーンGameStartup.unityを開くと、ゲームの動作環境に直接身を置くことができます。
アーキテクチャとネットワーキング
ここでの最も素晴らしい点の1つはネットワーキングの実装です。Unturnedは数百人のプレイヤーで動作するサーバーで知られています。SDKでは、タスクがクライアントとサーバーの間でどのように分散されているかを見ることができます。例えば、弾丸の命中やキャラクターの移動がどのように処理されて遅延を最小限に抑えているかです。
アイテムとクラフトシステム
インベントリシステムの作成を試みたことがあるなら、それがどれほど頭痛の種であるか分かるでしょう。U3-SDKでは、アイテムデータベースがどのように実装されているかを研究できます。これは単なるJSONリストではなく、さまざまなデータ型、摩耗状態、カスタマイズをサポートする複雑な構造です。
コンテンツ作成ツール
開発者のNelson Sextonは、SDKに複雑なロジック作成の完全な機能を追加しました。公式チャンネルでは、このコードをベースとした自律誘導ロケットの作成を示すビデオがあります。これはゲームのAPIの動作の明確な例です:標的獲得から弾丸の飛行物理まで。
PCでこれを実行する方法
設定プロセスはできるだけ透明性が高く行われていますが、Steamでゲームがインストールされている必要があります。SDKは重いバイナリとアセットをUnturnedのメーフォルダから取得するためです。これは賢明な解決策です:リポジトリの重量は多くなく、ゲームの全コンテンツにアクセスできます。
- リポジトリをクローンします。
- Hubから必要なUnityバージョンをインストールします。
- Steamを起動し、Unturnedがインストールされていることを確認します。
- プロジェクトを開き、開始シーンでPlayを押します。
ちなみに、コードを掘り下げる予定なら、Visual Studio with Unityと.NETデスクトップ開発ワークロードをすぐにインストールすることをお勧めします。これがないと、クラス間の移動が拷問になります。
プロジェクトへの実用的な価値
ゾンビアポカリプスのゲームが好きでなくても、U3-SDKを使用できるシナリオがいくつかあります:
- パターンの学習。高負荷プロジェクトでシングルトン、リソースマネージャー、イベントシステムがどのように実装されているかを確認できます。
- 最適化。Unturnedは非常に弱いハードウェアでも動作します。コードにはメモリとCPU時間の節約に関する多くの興味深いソリューションがあります。
- modの作成。これは明白な道です。プラグインがサーバーを「クラッシュ」させる理由を推測する代わりに、ゲームのソースコードのコンテキストで直接デバッグできます。
ダウンロードする価値はあるか
ゲーム開発でまだ始めたばかりなら、プロジェクトはオーバーロードされているように見えるかもしれません。コードの量が多く、クラス間の接続はさらに多いです。しかし、Unityで最初の打撲傷を負ったことがある人にとっては、これは本物の教科書です。
ここに「銀の弾丸」はありませんが、時間のテストを経たソリューションがあります。リポジトリは積極的に生きており、約200の未解決の問題と定期的なコミットがあります。成功した商業ゲームがコミュニティにこれほど開かれているのは珍しいケースです。
これは、サンドボックスアーキテクチャ、ネットワークコード、拡張可能なシステムの構築を理解したい人々に適しています。Steamでmod支持的你自己的ゲームを発表する予定なら、U3-SDKを研究する必要があります—少なくとも、最善のやり方を確認するためだけでも。
関連プロジェクト