PhotonFusionのHostモードとSharedモードの違いと使い分け

はじめに

最近PhotonFusionを使った開発をすることが多くなってきて、少しずつ理解が進んできました。 今回は開発を始めるときに必ず知っておかなければならない2つのモードの違いをまとめておきます。

PhotonFusionとは

FusionはPhotonが出しているUnity向けのネットワークライブラリです。ざっくり言うと、複雑なことをあまり考えずにUnityでリアルタイム通信のマルチプレイゲームが作れるものです。料金は同時接続20人まで無料です。

Hostモードと Sharedモード

Fusionには大きく分けてHostモードとSharedモードがあります。この2つでは開発の仕方が大きく変わってくるので、作りたいゲームによって慎重に選ぶ必要があります。

Hostモード

Hostモードではホストがすべてのネットワークオブジェクトに対して権限(StateAuthority)を持ちます。

  • 他プレイヤー含め、ネットワークオブジェクトに関するすべての処理や変更はホストが行います。

  • [Networked]属性がついた変数の変更もホストのみが行なえます。

  • InputAuthorityとなるプレイヤーは各オブジェクトによって異なりますが、StateAuthorityは必ずホストになります。

特徴

  • ラグ補正機能があるためFPSなどの判定がシビアなゲームに適している

  • すべてのネットワークオブジェクトをホストが処理するため、多人数の同時接続には向いていない

  • ホストが切断した場合は基本的にセッションが終了する。(ホストマイグレーションでホストを譲渡することもできるが少し面倒くさい)

※Serverモードはサーバー構築から自分で行う必要があります。動作はHostモードと同じ感じになると思います。

Sharedモード

Sharedモードではプレイヤーそれぞれがネットワークオブジェクトへの権限(StateAuthority)を持ちます。

  • 権限を持つプレイヤーそれぞれがオブジェクトへの変更ができます。

  • [Networked]属性を持つ変数の変更はStateAuthorityを持つプレイヤーのみができます。

  • PUN2と似たような感じで開発できるそうです。(PUN2そんなに触ってないのでわからない)

特徴

  • プレイヤーそれぞれがオブジェクトへの権限を持つため、多人数が同時に接続するゲームなどに適している

  • ラグ補正機能が使えない

  • オブジェクトへの権限を譲渡できるので、接続しているプレイヤーが一人でもいる場合はセッションが生き続ける

実際どっちを使えばいいの?

公式が出している画像を見たら大体どっちを使うべきか判断できます。

ここにあるもの以外では、

  • ラグ補正が必要かどうか → 必要ならHostモード

  • 1ルームへの接続人数はどれくらいか → 多いならSharedモード

  • PUN2やStrixに慣れているか → 慣れているならSharedモード

というようにに考えればいいと思います。