6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Photon Fusion for Unityを使った自分のプロダクトをサーバーモードに対応させる~準備編

Posted at

はじめ

Photon FusionはドイツのExit Games社が開発し、GMOグローバルサイン・ホールディングス株式会社が日本展開を行っているオンラインゲーム開発向けネットワークエンジンです。

過去の記事では基本的な使い方を中心に紹介してきましたが、殆どがサーバーへのデプロイを必要としないモードの解説でした。

しかし、サーバーへのデプロイを前提にしたゲームを作りたい、例えば多人数対戦ゲームでセキュリティや安定性を高めたい、MMORPGのように常時稼働させたい、といった場合があるかと思います。

前者の場合はBR200、それ以外の場合はFusion Dedicated Serverサンプルが参考になります。

Fusion Dedicated Serverサンプルの解説ページには、ビルドして実行する(自PCでサーバー側プログラムを動かす)までと、実装についての解説があります。

しかしその先のサーバーへデプロイする部分については個々人の状況による部分が多く、具体例がありません。

そこで本記事ではサンプルプログラムをUGSへデプロイして動かす手順についてまとめました。

前提記事

Photon Fusionの基本的な解説は別記事で行っています。詳しく知りたい方は以下のリンクからご参照下さい。

Photon Fusion for Unityの導入手順とPUN2との機能比較

関連記事

https://qiita.com/tags/photonfusion

動作確認環境

Windows 10 Home 21H2

Unity 2020.3.38f1

Fusion Dedicated Server 1.1.2 Build 2

UGSのGSHとは

UGSとはUnity Gaming Serviceの略で、Unityが提供する様々なオンラインサービスの総称です。

今回はUGSのうち、Game Server Hosting(その前提のCloud Content Delivery)をサーバープログラムを設置するために利用します。

サービスは従量課金制ですが、無料枠が多く試しに動かしてみる程度なら無料枠を超えることはないと思われます。

ただし無料枠を超えないにしても、有料サービスを有効化するためクレジットカードが必要になります。

手順

Unityでの作業

初期設定

まずはFusion Dedicated Serverサンプルの解説ページからサンプルプロジェクトをダウンロードし、Unity Editorで開きます。

PhotonのダッシュボードでAppIDを作成して適用、UnityEditorの Edit>Project Setting>Services>Create ProjectID でUnity ProjectIDを作成しリンクしておきます。

サーバープログラムのビルド

準備として、Unity HubからLinux Build Support IL2CPPモジュールを追加し、Project Setting>Player>Configurasion>Scripting Backend を IL2CPP に変更しておく必要があります。

その後Target PlatformをLinuxに変更しビルドします。
Target PlatformをLinuxに

クライアントのビルド

Unity Editor以外も使って多数の接続テストをする場合はクライアントもビルドします。

Target Platformはwindowsのままビルドすれば問題ありませんが、サーバー版のファイルと混ざらないようフォルダは分けておいたほうがよいでしょう。

UGSでの作業

UGSとGame Server Hostingの有効化

まずリンク先の「今すぐ仕様を開始する」から進みUGSを有効化する必要があります。

Game Server Hosting

Game Server Hostingの設定

コンソールのMultiplayerを開くとSetup guideが開くため、それに従い進めます。
Setup guide

参考

Integrate game server

途中SDKを入れるよう指示がありますが、サンプルプログラムに組み込まれているため飛ばします。

Create a build

Build nameは適当な名前で問題ありません。
Create build

Uploadするファイルは、ビルドしたサーバープログラムフォルダのうち以下のファイルです。

  • *.so ファイル
  • *.x86_64 ファイル
  • *_Data フォルダー

Create a Build configuration

Create Build configuration

Game server executable は .x86_64 ファイルを選択します。

launch parameters は -batchmode -nographics -logFile $$log_dir$$/Engine.log に書き換えます。

Configuration variables、Usage settingsはデフォルトで問題ありません。

Create a fleet

Fleet nameは適当で問題ありません。
Create a fleet

Regionはasia、serversはminを1、maxを2にします。

Create a test allocation

設定が問題ないかをテストします。

テスト後Test Allocationsは不要なので、Deallocateで削除して問題ありません。

動作確認

ここまで完了したら、あとは任意のServer instanceを立ち上げ、クライアントプログラムを起動します。

その他

UnityGamingServicesでの接続数表示について

現在の状態ではUGS上で接続数がカウントされません。

3クライアント接続してもカウントされていない様子
3クライアント接続してもカウントされていない様子

カウントをするには、Build configurationのQuery TypeをSQP(Server Query Protocol)に変更し、プログラム側で初期化等をする必要があります。詳しくは今後の記事で解説する予定です。

さいごに

自分はサーバーを使って常時接続可能なオンラインゲームの制作は初めてで、サーバーサイドの知識もほぼない状態でした。しかしそれでも動かすところまでは非常に手早く進むことができました。

ただし、今後ゲームロジックを実装していくにあたって、考慮すべき部分については確認できていないため、今後別の記事でまとめていく予定です。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?