見出し画像

Unity NetCode & Transport サンプル

以下の記事を参考にして書いてます。

Unity-Technologies/multiplayer

1. ようこそ

Unity Real-time Multiplayer Alpha」リポジトリへようこそ!ここでは、独自のリアルタイムマルチプレイヤーゲームのプロトタイピングを開始するために必要な、すべてのリソースを見つけることができます。

NetCode マニュアル
Transport マニュアル
フォーラム

2. コンテンツ

・sampleproject/ : すべてのマルチプレイヤーサンプルを含むUnityプロジェクト。
・sampleproject/Assets/Samples/Asteroids : NetCodeの概念を示すAsteroidsのクローン。
・sampleproject/Assets/Samples/LagCompensation : Physicsに基づくラグ補正を示すサンプル。
・sampleproject/Assets/Samples/NetCube : 基本的なNetCodeの使い方を示すサンプル。
・sampleproject/Assets/Samples/Ping : 基本的なTransportの使い方を示すサンプル。
・sampleproject/Assets/Samples/Soaker : 典型的な生産負荷をテストするためのTransportのソークテスター。

2. Unity Transportパッケージ

UNet Low API」に代わる、新しい「Transport」パッケージです。このプレビューは、接続の確立とリモートホストへのメッセージの送信をサポートしています。また、データストリームをシリアル化してネットワーク経由で送信するためのユーティリティも含まれています。

3. Unity NetCodeパッケージ

NetCode」パッケージは、マルチプレイヤーゲームでワールド同期を実装するために必要な機能を提供します。ソケットレベルの機能に「Transport」パッケージを使用し、「ECS」用に作成されています。

・サーバーの信頼できる同期モデル。
・RPCサポート。制御フローやネットワークイベントに役立ちます。
・クライアント/サーバーのワールドブートラッピングにより、明確なロジックの分離が可能になり、テスト時のエディタのように、サーバを単一のプロセスで複数のクライアントで実行できます。
・デフォルトで機能する補間およびクライアントとEntityを同期します。
・ネットワークトラフィックデバッグツール
・GameObject変換フローのサポート。ハイブリッドモデルを使用して、マルチプレイヤーをGameObject/MonoBehaviourベースのプロジェクトに追加できます。

4. サンプル

◎ Ping
Pingは、Transportパッケージに含まれるすべてのパーツについて学ぶための良い出発点です。Pingクライアントは、Pingサーバへの接続を確立し、Pingメッセージを送信して、Pongの応答を受信します。Pongを受信すると、クライアントは切断されます。これは、新しいTransportパッケージの使用方法を示す簡単な例です。Pingは複数のシーンで構成され、すべてが「sampleproject/Assets/Scenes/」にあります。

・PingMainThread.unity : Pingのメインスレッドのみの実装。
・Ping.unity : Pingクライアントとサーバの完全にジョブ化されたバージョン。
・PingClient.unity : Ping.unityと同じジョブ化クライアントコードですが、サーバはありません。
・PingServer.unity : ジョブ化されたpingの専用サーバーバージョン。このシーンのヘッドレス(または2019.1のサーバービルド)Linux 64ビットビルドは、Multiplayにデプロイする必要があります。
・PingECS.unity : ジョブ化されたPingサンプルのECSバージョン。

◎ Soaker
同じプロセスで一定数のクライアントとサーバを作成するストレステスト。
各クライアントは、指定されたサイズでメッセージを指定されたレートで送信し、統計を測定します。

◎ Asteroids
NetCodeパッケージの機能を備えた小さなゲーム。

◎ LagCompensation
「Unity Physics」に基づくラグ補償を実装する方法を示すサンプル。NetCodeに基づくゲームでは、クライアントは古い世界の状態を表示します。遅延補償により、サーバーはレイキャストを実行するときにこれを考慮に入れ、プレーヤーが実際にクライアントに表示されているものを狙うことができます。

◎ NetCube
NetCodeパッケージの機能を備えた小さなサンプル。これは、NetCodeに関する「Uniteのプレゼンテーション」で使用されたコードです。

5. インストール

このリポジトリのサンプルを試すには、Unityで「sampleprojects/」を開くだけです。これらのパッケージを使用して新しいUnityプロジェクトを作成することもできます。

・サポートされているバージョンのUnity(2019.3以降)であることを確認してください。
・新しいUnityプロジェクトを作成する。
・NetCodeを使用する場合は、パッケージマネージャーから「Unity NetCode」を追加します。
・Transportは使用するがNetCodeは使用しない場合は、「Package Manager」から「Unity Transport」を追加します。
・パッケージの依存関係は自動的にプロジェクトに取り込まれます。


この記事が気に入ったらサポートをしてみませんか?