ゲームサーバーブラウザーへのアクセスを提供するための関数。
詳細は
ゲームサーバーを参照してください。
メンバー関数
ISteamMatchmakingServersのメンバー関数は、グローバルのアクセサー関数
SteamMatchmakingServers()経由で呼び出されます。
CancelQuery
void CancelQuery( HServerListRequest hRequest );
未処理のサーバーリストリクエストをキャンセルします。
以下のリクエスト呼び出しのいずれかに渡された可能性のあるコールバックオブジェクトを破棄する前に、これを呼び出して実行中のリクエストをキャンセルする必要があります。そうしないと、破棄されたオブジェクトでコールバックが発生したときに、クラッシュする可能性があります。
クエリをキャンセルしても割り当てられたリクエストハンドルは解放されません。要求ハンドルは、
ReleaseRequestを使用して解放する必要があります。
CancelServerQuery
void CancelServerQuery( HServerQuery hServerQuery );
未処理の個々のサーバークエリをキャンセルします。
このタイプのクエリを作成する呼び出しは以下のとおりです。
コールバックが発生したときにクラッシュしないよう、上記の呼び出しのいずれかに渡された可能性のあるコールバックオブジェクトを破棄する前に、これを呼び出して実行中のリクエストをキャンセルする必要があります。
GetServerCount
int GetServerCount( HServerListRequest hRequest );
指定されたリスト内のサーバー数を取得します。
これは、
GetServerDetailsでの反復に使用されます。
戻り値: int
サーバーリスト要求オブジェクト内のサーバー数。
hRequestが無効の場合、
0を返します。
GetServerDetails
gameserveritem_t * GetServerDetails( HServerListRequest hRequest, int iServer );
リスト内で指定されたサーバーの詳細情報を取得します。
GetServerCountを呼び出すことにより、インデックス値の有効な範囲を取得できます。
ISteamMatchmakingServerListResponse::ServerRespondedコールバックでもインデックス値を受け取ります。
戻り値: gameserveritem_t *
IsRefreshing
bool IsRefreshing( HServerListRequest hRequest );
サーバーリスト要求が現在更新中かどうかを確認します。
戻り値: bool
true となるのは
hRequestが有効で現在更新中の場合、それ以外は
falseです。
PingServer
HServerQuery PingServer( uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse *pRequestServersResponse );
| 名前 | 型 | 説明 |
| unIP | uint32 | 照会しているゲームサーバーのIP。ホスト順(例:127.0.0.1 == 0x7f000001)。 |
| usPort | uint16 | 照会しているゲームサーバーのポート。ホスト順。 |
| pRequestServersResponse | ISteamMatchmakingPingResponse * | これは、ISteamMatchmakingPingResponseから継承するオブジェクトでなければなりません。通常はthisです。 |
IP/Portを介して個々のゲームサーバーを直接照会し、サーバーから更新されたping時間やその他の詳細を要求します。
このコールバックを取得するには
ISteamMatchmakingPingResponseオブジェクトを継承する必要があります。
ISteamMatchmakingPingResponse
個々のサーバーにpingを送信した後、応答を受信するためのコールバックインターフェイス。
このインターフェイスを実装するオブジェクトを破棄する場合は、
CancelServerQueryを呼び出して、実行中のクエリにハンドルを渡します。コールバックハンドラーを破棄する際に、実行中のクエリをキャンセルしないと、後でコールバックが発生したときにクラッシュする可能性があります。
メンバー関数: | 戻り値の型 | 関数名 | パラメーター | 説明 |
| void | ServerResponded | gameserveritem_t &server | サーバーが正常に応答し、データを更新したときに呼び出されます。 |
| void | ServerFailedToRespond | | サーバーがping要求への応答に失敗したときに呼び出されます。 |
戻り値: HServerQuery未処理のサーバークエリへのハンドル。
PlayerDetails
HServerQuery PlayerDetails( uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse *pRequestServersResponse );
| 名前 | 型 | 説明 |
| unIP | uint32 | 照会しているゲームサーバーのIP。ホスト順(例:127.0.0.1 == 0x7f000001)。 |
| usPort | uint16 | 照会しているゲームサーバーのポート。ホスト順。 |
| pRequestServersResponse | ISteamMatchmakingPlayersResponse * | これは、ISteamMatchmakingPlayersResponseから継承するオブジェクトでなければなりません。通常はthisです。 |
IP/Portを介して個々のゲームサーバーを直接照会し、サーバーで現在プレイしているプレイヤーのリストを要求します。
このコールバックを取得するには
ISteamMatchmakingPlayersResponseオブジェクトを継承する必要があります。
ISteamMatchmakingPlayersResponse
個々のサーバーにpingを送信した後、応答を受信するためのコールバックインターフェイス。
このインターフェイスを実装するオブジェクトを破棄する場合は、
CancelServerQueryを呼び出して、進行中のクエリにハンドルを渡します。コールバックハンドラを破棄する際に、実行中のクエリをキャンセルしないと、後でコールバックが発生したときにクラッシュする可能性があります。
メンバー関数: | 戻り値の型 | 関数名 | パラメーター | 説明 |
| void | AddPlayerToList | const char *pchName, int nScore, float flTimePlayed | サーバー上の新しいプレイヤーでデータを取得したときに呼び出されます。プレイヤーデータを要求したサーバー上のプレイヤーごとにこのコールバックを取得します。 |
| void | PlayersFailedToRespond | | サーバーがプレイヤー詳細の要求に応答しなかったときに呼び出されます。 |
| void | PlayersRefreshComplete | | サーバーがプレイヤーの詳細リクエストへの応答を終了したときに呼び出されます(つまり、これ以上AddPlayerToListコールバックを取得できなくなります)。 |
戻り値: HServerQuery未処理のサーバークエリへのハンドル。
RefreshQuery
void RefreshQuery( HServerListRequest hRequest );
リスト内のすべてのサーバーに、再度Pingを実行します。サーバーリストは更新しません。
サーバーリストの要求時に実装されたクエリコールバックは、通知を送信するために再び使用され、
RefreshCompleteが再度呼び出されます。そのため、コールバックが完了するか、または
ReleaseRequestで要求が解放されるまで、コールバックが有効である必要があります。
RefreshServer
void RefreshServer( HServerListRequest hRequest, int iServer );
クエリ内の単一サーバーを更新します。
すべてのサーバーを更新する場合は、
RefreshQueryを使用してください。
ReleaseRequest
void ReleaseRequest( HServerListRequest hServerListRequest );
非同期サーバーリスト要求オブジェクトを解放し、保留中のクエリが進行中の場合、そのオブジェクトに対する保留中のクエリをキャンセルします。
リクエストが解放されたときには、
RefreshCompleteコールバックは送られません。
RequestFavoritesServerList
HServerListRequest RequestFavoritesServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
| 名前 | 型 | 説明 |
| iApp | AppId_t | サーバーリストを要求するアプリ。 |
| ppchFilters | MatchMakingKeyValuePair_t ** | ユーザーが関心のあるサーバーのみを取得するフィルターの配列。 |
| nFilters | uint32 | ppchFilters配列内のフィルターの数。 |
| pRequestServersResponse | ISteamMatchmakingServerListResponse * | これは、ISteamMatchmakingServerListResponseから継承するオブジェクトでなければなりません。通常はthisです。 |
「お気に入り」サーバーリストからゲームサーバーの新しいリストを要求します。
詳細は、
MatchMakingKeyValuePair_tを参照してください。
戻り値: HServerListRequest新規の非同期サーバーリスト要求オブジェクト。
注: この要求オブジェクトは、使用が終了したら
ReleaseRequestを呼び出して解放する必要があります。
RequestFriendsServerList
HServerListRequest RequestFriendsServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
| 名前 | 型 | 説明 |
| iApp | AppId_t | サーバーリストを要求するアプリ。 |
| ppchFilters | MatchMakingKeyValuePair_t ** | ユーザーが関心のあるサーバーのみを取得するフィルターの配列。 |
| nFilters | uint32 | ppchFilters配列内のフィルターの数。 |
| pRequestServersResponse | ISteamMatchmakingServerListResponse * | これは、ISteamMatchmakingServerListResponseから継承するオブジェクトでなければなりません。通常はthisです。 |
「フレンド」サーバーリストからゲームサーバーの新しいリストを要求します。
詳細は、
MatchMakingKeyValuePair_tを参照してください。
戻り値: HServerListRequest新規の非同期サーバーリスト要求オブジェクト。
注: この要求オブジェクトは、使用が終了したら
ReleaseRequestを呼び出して解放する必要があります。
RequestHistoryServerList
HServerListRequest RequestHistoryServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
| 名前 | 型 | 説明 |
| iApp | AppId_t | サーバーリストを取得するアプリ。 |
| ppchFilters | MatchMakingKeyValuePair_t ** | ユーザーが関心のあるサーバーのみを取得するフィルターの配列。 |
| nFilters | uint32 | ppchFilters配列内のフィルターの数。 |
| pRequestServersResponse | ISteamMatchmakingServerListResponse * | これは、ISteamMatchmakingServerListResponseから継承するオブジェクトでなければなりません。通常はthisです。 |
「履歴」サーバーリストからゲームサーバーの新しいリストを要求します。
詳細は、
MatchMakingKeyValuePair_tを参照してください。
戻り値: HServerListRequest新規の非同期サーバーリスト要求オブジェクト。
注: この要求オブジェクトは、使用が終了したら
ReleaseRequestを呼び出して解放する必要があります。
RequestInternetServerList
HServerListRequest RequestInternetServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
| 名前 | 型 | 説明 |
| iApp | AppId_t | サーバーリストを取得するアプリ。 |
| ppchFilters | MatchMakingKeyValuePair_t ** | ユーザーが関心のあるサーバーのみを取得するフィルターの配列。 |
| nFilters | uint32 | ppchFilters配列内のフィルターの数。 |
| pRequestServersResponse | ISteamMatchmakingServerListResponse * | これは、ISteamMatchmakingServerListResponseから継承するオブジェクトでなければなりません。通常はthisです。 |
「インターネット」サーバーリストからゲームサーバーの新しいリストを要求します。
詳細は、
MatchMakingKeyValuePair_tを参照してください。
戻り値: HServerListRequestLobbyChatUpdate_tコールバックをトリガーします。
新規の非同期サーバーリスト要求オブジェクト。
注: この要求オブジェクトは、使用が終了したら
ReleaseRequestを呼び出して解放する必要があります。
RequestLANServerList
HServerListRequest RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse );
| 名前 | 型 | 説明 |
| iApp | AppId_t | サーバーリストを要求するアプリ。 |
| pRequestServersResponse | ISteamMatchmakingServerListResponse * | これは、ISteamMatchmakingServerListResponseから継承するオブジェクトでなければなりません。通常はthisです。 |
「LAN」サーバーリストからゲームサーバーの新しいリストを要求します。
詳細は、
MatchMakingKeyValuePair_tを参照してください。
戻り値: HServerListRequest新規の非同期サーバーリスト要求オブジェクト。
注: この要求オブジェクトは、使用が終了したら
ReleaseRequestを呼び出して解放する必要があります。
RequestSpectatorServerList
HServerListRequest RequestSpectatorServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
| 名前 | 型 | 説明 |
| iApp | AppId_t | サーバーリストを要求するアプリ。 |
| ppchFilters | MatchMakingKeyValuePair_t ** | ユーザーが関心のあるサーバーのみを取得するフィルターの配列。 |
| nFilters | uint32 | ppchFilters配列内のフィルターの数。 |
| pRequestServersResponse | ISteamMatchmakingServerListResponse * | これは、ISteamMatchmakingServerListResponseから継承するオブジェクトでなければなりません。通常はthisです。 |
「観戦者」サーバーリストからゲームサーバーの新しいリストを要求します。
詳細は、
MatchMakingKeyValuePair_tを参照してください。
戻り値: HServerListRequest新規の非同期サーバーリスト要求オブジェクト。
注: この要求オブジェクトは、使用が終了したら
ReleaseRequestを呼び出して解放する必要があります。
ServerFriends
HServerQuery ServerFriends( uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse *pRequestServersResponse );
| 名前 | 型 | 説明 |
| unIP | uint32 | 照会しているゲームサーバーのIP。ホスト順(例:127.0.0.1 == 0x7f000001)。 |
| usPort | uint16 | 照会しているゲームサーバーのポート。ホスト順。 |
| pRequestServersResponse | ISteamMatchmakingServerFriendsResponse * | これは、ISteamMatchmakingServerFriendsResponseから継承するオブジェクトでなければなりません。通常はthisです。 |
IP/Portを介して個々のゲームサーバーを直接照会し、このサーバーでプレイしたことのあるフレンドのリストを要求します。
このコールバックを取得するには
ISteamMatchmakingServerFriendsResponseオブジェクトを継承する必要があります。
ISteamMatchmakingServerFriendsResponse
個々のサーバーにpingを送信した後、応答を受信するためのコールバックインターフェイス。
このインターフェイスを実装するオブジェクトを破棄する場合は、
CancelServerQueryを呼び出して、実行中のクエリにハンドルを渡します。コールバックハンドラーを破棄する際に、実行中のクエリをキャンセルしないと、後でコールバックが発生したときにクラッシュする可能性があります。
ServerRules
HServerQuery ServerRules( uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse *pRequestServersResponse );
| 名前 | 型 | 説明 |
| unIP | uint32 | 照会しているゲームサーバーのIP。ホスト順(例:127.0.0.1 == 0x7f000001)。 |
| usPort | uint16 | 照会しているゲームサーバーのポート。ホスト順。 |
| pRequestServersResponse | ISteamMatchmakingRulesResponse * | これは、ISteamMatchmakingRulesResponseから継承するオブジェクトでなければなりません。通常はthisです。 |
IP/Portを介して個々のゲームサーバーを直接照会し、サーバーが実行しているルールのリストを要求します(サーバー側でルールを設定するには、
ISteamGameServer::SetKeyValueを参照してください)。
このコールバックを取得するには
ISteamMatchmakingRulesResponseオブジェクトを継承する必要があります。
ISteamMatchmakingRulesResponse
個々のサーバーにpingを送信した後、応答を受信するためのコールバックインターフェイス。
このインターフェイスを実装するオブジェクトを破棄する場合は、
CancelServerQueryを呼び出して、進行中のクエリにハンドルを渡します。コールバックハンドラーを破棄する際に、実行中のクエリをキャンセルしないと、後でコールバックが発生したときにクラッシュする可能性があります。
メンバー関数: | 戻り値の型 | 関数名 | パラメーター | 説明 |
| void | AddPlayerToList | const char *pchName, int nScore, float flTimePlayed | サーバー上のルールでデータを取得したときに呼び出されます。照会しているサーバーで定義されたルールごとに、これらのいずれかを取得します。 |
| void | PlayersFailedToRespond | | サーバーがルール詳細の要求に応答しなかったときに呼び出されます。 |
| void | RulesRefreshComplete | | サーバーがルールの詳細リクエストへの応答を完了したときに呼び出されます(これ以上RulesRespondedコールバックを取得できなくなります)。 |
戻り値: HServerQuery未処理のサーバークエリへのハンドル。
構造体
これは、ISteamMatchmakingServers内の関数が返す、またはやり取りする構造体です。
MatchMakingKeyValuePair_t
マッチメイキングクエリで使用されたキー/値のペアを保存します。
実際、「キー/値」という名前は少し誤解を招くものです。「キー」は「フィルター操作コード」として理解するのが適切であり、「値」はこのフィルター操作のオペランドです。オペランドの値はフィルターに依存します。
サポートされているフィルター操作コードは以下のとおりです。
- "map"
サーバーが指定のマップを実行している場合、サーバーはフィルターを渡します。
- "gamedataand"
サーバーのゲームデータ(ISteamGameServer::SetGameData)に指定されたすべての文字列が含まれる場合、サーバーはフィルターを渡します。値フィールドは、一致する文字列をコンマで区切ったリストです。
- "gamedataor"
サーバーのゲームデータ(ISteamGameServer::SetGameData)に指定された文字列のうち少なくとも1つが含まれる場合、サーバーはフィルターを渡します。値フィールドは、一致する文字列をコンマで区切ったリストです。
- "gamedatanor"
サーバーのゲームデータ(ISteamGameServer::SetGameData)に指定された文字列が1つも含まれていない場合、サーバーはフィルターを渡します。値フィールドは、チェックする文字列をコンマで区切ったリストです。
- "gametagsand"
サーバーのゲームのタグ(ISteamGameServer::SetGameTags)に指定されたすべての文字列が含まれる場合、サーバーはフィルターを渡します。値フィールドは、チェックする文字列をコンマで区切ったリストです。
- "gametagsnor"
サーバーのゲームタグ(ISteamGameServer::SetGameTags)に指定された文字列が1つも含まれていない場合に、サーバーはフィルターを渡します。値フィールドは、チェックする文字列をコンマで区切ったリストです。
- "and" (x1 && x2 && ... && xn)
"or" (x1 || x2 || ... || xn)
"nand" !(x1 && x2 && ... && xn)
"nor" !(x1 || x2 || ... || xn)
次のフィルターでブール演算を実行します。このフィルターのオペランドは、演算へのブール入力の「サイズ」をキー/値のペアで指定します(キーと値のペアは直後で指定する必要があります。これはプレフィックス論理演算子表記です)。最も単純にブール式がネストされていない場合、これは単にオペランドの数になります。
例えば、特定のマップ上のサーバーまたは特定のタグを持つサーバーを照合するには、これらのフィルターを使用します。
( server.map == "cp_dustbowl" || server.gametags.contains("payload") )
"or", "2"
"map", "cp_dustbowl"
"gametagsand", "payload"
論理入力がネストされている場合、オペランドは、直下の子の数ではなく、オペランドの「長さ」の合計サイズを指定します。
( server.map == "cp_dustbowl" || ( server.gametags.contains("payload") && !server.gametags.contains("payloadrace") ) )
"or", "4"
"map", "cp_dustbowl"
"and", "2"
"gametagsand", "payload"
"gametagsnor", "payloadrace"
単項のNOTは、「nand」または「nor」を単一オペランドと使用することで実現できます。
- "addr"
サーバーのクエリアドレスが、指定されたIPまたはIP:portに一致する場合、サーバーはフィルターを渡します。
- "gameaddr"
サーバーのゲームアドレスが、指定されたIPまたはIP:portに一致する場合、サーバーはフィルターを渡します。
次のフィルター操作は、MatchMakingKeyValuePair_tの「value」の部分を無視します。
- "dedicated"
ISteamGameServer::SetDedicatedServerにtrueが渡された場合に、サーバーはフィルターを渡します。
- "secure"
サーバーがVAC有効である場合に、サーバーはフィルターを渡します。
- "notfull"
プレイヤー数が報告された最大プレイヤー数より少ない場合、サーバーはフィルターを渡します。
- "hasplayers"
プレイヤー数がゼロより大きい場合、サーバーはフィルターを渡します。
- "noplayers"
プレイヤーがいない場合、サーバーはフィルターを渡します。
- "linux"
Linuxサーバーの場合、サーバーはフィルターを渡します。
- "popularamongfriends"
フレンドの間で人気がある場合、ゲームが非公開でなく、フレンドのプロフィールが非公開ではなく、プレイ中のフレンドのステータスがオフライン/非表示でない限り、サーバーはフィルターを渡します。さらに、サーバーは"nofriendshare"タグを設定してはならず、ゲームは共同プレイデータの保存/表示を無効にする設定にしてはなりません。
| 名前 | 型 | 説明 |
| m_szKey | char[256] | フィルター操作コード。 |
| m_szValue | char[256] | 操作オペランド。 |
列挙型
これらはISteamMatchmakingServersで使用するために定義された列挙型です。
EMatchMakingServerResponse
マッチメイキングサーバー更新時の戻り応答として提供されます。詳細は、
RequestInternetServerListを参照してください。
| 名前 | 値 | 説明 |
| eServerResponded | 0 | サーバーは正常に応答しました。 |
| eServerFailedToRespond | 1 | サーバーは応答に失敗しました。 |
| eNoServersListedOnMasterServer | 2 | インターネットクエリタイプの場合のみ。このタイプと一致するサーバーがない場合、応答コールバックで返されます。 |
定数
これらはISteamMatchmakingServersで使用するために定義された定数です。