6. インターネット通信

6.1. 接続開始処理の実装

3DS では、いつの間に通信などでアプリケーションに関係なくネットワークに接続している可能性があります。ネットワークに接続中の場合、接続処理を行わなくても、そのままデータのダウンロードを実行することができますが、3DS 上の通信処理はシステムによって管理されているため、システムへの通知なしに利用すると、不意の切断など、予期しない挙動が発生します。

そのため、インターネットに接続する場合は、必ず nn::ac::CTR::Connect 関数、もしくは nn::ac::CTR::ConnectAsync 関数の呼び出しから開始しなければなりません。

インターネット接続を上記の関数呼び出しから開始しているかどうかは、以下の手順で確認することができます。

  1. 本体設定のインターネット接続設定で、接続する AP の SSID もしくはセキュリティキーを間違えて設定し、通信機能は使えるが AP へは接続できない状態にする。
  2. アプリケーションでインターネットへの接続を開始する。
  3. 「003-10xx」や「003-11xx」といった、 AP への接続失敗時のエラーコードが表示される。

 

インターネット通信

インターネット接続

本体設定

nn::ac::CTR::Connect 関数

nn::ac::CTR::ConnectAsync 関数

 

6.2. 合流機能を利用するアプリケーション

合流機能を使用するアプリケーションは、事前に nn::friends::Login 関数を呼び出して、フレンドサーバへの明示的なログイン処理を行うことを推奨します。

システムによるバックグラウンドでのログイン状態でも合流機能を使用することはできますが、アプリケーション自身がログイン処理を行わないとログイン状態の維持が保証されません。

 

インターネット通信

合流機能

フレンドサーバ

ログイン処理

nn::friends::Login 関数

 

6.3. CTR-NEX を利用するアプリケーション

CTR-NEX を使用するアプリケーションは、アプリケーションごとに付与される専用コード(「Game ID」と「Access Key」)を使用してください。

なお、専用コードは OMAS (Online title MAnagement System : ネットワークの使用申請を行う WEB サイト)にて取得することができます。

 

インターネット通信

CTR-NEX

専用コード

Game ID

Access Key

OMAS

 

6.4. 通信エラーの表示タイミング

通信エラーを検知した際には、ユーザーに不利益がないタイミングで、なるべく速やかに表示するようにしてください。

ただし、以下のようにユーザーの不利益にはならない場合は、通知が遅れても問題ありません。

  • ユーザーが能動的に行わない通信(バックグラウンドでのデータ取得など)で通信エラーを検知した場合
    →ユーザーが取得するはずであったデータを利用する際に表示する。
  • データ操作関連で致命的ではないエラー(アプリケーション進行に必須ではないデータの破壊など)を検知した場合
    →データを利用する際に表示する。
  • ムービーの再生中やイベントシーンなどでエラーを検出した場合
    →ムービーの再生終了やイベントシーンの終了後に表示する。

上記以外のケースで、即座にエラー表示を行えない、行いたくない場合は弊社窓口までご相談ください。ユーザーの不利益にならないと判断されたケースがあれば、順次上記に追加していく予定です。

なお、別の方法でエラーになることが事前に判明した場合に、先にエラー表示させても構いません。

 

インターネット通信

通信エラー

エラー表示

 

6.5. いつの間に通信で即時実行専用タスクを使用する場合

いつの間に通信を利用するアプリケーションで、即時実行専用タスクを使用する場合は、以下の点に注意してください。

  • OMAS の申請時に「即時実行」の欄を true にして申請する。
  • タスクの登録は nn::boss::RegisterImmediateTask 関数で行い、引数 pTask には nn::boss::FgOnlyTask クラスのインスタンスを渡す。
  • ダウンロードする URL には BOSS データサーバ側に表示される URL を設定する。
    具体的には、以下の形式でなければなりません。
    https:://npdl.cdn.nintendowifi.net/p01/nsa/BossCode/FGONLYT/(Language)/ArchiveName
  • タスクの実行は nn::boss::FgOnlyTask::StartImmediate 関数で行う。

 

いつの間に通信

即時実行

即時実行専用タスク

OMAS

nn::boss::RegisterImmediateTask 関数

nn::boss::FgOnlyTask クラス

nn::boss::FgOnlyTask::StartImmediate 関数

 

6.6. いつの間に通信でタスクを 1 度だけ即時実行する場合

定期的な実行を行わず、1 回のダウンロードを即時実行で行うようなタスクは、なるべく即時実行専用タスクを利用することを検討してください。

即時実行専用タスクを利用しない場合は、即時実行が完了したあとにそのタスクを削除してください。もしくは、タスクの消尽回数を 1 回に設定して、実行後にタスクが無効化されるようにしてください。消尽回数以外の設定値は通常の NADL タスクに準拠したものにしてください。

タスクの実行後にタスクが削除されているか、消尽回数が 0 になって無効化されているかは、BossLotcheckTool を利用することで確認することができます。

 

いつの間に通信

即時実行

即時実行専用タスク

 

6.7. CTR-NEX のデータストア機能でデータのアップロードを初めて行う場合

初期化された本体や違う本体でアプリケーションを起動すると、PrincipalID が異なるために、今までにデータストア機能でアップロードしたデータにアクセスすることができなくなります。

そのため、CTR-NEX のデータストア機能を利用してデータを初めてアップロードする際に、「違う本体からアクセスした場合や、本体初期化を行った場合はアップロードしたデータは使用できません。」のようなメッセージを必ず表示してください。併せて、取扱説明書にも必ず記載してください。

ただし、以下のようなアプリケーションであれば、メッセージの表示や取扱説明書への記載は不要です。

  • アップロードしたデータをあとでユーザーが参照できないアプリケーション
  • アップロードしたデータが削除されてもゲームの進行に影響しないアプリケーション
  • ダウンロード専用アプリ(ダウンロードした本体以外では起動できず、本体が初期化された場合は SD カードに保存されたセーブデータも利用できなくなるため)

 

インターネット通信

CTR-NEX

データストア機能

アップロード

PrincipalID

 

6.8. 独自サーバーを利用する場合は OMAS で申請したサーバー以外に接続してはいけない

ネットワーク対応ソフトで任天堂が提供する以外のサーバーに接続する際は、直接または間接的に運用管理可能なサーバーのみにアクセス(リンクを含む)を限定してください。また、アクセスするサーバーを OMAS で申請してください。

未登録サーバーへのアクセスは禁止します。未登録サーバーへのアクセスが確認された場合には、弊社にてネットワークサービスを停止する可能性がありますのでご注意ください。

 

インターネット通信

独自サーバー

OMAS

接続禁止

ネットワーク対応ソフト