
こんにちは🐊 新卒フロントエンドのK.Sです。
私は以前、UnityとPhoton EngineのPUN2を使用して簡単なオンラインマッチングシステムを作成したことがあります。
PUN2はPhoton Unity Networking2の略の通りUnity用なのですが、Photon Realtimeを使用することで、他の開発環境のwebアプリやモバイルアプリでもオンラインマッチングを実現することができます。
今回はPhoton Engineの解説からAppIDの作成までやってみます。
こちらのサイトを参考にさせていただきました。 doc.photonengine.com zenn.dev
Photon Engineとは?
Photon Engineは、オンラインゲーム向けのリアルタイム通信を提供するクラウドサービスです。 プレイヤー同士の接続やデータ同期といった、オンライン化で最も難しい部分をまとめて担当してくれます。
最大の特徴は、自前でゲームサーバーを構築・運用しなくてもマルチプレイを実現できる点です。 そのため、特に Unity を使ったゲーム開発では定番の選択肢として知られています。
Photon には用途別にいくつかのサービスがあります。
PUN2(Photon Unity Networking 2)
Unity 専用の Photon SDKです。コンポーネントを追加するだけで同期処理が書けるなど、便利なメソッドが用意されています。
初心者向け・小〜中規模のゲームに向いています。
Photon Fusion
Fusionは、Unity用の新しい高性能な状態同期ネットワークライブラリです。 Fusion 2 - Fusion 2 とは? | Photon Engine
PUN2がレガシーとなり、後継として2022年3月にリリースされました。
Photon Realtime
最も低レベルな APIであり、PUN2なども内部でこれが動いています。
その分同期方法を自分で設計できたり、Webやモバイルアプリなど柔軟に対応ができます。
今回はこちらを使用していきます。
接続と同期
オンラインゲームでは大きく分けて、
「接続」と「同期」という2つの問題を解決する必要がありますが、
Photon はこの両方をまとめて提供してくれます。
接続の流れ
Photon に接続する際の基本的な流れは次の通りです。
- クライアントが Photon に接続する
- ロビーに入る
- ルームを作成、または既存のルームに参加する
- 同じルームにいるプレイヤー同士が通信できるようになる
この一連の流れを、ほぼ API を呼ぶだけで実現できるのが Photon の強みです。 実際にはいくつかのサーバーを経由するのですが、それは後ほどご説明します。
同期の方法
同期とは、誰がどこにいるか・どんな操作をしたかといったゲーム状態をプレイヤー間で共有することです。
Photon では主に以下の方法で同期を行います。
・状態同期
プレイヤーの位置やステータスを定期的に送信します。
・イベント同期
攻撃した、ボタンを押したなどの出来事を通知します。
PUN2 や Fusion では状態同期がかなり自動化されており、
Realtime API では、RaiseEvent などを使って明示的に同期します。
サーバーの種類
Photon の内部には役割ごとにいくつかのサーバーが存在します。
ネームサーバー
最初に接続する窓口です。クライアントを適切なリージョンへ振り分ける役割をします。
マスターサーバー
ルーム一覧の取得を行ったり、マッチングの待機場所として使われます。
ゲームサーバー(ルーム)
実際にプレイヤー同士が通信する場所です。同じルームにいるプレイヤーだけが同期されます。
図にすると以下のようになります。

これらを開発者が意識して管理する必要はほとんどなく、Photon が裏側で自動的に処理してくれます😊
サーバーの準備
Photon では、公式サイトにログインしてアプリケーションを作成することで利用を開始します。 では早速ですが、実際に行っていきましょう!
サインイン
- Photon公式ページにアクセスし、サインインをクリック

- 以下から手順に従ってアカウント作成

- アカウント作成に成功し以下の画面になればOK

アプリ作成
- 「ダッシュボード」をクリック

- 「アプリの新規作成」をクリック

- 「アプリケーションタイプを選択する」は適切な方を選択

- 「Photonの種別」を
Realtimeに設定 - 「アプリケーション名」などは自由に設定し「保存」をクリック

これでアプリケーションの作成は完了です。
ダッシュボード画面に表示されるApp IDは次回のブログで使用するので、サインインできるようにしておきましょう!

まとめ
今回はPhoton Engineのご紹介とアプリ作成までを行いました。次回は実際にマッチングできるWebアプリを作成したいと思います。良ければそちらもご覧ください。
ご覧いただきありがとうございました🐊
おわりに
KENTEMでは、様々な拠点でエンジニアを大募集しています! 建設×ITにご興味頂いた方は、是非下記のリンクからご応募ください。 recruit.kentem.jp career.kentem.jp