Photon Fusion for UnityでマルチピアモードとMultiplayer Play Modeの組み合わせを検証してみた

:::note warn
執筆時点（2023年5月）では、Multiplayer Play Mode、対応するUnity Editorどちらについてもベータ版であることに注意してください。
:::

# はじめに

オンラインマルチプレイゲームをデバッグする上で重要度も難易度も高いのが、実際に接続を行ってのマルチプレイテストだと思います。

これに関して「[Photon Fusion for Unityでマルチピアモードを利用したデバッグの始め方](https://qiita.com/nimushiki/items/d683b3a17a6431f12b01)」という記事で、Photon Fusionに備わるデバッグ機能であるマルチピアモードについて紹介しました。

これに似た機能として、Unity Technologies社がMultiplayer Play Modeという機能をリリースしました。

https://docs-multiplayer.unity3d.com/tools/current/mppm/index.html#getting-started

本記事ではMultiplayer Play Modeの基本的な使い方を紹介しつつ、マルチピアモードとの違いや併用の仕方について紹介します。

### 前提記事

Photon Fusionの基本的な解説は以下の記事で行っていますので、そちらを参照下さい。

https://qiita.com/nimushiki/items/d6fe4f0cbe0437677fa8

### 動作確認環境

Windows 10 Home 21H2
Unity 2023.1.0b16
Fusion SDK 1.1.6 F Build 696

# Multiplayer Play Modeとは

Multiplayer Play Mode（MPPM）は、Unityのマルチプレイゲーム向けのツール群であるUnity Multiplayer Networkingのうちの一つの機能です。

https://docs-multiplayer.unity3d.com/tools/current/mppm/index.html

今までオンラインマルチプレイのテストをする場合は、ビルドをして実行したり、同一プロジェクトを多重起動するプラグインを使う、複数プロセスで起動するなどしなければいけないため、時間や手間がかかっていました。

MPPMでは、１つのプロジェクトから最大４つの仮想プレイヤーを動かす事ができるため、上記の方法よりも早く手軽にテストすることが可能です。

さらに、他のUnity Multiplayer Networkingからは独立した機能であるため、単体での使用が可能です。

なお執筆時点（2023年5月）では、対応するUnity Editor、MPPMどちらについてもベータ版であることに注意が必要です。

## 準備

MPPMを使うには、以下の手順が必要です。

- Unity Editorの version 2023.1　以降を使用
- package managerで com.unity.multiplayer.playmode をインポート
- MPPMの設定
    - Window > Multiplayer Play Mode　でウィンドウを開く
    - 有効にしたいプレイヤーの数だけチェック
        - 有効になるまで多少時間が必要

あとはEditorで再生をするだけで、有効にしたプレイヤーの数だけウィンドウが開き再生されるため、マルチプレイのテストをすることができます。

## Multiplayer Play Modeの長所

### タグで処理をコントロールしやすい

MPPMウィンドウでプレイヤー毎にタグを設定することが出来ます。

これはスクリプトから取得することができ、通信状況のエミュレート（Unity Multiplayer NetworkingのNetwork Simulatorなど）やチーム分けといった特定のテスト条件をエミュレートする際の切り替え処理に利用できます。

![タグの設定方法](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/018d6856-2d8d-2148-2fbd-0dc19b8b0d6f.png)

### 各プレイヤーが独立している

再生をすると、設定した数だけウィンドウが開きます。ビルドしたものに近く、それぞれ独立して存在しています。

![プレイヤーを2人有効にして再生をした状態](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/22a4e76b-cdd6-05ac-dc3f-a6123b788f40.png)

## Multiplayer Play Modeの短所

### Multiplayer Play Modeも対応するUnity Editorもベータ版

導入する際最も重要なのはこの部分でしょう。MPPMがベータである分には使う使わないの切り替えがしやすいですが、Unity Editorがベータで固定されてしまうのは非常に導入を躊躇する要素だと言えます。

### 4プレイヤーまでしか対応できない

負荷の問題もあり現在は4プレイヤー（メインエディタ１＋仮想プレイヤー３）に制限されています。それ以上の同時接続をテストする場合は他の手段を用意する必要があります。

### 追加したプレイヤーのヒエラルキーは確認できない

メインエディタで表示している分は通常通り確認できますが、仮想プレイヤーのヒエラルキーを確認することはできません。

## マルチピアモードについて

Photon Fusionのマルチピアモードについてですが、MPPMと違い１プレイヤーにつき1つシーンを生成することでマルチプレイを実現しています。
画像はHost P19とClient P0,P1の3プレイヤー分のシーンが動いている様子です。

![マルチピアモードの実行例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2576800/23a0b7cb-b5c6-0b30-2bdd-2fd5a909b4a3.png)

そのため全てのプレイヤーからみた全てのゲームオブジェクトの状態を確認することができます。ただし、基本的に1つの画面しか使えないため、同時プレイのテストには不向きです。

詳しくは「[Photon Fusion for Unityでマルチピアモードを利用したデバッグの始め方](https://qiita.com/nimushiki/items/d683b3a17a6431f12b01)」を参照してください。

## Multiplayer Play Modeとマルチピアモードの併用

MPPMとマルチピアモードは、今のところ特に問題なく併用が可能です。通常Photon Fusionを使用するのと同じように、以下の手順で使えるようになります。

- Photon Fusionをセットアップ
    - SDKのインストール
    - AppIDの設定
    - 設定でPeerModeをMultipleに変更

主に以下の2つの点について、お互いの短所を補いあうことができます。

### カメラの分割について

マルチピアモードでは画面を１つしか使えないため、プレイヤー毎にカメラを割り当てることが困難です。これは対戦など同時に別々の操作をしたり相手からどう見えているかといったテストをしにくくしています。

MPPMではプレイヤー毎にウィンドウが開くため、その問題を解決できます。

### ヒエラルキーの確認について

MPPMではメインエディタ以外のヒエラルキーは確認できませんが、マルチピアモードで追加したプレイヤーについては可能です。

# まとめ

MPPMはまだベータ版ではあるものの、特に問題なくマルチピアモードと併用が可能でした。さらにお互いの短所を補いあえるため、お勧めできる組み合わせです。

ただし現在対応するUnity Editor自体がベータであるため、プロジェクトに正式採用する状況になるまでは多少時間がかかりそうです。