ウィンドウズマックソフトウェア設定セキュリティAndroid生産性リナックスパフォーマンスAppleデバイス管理 すべて

Unityでのマルチプレイヤーの設定方法

編集済み 1 日前 によって ExtremeHow 編集チーム

ユニティマルチプレイヤーネットワーキングゲーム開発オンラインLANスクリプティングC#サーバークライアントフォトンミラーウィンドウズマックリナックス

Unityでのマルチプレイヤーの設定方法

翻訳が更新されました 1 日前

Unityはビデオゲームを開発するための最も人気のあるプラットフォームの1つであり、マルチプレイヤー機能を設定することで、プレイヤーが互いに対話できるようにしてゲーム体験を向上させることができます。この詳細なガイドでは、Unityでマルチプレイヤーを設定する方法を紹介し、開始から終了まで知っておくべきことをすべてカバーします。このガイドは、マルチプレイヤーゲームのセットアップに不慣れな初級および中級のUnity開発者を対象としています。

Unityにおけるマルチプレイヤーの紹介

マルチプレイヤーゲームでは、複数のプレイヤーが同じゲーム環境で対話したりプレイしたりすることができます。一緒のデバイスにいる場合でも、インターネットで接続されている場合でもです。Unityでマルチプレイヤーを設定する際には、ネットワーキング、同期、プレイヤー間の通信などの基本的なコンポーネントを理解する必要があります。

適切なネットワークソリューションの選択

開始する前に、プロジェクトに最適なネットワークソリューションを選択することが重要です。Unityはネットワーキングのためにいくつかのオプションを提供しており、それぞれ独自のメリットがあります:

このガイドでは、UnityのGameObjects用netcodeを使用します。これは、明確なアプローチを提供し、Unityの既存のシステムとよく統合されているからです。

ステップ1: プロジェクトのセットアップ

まず、新しいUnityプロジェクトを作成します。Unity Hubを開き、新しいプロジェクトボタンをクリックし、ゲームに合ったテンプレート(2Dまたは3D)を選択してプロジェクトに名前を付けます。

GameObjects用Netcodeのインストール

プロジェクトを作成した後、UnityのGameObjects用Netcodeパッケージをインストールする必要があります:

  1. Unityプロジェクトを開く。
  2. Windows > パッケージマネージャーに移動します。
  3. パッケージマネージャーで+ 追加アイコンをクリックし、パッケージ名で追加...を選択します。
  4. ダイアログボックスにcom.unity.netcode.gameobjectsを入力して追加をクリックします。

ステップ2: 基本的なネットワーキングのセットアップ

netcodeパッケージをインストールした後、基本的なネットワークインフラストラクチャを設定し始めます。ネットワークロジックを処理するスクリプトを作成することから始めましょう。

ネットワークマネージャーの作成

NetworkManagerは、マルチプレイヤーゲームの状態とロジックを管理するために必要です。NetworkManagerという名前の新しいスクリプトを作成します:

// NetworkManager.cs
using Unity.Netcode;
using UnityEngine;
public class NetworkManagerScript : MonoBehaviour {
    private void Start() {
        Debug.Log("ネットワークマネージャーが起動しました。");
    }
    public void StartHost() {
        NetworkManager.Singleton.StartHost();
    }
    public void StartClient() {
        NetworkManager.Singleton.StartClient();
    }
    public void StartServer() {
        NetworkManager.Singleton.StartServer();
    }
}

このスクリプトは、ホスト、サーバー、またはクライアントモードでゲームを開始するためのメソッドを提供します。このスクリプトをシーン内のGameObject、例えばGameControllerにアタッチします。

ネットワークプレハブの設定

マルチプレイヤーゲームでは、プレイヤーとオブジェクトがすべてのクライアントとホストにわたって同期される必要があります。ゲームに参加する各プレイヤー用にインスタンス化されるプレイヤープレハブを設定します:

  1. シーン内にプレイヤーオブジェクトを作成します。例として、シンプルなキューブやキャラクターモデル。
  2. プレイヤーオブジェクトをAssetsフォルダーにドラッグしてPrefabを作成します。
  3. プレイヤープレハブにNetworkObjectコンポーネントを追加します。
  4. Unityエディターで、NetworkManagerScriptをアタッチしたゲームオブジェクトをクリックします。
  5. インスペクターのネットワークセクションで、プレイヤープレハブをNetwork Prefabsリストに割り当てます。

