DWC_InitForProduction

構文

#include <dwc.h>
int DWC_InitForProduction(const char *gameName,
                          u32 gameCode,
                          DWCAllocEx alloc,
                          DWCFreeEx free);

引数

gameName ゲーム名(GameSpyのサービスを使用しない場合はNULL)。マッチメイクできる範囲に影響します。
gameCode 友達関係を結べる範囲。通常は、ゲーム毎に割り当てられるイニシャルコード(英数半角大文字)
【例】イニシャルコードが「NTRJ」の場合は'NTRJ'のように指定します。
alloc メモリ確保関数DWCAllocExへのポインタ
free メモリ解放関数DWCFreeExへのポインタ

返り値

DWC_INIT_RESULT_NOERROR 初期化成功。
DWC_INIT_RESULT_CREATE_USERID DS本体に仮のユーザIDを生成しました。
DWC_INIT_RESULT_DESTROY_USERID DS本体のユーザIDが破壊されていた可能性があるので、仮のユーザIDを生成しました。
DWC_INIT_RESULT_DESTROY_OTHER_SETTING DS本体の接続先設定が破壊された可能性があります。
DWC_INIT_RESULT_MEMORY_FULL ワークメモリの確保に失敗しました。(HYBRIDROM/LIMITEDROMで0x1000バイト、NITROROMで0x700バイト)

説明

DWCライブラリを製品用サーバ向けに初期化する関数です。
本関数は、認証サーバや各モジュールの製品用サーバの設定に加え、DS本体に保存するユーザIDのチェック・作成、アロケータの設定などを行います。

DWCライブラリの初期化関数は、DWC_InitForDevelopment関数/DWC_InitForProduction関数の2種類ありますが、DWCに含まれる他のAPIを呼び出す前にそのどちらかを1回呼び出す必要があります。
※例外として、DWC_Debug_DWCInitError関数、DWC_SetReportLevel関数はDWCライブラリの初期化関数より前に呼び出すことができます。

戻り値に応じて、適切なメッセージを表示するようにしてください。メッセージについては、「NitendoWi-FiConnectionプログラミングガイドライン」をご確認ください。

この関数へ与えるメモリ確保関数及びメモリ解放関数は、別スレッドから使用される場合がありますので、スレッド排他制御を行ってください。

本関数を呼び出す前に、OS_Init関数を呼んでおく必要があります。
※OS_InitTick関数、OS_InitAlarm関数、RTC_Init関数がDWC_InitForDevelopment/DWC_InitForProduction関数内で呼ばれます。

この関数は同期を取る為にPXI割り込みを待ちますので、PXI割り込みを禁止した状態で呼び出さないようにして下さい。



開発用・製品用サーバの切り替えについて

DWC初期化関数は、以下のサーバー選択に影響します。

DWC初期化関数 DWC_InitForDevelopment DWC_InitForProduction
認証サーバー デバッグサーバー 本番サーバー
ランキングサーバー デバッグサーバー 本番サーバー
データストレージサーバー デバッグサーバー 本番サーバー
ダウンロードサーバ デバッグサーバー 本番サーバー

開発・デバッグ時にはDWC_InitForDevelopment関数(開発向け認証サーバ)を使用し、最終ROM作成時にDWC_InitForProduction関数(製品向け認証サーバ)に切り替えて動作確認を行ってください。開発中のテスト段階ではDWC_InitForProduction関数を使用しないようにしてください。また、最終ROMでは、DWC_InitForDevelopment関数のオブジェクトコードが含まれないようにし、DS_MRCやMasterEditorでミドルウェア(使用ライブラリ)を確認したとき、"DEBUGDWCx.x.xx..."という表示が出ないようにして下さい。

なお、DWC_InitForDevelopment関数(開発向け初期化関数)を使用した場合、ホットスポットから認証サーバへの接続ができません。

ビルドタイプがFINALROM版の場合、Wi-Fiコネクション設定内では、どちらのDWC初期化関数を使用したかに関わらず製品向け認証サーバを使用します。

友達管理やマッチメイク処理は開発向けと製品向けサーバの区別がないことに注意してください。リマスターやローカライズ版の開発時にマッチメイクのテストを行う場合、DWC_InitForDevelopment関数でDWCを初期化しても、既に一般市場で発売しているタイトルとマッチメイクしてしまうことがあります。

これを避けるためには、友達無指定ピアマッチメイクのときに、マッチメイクフィルターを使って「製品版」と「デバッグ・開発版」がマッチメイクしないようにする必要があります。(マッチメイクフィルターに関してはDWC_AddMatchKeyString関数を参照してください)



通信単位・友達関係の範囲の設定

Wi-Fiコネクションでは、違うゲーム間での混信を避けるために、本関数で指定するgameNameを用いてゲームタイトル毎に通信単位が設定されます。また、本関数で指定するgameCodeはそれとは別に友達関係の範囲を設定するために使用します。

gameCodeには、通常タイトル毎に割り当てられるゲームコード(イニシャルコード)を指定し、仕向地を越えて友達関係を結びたい場合には、いずれかのゲームコードを共用してください。

仕向地ごとに異なるgameCodeを指定した場合は、友達情報の交換等に以下のような影響を受けます。

友達登録鍵による交換DWC_CheckFriendKey関数による友達登録鍵の正当性確認で不正となります。
DSワイヤレス通信による交換友達情報の正当性を確認する方法はありませんが、友達リストに加えても友達関係は成立しません。
詳細はDWC_CreateExchangeToken関数のリファレンスマニュアルを参照してください。

なお、異なるgameCodeを指定しても、gameNameが同じであれば、友達無指定ピアマッチメイクは可能です。



認証サーバの稼働状況

各認証サーバの稼働状況の確認は、下記のリンクを参照し、「AuthServerisup」という文字列が表示されれば稼動中と判断出来ます。

製品向け認証サーバ開発向け認証サーバ

参照

DWC_CreateUserData

履歴

5.3
関数の仕様変更で、開発用・製品用サーバ用それぞれに初期化関数が分かれたこと、及びゲーム名、イニシャルコード、アロケータの指定が必要になったことに対応
5.1
DWC_Init関数の使用前に呼ばなければいけない関数は、OS_Init関数だけである点について修正して記載

5.1pr2より前の変更履歴はこちら