3. 開発時に注意が必要な項目

3.1. NEX 全般

ここでは NEX 全般を使用する際に注意が必要な項目について記載します。

初期化・ログイン

ゲームサーバーにログインするためには、NEX ライブラリ及びその他ライブラリの初期化が必要です。

ログイン・ログアウト頻度

ログイン・ログアウト処理はサーバーにとって負荷の高い処理であるため、なるべく繰り返さない実装にしてください。例えば、オフラインのプレイで、ステージクリアごとにランキングをアップロードする仕様の場合、ステージクリアごとにログイン・ ログアウトを繰り返すような仕様は避けてください。一度ゲームサーバーにログインした後は、理由のない限りログイン状態を保持してください。

非同期処理実行中の AC 切断

AC が切断された場合、NEX は正常に処理を続行できないため、NEX の終了処理を実行する必要がありますが、非同期処理実行中も同様です。非同期処理実行中に AC 切断を検知した場合には、非同期処理をキャンセルして NEX の終了処理を実行してください。非同期処理のキャンセルが難しい場合にはキャンセルを実施せずに終了処理を実施しても構いません。

非同期処理のキャンセル

NEX の非同期 API はすべてキャンセルすることが可能ですが、キャンセルしたタイミングによっては、サーバー上の処理が完了しているケースがあります。例えば、MatchmakeExtensionClient::CreateMatchmakeSession の非同期処理をキャンセルした場合、サーバー上ではマッチメイクセッションが作成されている可能性があります。マッチメイクセッションを参加可能な状態で作成している場合には無管理状態のマッチメイクセッションが作成されてしまう可能性がありますので、特別な理由がない限りは非同期処理でキャンセルを行わないことを推奨します。

NEX の API をコールするスレッド

スレッドモードとして推奨設定の ThreadModeUnsafeTransportBuffer を選択している場合、NEX のすべての API は同一スレッドからコールする必要があります。API が通信するかしないか、同期処理か非同期処理かに関わらず、同一のスレッドからコールしてください。もしくは適切に排他処理を行ってください。

ゲームサーバーによって発行される各種 ID の取り扱い

ゲームサーバーによって発行されるすべての ID には、ゲームサーバーを越えたユニーク性がありません。異なるタイトル間だけでなく、同じタイトルであっても、開発環境、ロットチェック環境、製品環境といったサーバー環境が違う場合にはユニーク性がありません。独自サーバーなどで管理する場合には注意が必要です。例えば、データストアのデータ ID は、ロットチェック環境と製品環境とで同一の ID になる可能性があるため、独自サーバーでデータ ID のみでデータを管理していると、重複する危険があります。ゲームサーバーによって発行される ID を独自サーバー等に保存する場合には、サービストークンに含まれる環境の情報と合わせて管理してください。

NEX で扱う事の出来るデータ数

NEX のランキング、マッチメイク、データストアで、それぞれ想定しているデータ数は 1000 万件程度です。これを越える場合、ユーザー体験に影響をあたえるレベルでのサーバパフォーマンスの低下の可能性があります。データストアの場合、ストレージサーバの使用、不使用を問わず、データの総数が 1000 万件となります。例えば、ユニークユーザー数が 10 万ユーザー想定の場合、各ユーザーが 100 個のデータをアップロードした場合、データの総数が 1000 万件になります。ランキングの場合、ユーザーは各カテゴリ毎に 1 件のデータのみ残すことができるため、ユニークユーザー数が 10 万ユーザー想定の場合、カテゴリが 100 個あった場合にデータの総数が 1000 万件になります。マッチメイクの場合、マッチメイクセッション数が 1000 万になることは通常無いと考えられますが、使用しなくなったマッチメイクセッションは順次クローズするようにしてください。

データの総数が 1000 万件を超える可能性がある場合には、事前に OMAS 掲示板等でご相談ください。

サーバー設定の自動コピー

NMAS によって設定したゲームサーバーの各種設定は、ロットチェック環境のサーバー設置時、製品環境のサーバー設置時にそれぞれコピーされます。従って、NMAS によりサーバー設定を変更する必要がある場合はロットチェック開始前に設定を完了しておいてください。サーバー設置後に開発環境と製品環境の設定を変更する必要がある場合には、NMAS より行ってください。ロットチェック環境のサーバー設置後に、ロットチェック環境の設定変更が必要な場合はロットチェック担当者へご連絡ください。

NEX サーバーに接続するために必要な接続環境