ステップ3: プレイヤーの移動の実装

マルチプレイヤー環境でのプレイヤー間の相互作用には、移動を実装し、その移動をネットワークを越えて同期する必要があります。プレイヤーの移動を処理するスクリプトを作成し、それをプレイヤープレハブにアタッチします:

// PlayerMovement.cs
using UnityEngine;
using Unity.Netcode;
public class PlayerMovement : NetworkBehaviour {
    public float moveSpeed = 5f;
    private void Update() {
        if (IsOwner) {
            float moveX = Input.GetAxis("Horizontal");
            float moveZ = Input.GetAxis("Vertical");
            Vector3 move = transform.right * moveX + transform.forward * moveZ;
            transform.position += move * moveSpeed * Time.deltaTime;
        }
    }
}

このスクリプトでは、プレイヤーがオブジェクトを所有している場合にのみ移動を許可し、正しいプレイヤーだけがキャラクターを制御できるようにしています。

ステップ4: 同期とネットワーキング

プレイヤーが移動できるようになったら、その動きやアクションがネットワーク上のすべてのピアに同期されることが重要です。Unityのnetcodeは、NetworkTransformsやRPC(リモートプロシージャコール)を介してその能力を提供します。

ネットワーク転送

NetworkTransformコンポーネントは、位置の変更を自動的に同期させることができます。このコンポーネントをプレイヤープレハブに追加します。

プレイヤーのインタラクションのためのRPC

リモートプロシージャコール(RPC)は、リモートクライアントやサーバーで呼び出されるメソッドです。これらは、プレイヤーのアクションやインタラクションなど、すぐに実行される必要があるイベントに使用されます。

// RPCコールの例
[ServerRpc]
void PerformActionServerRpc() {
    // 例: アイテム状態の更新を行うアクション
    Debug.Log("サーバーがアクションを実行中。");
}

サーバーRPCはクライアントによって開始され、サーバーで実行されます。これらは、アクションを検証したり、すべてのプレイヤーに変更を伝播したりするのに理想的です。

ステップ5: 機能のテスト

基本的なネットワーキングのセットアップが完了したら、マルチプレイヤー機能をテストします。Unityは、マルチプレイヤーゲームを簡単にテストするためのネットワークマネージャーUIを提供しています。

構築とテスト

ゲームの複数のインスタンスを作成して実行し、ホストとクライアントプレイヤーをシミュレートします:

  1. ファイル > ビルド設定...に移動します。
  2. 現在のシーンがビルドに追加されていることを確認します。
  3. ビルドをクリックして、ゲーム実行可能ファイルを作成します。
  4. 1つのインスタンスをホストとして、もう1つをクライアントとして実行し、マルチプレイヤーの接続性とインタラクションをテストします。

高度なトピック

基本的なマルチプレイヤーのセットアップが正しく機能するようになったら、マッチメイキング、専用サーバー、ネットワークの最適化などの高度なトピックを検討してください。

マッチメイキング

マッチメイキングは、マルチプレイヤーゲームでプレイヤーをペアリングすることです。この側面については、UnityのマッチメイキングサービスやPhoton Cloudなどのサードパーティサービスを使用することを検討してください。

専用サーバー

専用サーバーを使用することで、安定性の向上や遅延の低下など、多くの利点があります。クライアントとは別にサーバーロジックを展開し、スケーラビリティを高めることができます。

結論

Unityでマルチプレイヤーを設定するには、ネットワーキング、同期、効率的なプレイヤー間のインタラクション管理の基本を理解する必要があります。このガイドに従うことで、プレイヤーの移動とテストコンポーネントを備えた基本的なマルチプレイヤープロジェクトを設定する方法を学びました。具体的なゲームのニーズに基づいて設定を微調整し、豊かなマルチプレイヤー体験のためにUnityの広範なネットワーキング機能を探求し続けてください。

記事の内容に誤りがある場合, あなたは


コメント