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

v1.2.10での新機能

主な変更点:

変更の全容については、こちらのログを確認してください。

Bolt接続用のAPI拡張

このバージョンでは、Bolt接続によって伝送されるパッケージについて、より多くの計量情報が提供されます。
受信、送信、または喪失されたパケット数の把握が可能になりました。
また、接続のリモートエンドによって確立された接続について、直接またはリレーなのか、種類を確認できるようになりました。

以下は、ゲームサーバー接続時のBoltクライアントでの統計と接続タイプの例を示しています:

C#

using UnityEngine;

namespace Bolt.Samples.GettingStarted
{
    [BoltGlobalBehaviour(BoltNetworkModes.Client)]
    public class ClientMetrics : Bolt.GlobalEventListener
    {
        private void OnGUI()
        {
            var conn = BoltNetwork.Server;
            if (!conn) return;

            GUI.Label(new Rect(10, Screen.height - 140, 300, 20), string.Format("Sent {0}", conn.PacketsSent));
            GUI.Label(new Rect(10, Screen.height - 120, 300, 20), string.Format("Recv {0}", conn.PacketsReceived));
            GUI.Label(new Rect(10, Screen.height - 100, 300, 20), string.Format("Lost {0}", conn.PacketsLost));
            GUI.Label(new Rect(10, Screen.height - 80, 300, 20), string.Format("Type {0}", conn.ConnectionType));
        }
    }
}

強制的なシーン同期

リモートシーンの自動的なローディングの非有効化、およびバージョン1.2.6で追加された機能の拡張によって、強制的な同期を簡単におこなえるようになりました。
この機能は、たとえばプレイヤーの最少人数が集まるのを待っており最初の瞬間にクライアントへのシーンのローディングをおこないたくない場合、そして規定の人数に達してからインゲームのシーンの同期を強制的におこないたい場合に役立ちます。

弊社はこれを高度な機能と考えています。このため、この機能はコードでのみ実装可能で、Bolt SettingsウィンドウのUI要素は削除されます。
ゲームのシーン管理をおこなうため、既存のものを代替する仕組みが必要となるため、この機能は慎重に使用する必要があります。

シーンの自動ローディングを非有効化する方法は、以下のとおりです:

C#

var config = BoltRuntimeSettings.instance.GetConfigCopy();
config.disableAutoSceneLoading = true;

// START SERVER
BoltLauncher.StartServer(config);

// OR

// START CLIENT
BoltLauncher.StartClient(config);

ゲームサーバーが読み込んだのと同じシーンをクライアントからローディングするには、BoltNetwork.LoadSceneSync()を呼び出してください。
これによって、サーバーから直近でローディングされたシーンをクライアントが自動的に読み込みます。
以下のサンプルを参照してください:

C#

public void SyncScene()
{
    if (BoltNetwork.IsClient)
    {
        BoltNetwork.LoadSceneSync();
    }
}

Boltアセットへの検索パス機能

Photon Boltは、コンパイル時にすべてのBoltエンティティが記載されたリストを管理する必要があります。これは、これらのエンティティを内部データベースに適切に登録して、ランタイム時にエンティティをスポーンする必要があるためです。
開発環境に介入することなくデータベース作成を円滑化するため、Boltはゲーム開発中に遅延を引き起こす可能性のある要素があるか、プロジェクトのすべてのフォルダを検索する必要があります。
このバージョンでは、Boltがおこなうエンティティプレハブの検索の対象箇所として、ゲームプロジェクト内の特定のパスのみを選択できるオプションを設定しました。このオプションによって、ディレクトリのすべての階層をロードする必要がなくなりました。

Bolt Prefab Database search paths
Boltプレハブデータベースの検索パス

Bolt Prefabsウィンドウを開き、検索パスを任意の個数で設定します。
これらのパスはいつでも削除/編集できます。
同じ階層に複数のフォルダがある場合には、もっとも特殊なもののみが検索に使用される点に留意してください(パス上の灰色のテキストで表示されます)。
Boltのコンパイル実行時(Bolt/Compile Assembly)、プレハブマネージャーは選択されたパスのみを考慮します。

UDPプラットフォームのカスタムメタデータ

Photon Boltに統合された一部のプラットフォームでは、実行中のインテグレーションに特に関連したメタデータを生成することができます。
ほとんどの場合、これはカスタム情報で通常は、他のプラットフォームでは利用できません。
上記に留意したうえで、弊社はBoltMatchmakingユーティリティクラスに新しいフィールドであるCurrentMetadataを追加しました。これは、アクティブなプラットフォームから生成されたすべてのメタ情報を含むディクショナリーです。
利用可能なデータのリストは今後拡張される可能性がありますので、新しい情報が必要な場合にはぜひご要望をお知らせください。

バージョン1.2.10では、Photon Cloudプラットフォーム(PhotonPlatform)を使用中にピアが接続されている最新のリージョンのデータを生成しました。以下を参照してください:

C#

public string GetCurrentRegion()
{
    if (BoltMatchmaking.CurrentMetadata != null && BoltMatchmaking.CurrentMetadata.ContainsKey("region"))
    {
        return BoltMatchmaking.CurrentMetadata["region"] as string;
    }

    return null;
}
Back to top