はじめに
Unityでゲーム開発をしている,大学3年生のkigです!
最近Photonを使ったオンラインゲーム(マルチプレイゲーム)を開発しています.初めてのオンラインゲームを開発していて,詰まった部分や知っておきたかったことをまとめようと思います!
今回はPhoton Fusion2の共有モードを扱います.
この記事の対象者
前編はどなたでも読んでいただけます.
後編のサンプルプロジェクトのコード解説は,下記サイトのチュートリアルを一通りやり,かつ他の章も読んだ方が対象です.
Photon運営事務局の中の方が書いてくださった記事であり,とてもわかりやすく使い方が書いてあります.一旦手を動かしてみて,どういうふうに動くか確認してみてください.(初めて通信できたときの感動は忘れません...!)
サンプルプロジェクトの解説というより,Photonの知識を得たい!という方は,ぜひ後編の「ポイント」を見てください.
サンプルプロジェクトについて
Photonを解説するにあたり,実際に動く,超シンプルなプロジェクトを公開しています.DLして,Unityで実際に動かしてもらってからこの記事を読んでいただくと,より理解しやすいと思うので,活用してみてください.
Unityroomでのプレイもできます(2人以上でないと遊べないので,ブラウザを複数起動して遊んでください).
Unityバージョンは,6000.0.48f1です.
Github: https://github.com/Keigo77/MultiMathGame
Unityroom: https://unityroom.com/games/samplemulti
MathGameと名前があります.これは,元々もう少しゲームっぽいサンプルを作る予定だったものの名残です... 解説するには複雑なコードになってしまったので,ボツにしました.
サンプルプロジェクトの実行方法(Photonの開発が初めての方向け)
Photonを使うには,AppIDが必要になります.
まず,下記サイトからアカウントを作成してください.
サインイン後,ダッシュボードを開きます.
画面右上の「アプリの新規作成」をクリックします.
アプリケーションタイプ →「マルチプレイヤーゲーム」
Photonの種別 →「Fution」
Select SDK Version →「Fusion2」
アプリケーション名はなんでも良いです.
説明・URLは任意です.入力後,「作成する」をクリックします.
作成すると,ダッシュボードにAppIDが表示されるので,コピーしておきましょう.
コピーしたら.サンプルプロジェクトをUnityで開きます.
本来は,プロジェクトに下記のPhotonAssetをインポートする必要がありますが,今回のプロジェクトにはインポート済みなので不要です.
Unityを開いたら.画面上部タブ「Tools」→「Fusion」→「Fusion Hub」を開きます.
FusionAppIDに,先ほどコピーしたAppIDを入力します.これで,通信ができるようになります.
PhotonFusionとは
PhotonFusionとは,今までもオンラインゲームの開発で定番だったPUN2の後継製品です.
各ゲーム,同時接続数は20まで無料で利用することができます.さらに,1つのゲームに限り,同時接続数は100まで無料で利用することができます[1].
オンラインゲームを開発する他の方法として,Netcode for GameObjects(以下,NGO)もあります.ただ,Photonの方がエラーなどの解決記事,公式サンプルプロジェクトが多く,開発しやすいです[2].そのため,初めてのオンラインゲームは,Photonで開発してみるといいんじゃないかなと思います.
また,Photonには種類がいくつかあり,チャットやボイス機能を簡単に組み込むことができるそうです.
ここでNGOとPhotonの各長所・短所を書きたかったのですが,私はNGOを使ったことがありませんし,これといった比較情報も見つけられなかったので,またNGOを使ってみたときに書いてみようと思います.
Photonが使われている,有名なゲーム作品
Photonを使っています!と公言しているゲームの中でも,有名なものをピックアップします.
・違う冬の僕ら
https://www.photonengine.jp/case/ja/chigaufuyunobokura.html
・REPO
https://blog.photonengine.com/r-e-p-o-multiplayer-success-powered-by-photon/
・RANDOM DICE
https://www.photonengine.jp/case/kr/111percent.html
必須知識
私は最初,オンラインゲームを開発するにあたって勘違いしていたことがあります.それは,オンラインゲームの仕組みについてです.
同期方法のイメージ
最初,マルチプレイは上画像の左側の方法で同期しているのだと思っていました.ネット上にシーンがあり,全員がそこに集まっているのかなと.これのせいで色々理解できずにいました笑
しかし,実際は画像右側の方法で同期しています.プレイヤーが実行した関数(例:アイテムを取得した!)を実行したとすると,それを相手のPCでも実行させて,同期するという方法です.
Unityでオンラインゲームのデバッグをする方法
どうやって1人でオンラインゲームのデバッグをするの...?という方もいると思うので,ParrelSyncというパッケージの紹介をします.これは,Unityのプロジェクトフォルダを複製し,複製されたプロジェクトをUnityEditorで開くことで,同じプロジェクトを同時に複数起動できます.そして同時実行し,デバッグを行います.
まず,上記サイトまたは下記サイトの方法でパッケージをプロジェクトにインストールします.その後,画面上部に「ParrelSync」というタブができます.
「ParrelSync」→「Clones Manager」→「Create new clone」→「Open in New Editor」で,複製&起動ができます.
プロジェクトを複製した分,PCの容量も倍使用することに注意してください.プロジェクトを使用しなくなったら,複製したものは削除するようにしましょう.
「ParrelSync」→「Clones Manager」→「Create new clone」→「Delete」で,複製したプロジェクトの削除ができます.
複製したプロジェクトの名前は,「_clone_番号」となっています.
複製したプロジェクトで,シーンやPrefabを編集しても,元プロジェクトには反映されません. 必ず,cloneと付いていないプロジェクトで編集しましょう.
画像付きの使用方法は,小渕ヒューゴ様の下記記事を参考にしてみてください.
なお,今回のサンプルプロジェクトにはParrelSyncをインストール済みです.
今回作成したサンプルゲームの説明
これから解説する,サンプルゲームの概要を説明します.
最大4人プレイです.
タイトル画面
まず,タイトル画面です.この画面の機能は3つあります.
- ユーザーネームの入力
- 画面左上のテキストボックスに名前を入力することで,ゲーム内でもプレイヤー名が表示されます.
- ランダムマッチ
- ランダムな部屋にマッチングします.
- プレイベートマッチ
- 同じパスワードを入力した人同士でしかマッチングしません.しかし,パスワード入力欄が空の場合はランダムマッチになります.
待機所画面
次に,待機所画面です.
ここは,マッチングしたプレイヤーが集まり,アバターを動かすことができます.動かせるだけです!入ってきた順番に色が決まります.特定条件下で,同じ色のプレイヤーになります(バグです)が,今回はコードのシンプルさを重視して,そのままにしてあります.
「Back」ボタンで退室.「Start」ボタンでゲームが開始されます.なお,「Start」ボタンはホストにしか表示されませんし,2人以上が集まらないと押せないようになっています.
バトル中の画面
最後に,バトル画面です.
画面に出現する黄色いひし形を取ることで,触れたプレイヤー以外にダメージを与えることができます.残り1人になれば,勝利です.
結果表示
勝者が確定すると,勝敗が表示されます.その後,プレイヤー全員で待機所の画面に遷移します.
後編へ
では,いよいよサンプルプロジェクトのコード解説です!
後編に続きます〜
参考文献
[1] o8que,“Photon Fusionで始めるオンラインゲーム開発【Unity】”,https://zenn.dev/o8que/books/photon-fusion ,2025/10/29アクセス.
[2] 00SY0U,“【非術師の猿でも分かる!】Unityにおけるマルチプレイ実装法”,https://note.com/oosyou/n/n0aaa435ddf0a ,2025/10/29アクセス.








