PUN Classic (v1)、PUN 2、Boltはメンテナンスモードとなっております。Unity2022についてはPUN 2でサポートいたしますが、新機能が追加されることはありません。お客様のPUNプロジェクトおよびBoltプロジェクトが停止することはなく、将来にわたってパフォーマンス性能が落ちることはありません。 今後の新しいプロジェクトについては、Photon FusionまたはQuantumへ切り替えていただくようよろしくお願いいたします。

v1.2.9での新機能

主な変更点:

すべての変更点のリストは、ここでログを確認してください。

新しいBoltMatchmakingユーティリティクラス

Photon Boltのマッチメイキング機能の向上、Boltセッションを処理するための一貫したAPIの提供、また弊社のクラウドサービスを利用したルーム作成と参加を実現するため、必要な手順をすべて実行する新しいクラスをこのバージョンに含めました:つまり、BoltMatchmakingです。

このユーティリティクラスの主なAPIと、各メソッドの簡単な説明を以下に記載します:

  • BoltMatchmaking.CurrentSession: このピアが接続している現在のセッションを取得します。これは、たとえばカスタムプロパティなどのセッションの補足情報を取得したい場合に有用です。
  • BoltMatchmaking.CreateSession(string sessionID, IProtocolToken token, string sceneToLoad): 現在実行中のプラットフォームを使用してセッションを作成します。ルーム作成時にロードされるよう、任意でプロトコルトークン(またはPhotonRoomProperties)とシーン識別子を渡すことができます。
  • BoltMatchmaking.UpdateSession(IProtocolToken token): 現在のセッションのコンフィグレーションをアップデートします。このメソッドを呼び出すには、ローカルピアはサーバー内に存在する必要があります。
  • BoltMatchmaking.JoinSession(string sessionID, IProtocolToken token): セッションに名前で参加します。セッションの作成に使用したものと同じセッション識別子を使用して、直ちにセッションに参加できます。
  • BoltMatchmaking.JoinSession(UdpSession session, IProtocolToken token): UdpSessionをリファレンスとして使用し、セッションに参加します。UpdSessionの検索には、SessionListUpdatedコールバックを使用するか、またはBoltNetwork.SessionListを参照します。
  • BoltMatchmaking.JoinRandomSession(IProtocolToken token): セッションにランダムに参加します。このコールによって、クライアントはデフォルトの入室モードを使用して、利用可能なセッションに参加します。この際、ピアはできる限り早くルームを満たすように割り当てられます。
  • BoltMatchmaking.JoinRandomSession(UdpSessionFilter sessionFilter, IProtocolToken token): セッションにランダムに参加します。このオーバーロードでは、UdpSessionFilterクラスを使用し、カスタムパラメータを渡すことでプレイヤーが参加するルームをフィルタリングできます。

このクラスの使用方法についての詳細は、こちらの専用ページでご確認ください。

拡張されたエンティティAPI

このバージョンでは BoltEntity APIを、おもにCommand Systemに特化した追加メソッドで拡張しました。これらのメソッドによって、エンティティ上の内部Input Command Queueをより的確に管理できます。

  • BoltEntity.IsInputQueueFull: 各エンティティにキューできるコマンド数には上限があります(デフォルトでは60です)。このプロパティは、内部キューがフルかどうかを示します。
  • BoltEntity.ClearInputQueue(): この機能を特定のエンティティ向けに呼び出すと、内部command queueはクリアされすべてのコマンドが削除されます。
  • BoltEntity.QueueInput(Command cmd、bool force): 新たな引数がQueueInputに追加されました。booleanは、コマンドを個別にキュー する必要がある か、また input queue がフル(この場合には最も古いコマンドを削除する)かどうかを示します。このフラグはデフォルトでfalseに設定されます。

これらのメソッドはすべて、特定の高度なシナリオで使用されることを前提にしています。たとえばネットワーク接続の遅延によってエンティティキューがフルになった場合や、ゲームホストへの再接続時にコマンドリストをリセットしたい場合などです。

Boltのフォルダ階層

Photonシリーズのその他の製品の慣習にしたがい、Photon BoltSDKは現在<Unity Project>/Assets/Photon/PhotonBoltフォルダ内に格納されています。これによって、Photon VoiceSDKなどのその他のソリューションを使用している場合には、より適切にコード管理をおこなうことができます。また、このバージョンではUnityプロジェクト上にPhoton RealtimeSDKの内部利用を表示しました。これによって、何らかの改善点があった場合により迅速なアップデートが可能となり、カスタムのRealtimeクライアント(LoadBalancingClient)の実装を、Photon CloudとBoltのインテグレーションをおこなうための基本クライアントとして使用することができるようになりました(これはBoltの将来的なバージョンに組み込まれる予定です)。

new photon bolt folder hierarchy
Photon Boltの新たなフォルダ階層

アセンブリ定義のサポート

Assembly Definitions は、Unityプロジェクト内で様々な管理アセンブリにスクリプトを管理するための、興味深い方法です。この方法ではコンパイルのパフォーマンスや、ライブラリとコード間のより適切な依存管理が実現されます。 このトピックの詳細はこちらを参照してください。

Photon Boltには、主要なSDK向けに独自のアセンブリ定義設定が含まれるようになり、またユーザーが定義したアセンブリ( .asmdefによって)ファイルもサポートされるようになりました。このサポートは、Boltを使用する際の開発/コンパイル時間を改善するためこのバージョンに含まれました。プロジェクトで新たなアセンブリを定義した際にはBoltコンパイラ(Bolt/Compile Assemblyメニュー)の実行を確認してください。これは、Boltに関連するすべてのクラス(たとえばGlobalEventListenerクラス)をロードするために、ライブラリはこれらのアセンブリを検索および登録する必要があるためです。

photon bolt unity project using assembly definition to organize the code
コード管理に「アセンブリ定義」を使用するPhoton Bolt Unityプロジェクト
Back to top