OMAS に表示されているサーバーの IP アドレスおよびポートを解放しただけでは NEX サーバーを使用することはできません。社内回線経由での接続など、制限された環境から接続しようとした場合、この IP アドレスおよびポートにアクセスできるようにしただけでは使用できませんので注意してください。必要なすべての IP アドレス一覧等は提供できませんので、制限のかかっていないネットワーク環境を準備してください。

3.2. ランキング

ここではランキングを使用する際に注意が必要な項目について記載します。

RankingConstants::ORDER_CALCULATION_123 の動作

RankingConstants::ORDER_CALCULATION_123 を指定している場合、同じスコアが複数ある場合には更新時刻が古い方が上位になります。また、同じスコアを登録した場合、更新日時がアップデートされるため、以前より順位が低くなる可能性があります。

タイムスコープを RankingConstants::TIME_SCOPE_ALL もしくは、周期的にリセットされる期間での絞込みのみ使用している場合には、既に登録されているスコアと同スコアの場合にはスコアの登録を行わないようにすることで、順位の逆転を防ぐことができます。

タイムスコープが、現在からの相対的な期間での絞込みに設定されている場合には、同スコアの場合であっても更新日時をアップデートする必要があるため、この方法は使用できません。この動作は仕様となります。

 

3.3. マッチメイク

ここではマッチメイクを使用する際に注意が必要な項目について記載します。

マッチメイク選択条件として MATCHMAKE_SELECTION_METHOD_SCORE_BASED を使用する場合

マッチメイクセッションの選択条件として MATCHMAKE_SELECTION_METHOD_SCORE_BASED を指定する場合で、マニュアルの「サーバーサービス」>「WebAPI」にある「スコア付けによるオートマッチメイク機能向け API」に例として記載してあるパラメータ以外の使い方を考えている場合には OMAS 掲示板等で任天堂にお問い合わせください。パラメーターの設定方法によっては意図した検索結果が得られない可能性があります。

マッチメイクセッションの空き部屋

締め切っていないマッチメイクセッション(空き部屋)がサーバー上に大量に存在する場合、ゲームサーバーの検索負荷が増大し、ゲームサーバーのパフォーマン スが低下する可能性があります。アプリケーション上で募集を終了したマッチメイクセッションは必ずクローズするようにしてください。

また、オートマッチメイク機能を使用している場合には問題ありませんが、 MatchmakeExtensionClient::BrowseMatchmakeSession と MatchmakeExtensionClient::JoinMatchmakeSession を使用して、独自のマッチメイクを行っている場合には、検索条件によってはいつまでもマッチメイクが成立せず、サーバー上に大量の空き部屋が残り続ける可能性がありますので、見つからない場合には MATCHMAKE_SYSTEM_TYPE_ANYBODY を指定して検索した結果の部屋に入る等、空き部屋を埋めていく方向の仕様を検討してください

パスワード制限付きマッチメイクセッションの検索

特定のユーザー同士でマッチメイクを行うために、マッチメイクセッションにパスワードを設定するケースがあります。このように、特定のユーザーのみ参加可能なマッチメイクセッションを検索結果に含めた場合、参加可能なマッチメイクセッションの数が少なくなる可能性があります。この結果ユーザーによるマッチメイクセッションの検索が繰り返され、ユーザー体験が低下したり、サーバー負荷が増大する危険性があります。従って MatchmakeExtensionClient::BrowseMatchmakeSession でマッチメイクセッションを検索する場合には、パスワード付きのマッチメイクセッションを除外して検索する設定を推奨します。

オートマッチのマッチメイク条件が一つである場合の注意

オートマッチを指定した時、マッチメイクの検索条件が一つのみの仕様である場合、同時接続ユーザー数が多い場合にサーバの負荷が増加する可能性があります。大量の同時接続が見込まれるタイトルの場合、ユーザーから見た検索条件は同じであっても、内部的に 2、3 種類にゲームモードを分ける等、分散させることを検討してください。企画上、同時接続数が多く分散も難しい場合には、弊社窓口まで問い合わせください。

3.4. データストア

ここではデータストアを使用する際に注意が必要な項目について記載します。

データの検索条件

データストアのデータの検索時にアップロード時に指定したタグに一致するデータの検索が可能ですが、データ数に偏りが生じるようなタグ設定を行うとサーバーのパフォーマンスが低下する場合があります。例えば、"jp" や "us" など国のカテゴリを表すタグを設定した場合、利用されるタグが一部のものに集中してしまうため、それらのタグで検索を行うとデータベース上で参照するレコード数が増えて負荷が高まり、検索が重くなる場合があります。

そのため、タグを利用する場合には一部のタグに利用が集中しないようにしてください。先の例のような国のカテゴリを設定したい場合には、データタイプを利用することを推奨します。