セッションの挙動はアプリケーションに合わせて調整できます。
許容される最大無通信時間など、セッション処理の挙動に関連する設定値を任意で変更できます。設定を任意の値に変更する場合は、Session::Startup の引数として渡す StartupSetting を継承した構造体のメンバーに値を設定します。変更可能な設定値は以下の通りです。
アプリケーション側で任意の値に変更する場合、各ステーションの間で設定値が異なることは無いようにします。
StatupSetting の値を変更しないで Session::Startup を呼び出した場合、各設定にはデフォルト値が使用されます。デフォルトの設定値は以下の通りです。
最大無通信時間およびキープアライブ送信間隔の設定値は、アプリケーションの仕様によってはパケロス耐性に直結します。
例えば、インターネット通信のデフォルト設定の「最大無通信時間:10 秒」「キープアライブ送信間隔:1 秒」の場合ではアプリケーションが一定期間何も送信しない状態で、あるステーション間で 10 回連続してキープアライブ送信がパケロスすると、そのステーションと通信断絶したと判断します。
ただし、アプリケーションがキープアライブ送信間隔よりも短い間隔で各ステーションに対して送信する仕様だった場合、システム側がキープアライブ送信をすることはありません。
// セッションのスタートアップ時に設定します
// 設定値の変更例 const u32 MaxSilenceTime = 15000; // 最大無通信時間 :15000 [msec] const u32 KeepAliveSendingInterval = 3000; // キープアライブ送信間隔 :3000 [msec] // 自分自身のステーションと関連付けるプレイヤー情報(ゲーム画面に表示する名前)の設定 nn::pia::transport::Station::PlayerInfo playerInfo; nns::pia::Session_GetLocalPlayerInfo(&playerInfo); // スタートアップ設定 nn::pia::inet::NexSessionStartupSetting startupSetting; startupSetting.playerInfo[0].Copy(&playerInfo); // プレイヤー情報 startupSetting.maxSilenceTime = MaxSilenceTime; // 最大無通信時間 startupSetting.keepAliveSendingInterval = KeepAliveSendingInterval; // キープアライブ送信間隔 // スタートアップ result = nn::pia::session::Session::GetInstance()->Startup(startupSetting); if (result.IsFailure()) { // エラー処理 } /* セッションの構築 or 参加処理へ */ |