ビットレート判定機能とは、アップリンク方向の通信回線のデータ転送容量(ビットレート)がアプリケーションの要求水準を満たすかどうかを判定する機能です。
測定されたビットレートがアプリケーションの要求水準に満たなかったとしても、Pia はそのステーションの参加を妨げません。要求水準に満たなかったステーションの扱いはアプリケーションに委ねられます。
ビットレートなどの通信環境を元に、プレイヤーがゲームに参加することを制限する場合は事前に弊社にご相談ください。
以下にビットレート判定機能の使用方法を示します。
ビットレート判定機能の使用の有無は Session インスタンス作成時に指定します。
nn::pia::session::Session::Setting sessionSetting;
sessionSetting.bitRateCheckMode = nn::pia::session::BitRateCheckMode_Enable; // ビットレート判定機能を利用 . . . nn::pia::session::Session::CreateInstance(setting); |
アプリケーションが要求するビットレートの下限値と、ビットレート測定時に送信する IP パケットサイズは、Session のスタートアップ時に指定できます。
ビットレート判定機能有効時に、Session インスタンスを破棄せずにビットレート判定を行わないようにしたい場合には isBitRateCheckSkipped メンバ変数を true に設定します。これによりセッション参加処理中に行われるビットレート判定処理をスキップできます。スキップした場合、GetUplinkBitRate() で取得できるビットレート値が更新されず、最後にビットレート判定を行った際の値が返ります。
bitRateMeasuringSpan メンバ変数で測定処理を行う時間を指定することも可能ですが、長い時間を設定するとセッション参加処理の完了に必要な時間が増大するのでデフォルト値をそのまま利用することをお勧めします。
nn::pia::inet::NexSessionStartupSetting startupSetting;
startupSetting.uplinkBitRateLowerLimit = 200 * 1000; // アプリケーションが要求するビットレート。単位は bps。 startupSetting.bitRateCheckPacketSize = 1024; // ビットレート測定時に送信する IP パケットサイズ。単位はバイト。 startupSetting.isBitRateCheckSkipped = false; // ビットレート判定処理をスキップするかどうか。 startupSetting.bitRateMeasuringSpan = 1000; // ビットレート測定にかける時間。単位は msec。 . . . nn::pia::session::Session::GetInstance()->Startup(startupSetting); |
ビットレートの測定処理が終了すると、Session::IsBitRateCheckCompleted() が true を返します。このタイミングで Session::GetUplinkBitRate() を呼び出します。得られる値の単位は bps です。
もし相手からの応答がなかった等の理由で測定値が得られなかった場合は、ビットレートとして負の値がセットされます。
nn::pia::session::Session* pSession = nn::pia::session::Session::GetInstance();
if (PIA_IS_VALID_POINTER(pSession)) { if (pSession->IsBitRateCheckCompleted()) { int32_t bitRate = 0; nn::pia::Result r = pSession->GetUplinkBitRate(&bitRate); if (r.IsSuccess()) { PIA_SAMPLE_PRINT("bitRate: %d\n", bitRate); // 測定値が得られなかった場合は、負の値がプリントされます。 } } } |