各モジュールではステーションの識別子としてステーション ID を使用します。ステーション ID はセッションに参加する際に割り当てられます。
インターネット通信の場合、ステーション ID はフレンドプレゼンスサーバーに割り当てられたプリンシパル ID と同じ値になります。
/*!
@brief セッション内の Station 識別子 StationId の定義です。 @details セッションに参加中のステーション毎に固有の値が割り当てられます。 */ typedef uint64_t StationId; |
セッションに参加しているステーションのステーション ID を 0 から「セッション参加可能台数 - 1」までの範囲の値であるステーションインデックス(StationIndex)に変換する機能を用意しています。また、ステーションインデックスからステーション ID に変換する機能も用意しています。
変換は nn::pia::transport::Transport::ConvertToStationIndex() / ConvertToStationId() で行います。変換関数で変換できるのは、「対象の StataionId についての EVENT_JOIN 通知」から「対象の StationId についての EVENT_LEAVE 通知」までの期間になります。各イベントが通知されるコールバック関数内においても変換可能です。
ステーションインデックスはステーション毎のゲームオブジェクトを配列で管理したい場合に有用です。
インターネット通信の場合、複数のセッションを1つのセッションとして結合させるジョイントセッション機能が使用できます。この機能を使用する場合、結合したセッションへの移行前後でステーション ID の値は変わりませんが、ステーション ID に紐づけられるステーションインデックスの値が変わります。そのため、ステーション毎のゲームオブジェクトの配列インデックスにステーションインデックスを使用している場合、結合したセッションへの移行時に使用するステーションインデックスを更新する処理が必要になります。
ジョイントセッションについての詳細な説明は 7.12. 応用機能 - ジョイントセッション機能 を参照してください。