#include <dwc.h>
BOOL DWC_ConnectToAnybodyAsync(DWCTopologyType topology,
u8 maxEntry,
const char *addFilter,
DWCMatchedSCCallback matchedCallback,
void *matchedParam,
DWCNewClientCallback newClientCallback,
void *newClientParam,
DWCEvalPlayerCallback evalCallback,
void *evalParam,
DWCConnectAttemptCallback attemptCallback,
u8 *connectionUserData,
void *attemptParam);| topology | 接続形態。DWCTopologyTypeの中から一つ指定します。 |
| maxEntry | 要求するネットワーク構成人数(自分も含む)。2〜32の値が設定できる。 |
| addFilter | ゲームで追加したいマッチメイク条件文字列。条件を追加しない場合はNULLを渡す。条件はスタンダードなSQLの書式で書くことができます。設定できる文字列長は最大127文字で、デバッグビルドでは文字数オーバチェックをしています。文字列はコピーしてライブラリ内で保持します。 |
| matchedCallback | 接続完了コールバック関数へのポインタ。1人接続するごとに呼ばれる。 |
| matchedParam | 接続完了コールバック用パラメータ。 |
| newClientCallback | 新規接続クライアント通知コールバック関数へのポインタ。 |
| newClientParam | 新規接続クライアント通知コールバック用パラメータ。 |
| evalCallback | プレイヤー評価コールバック関数へのポインタ。 |
| evalParam | プレイヤー評価コールバック用パラメータ。 |
| attemptCallback | 接続受付判定コールバック関数へのポインタ。 |
| connectionUserData | 自分の接続受付判定用パラメータバッファへのポインタ。u8[DWC_CONNECTION_USERDATA_LEN]分のバッファであること。このバッファの内容は、ライブラリにコピーされるので、本関数呼出し後は開放されていても構わない。NULLを指定した場合、自分の接続受付判定用バッファの内容はすべて0に設定される。 |
| attemptParam | 接続受付判定コールバック用パラメータ |
| TRUE | 処理開始。コールバック関数で結果が通知される。 |
| FALSE | 本関数を呼んで良い状態ではない |
友達を指定せずに、人数指定でグループを作成します。これを友達無指定ピアマッチメイクと呼びます。
引数addFilterで、マッチメイクの候補として検索するプレイヤーの条件を設定することができます。このフィルタ文字列内で使用するためのマッチメイク指標キーは、予めDWC_AddMatchKeyInt関数、DWC_AddMatchKeyString関数を用いて登録しておく必要があります。
友達管理やマッチメイク処理は開発向けと製品向けサーバの区別がないことに注意してください。リマスターやローカライズ版の開発時にマッチメイクのテストを行う場合、DWC_InitForDevelopment関数でDWCを初期化しても、既に一般市場で発売しているタイトルとマッチメイクしてしまうことがあります。
これを避けるためには、友達無指定ピアマッチメイクのときに、マッチメイクフィルターを使って「製品版」と「デバッグ・開発版」がマッチメイクしないようにする必要があります。(マッチメイクフィルターに関してはDWC_AddMatchKeyString関数を参照してください)
また、引数evalCallbackを指定すれば、マッチメイクの候補プレイヤーを見つける度に指定された評価コールバック関数が呼び出されます。評価コールバック関数内では、DWC_GetMatchIntValue関数、DWC_GetMatchStringValue関数を用いてマッチメイク指標キーを参照することができます。その値を元にプレイヤーを評価し、評価値を戻り値として返してください。評価値が0以下のプレイヤーはマッチメイクの対象から外されます。評価値が高いプレイヤーほど、マッチメイクの相手として選ばれやすくなります。
本関数呼出し後、DWC_ProcessFriendsMatch関数を呼び続ければマッチメイク処理が進行します。最初のサーバホストとのマッチメイクが成功、エラー、キャンセルのいずれかの状態になれば、マッチメイク完了コールバックが呼び出されます。サーバホストへの接続後は、サーバホストへ新たに接続に来たクライアントホストがあれば、新規接続クライアント通知コールバックが呼び出されます。また、その新規接続クライアントホストの接続処理が完了すれば、再びマッチメイク完了コールバックが呼び出されます。友達無指定ピアマッチメイクでは、自分がサーバホスト・クライアントホストのどちらになるかは自動で決定されます。
ネットワーク接続状況により、関数からしばらく処理が戻らずブロックすることがあります。
接続形態が違う相手とはマッチメイクされることはありませんが、次の注意点があります。DWC_ConnectToAnybodyAsync/DWC_ConnectToFriendsAsyncでは、接続形態が違う相手であっても、これらの関数にDWCEvalPlayerCallback引数が設定されている場合評価コールバックが呼び出されます。評価コールバック内で相手の接続形態を知る手段が無いため、評価コールバックでその相手を除外する方法がありません。
評価コールバックでフィルタされた結果接続することになった相手と接続形態が違う場合、その相手とはマッチメイクが行われません。この挙動は、マッチメイクできる相手が見つかるまで繰り返されます。DWC_ConnectToAnybodyAsync/DWC_ConnectToFriendsAsyncを使用する場合は、接続形態以外の条件でグループ化されるような条件を設け、その中では接続形態が同一になるようにしてください。
接続形態がフルメッシュ型もしくはハイブリッド型のときは、サーバホストが切断したときにサーバ交代が発生します。スター型では発生しません。ハイブリッド型の場合、新しいサーバホストに接続できるのは新しいサーバホストと直接接続されていたホストのみで、それ以外のホストは切断されます。
5.1pr2より前の変更履歴はこちら