Steamworksドキュメント
ISteamMatchmakingServersインターフェイス
ゲームサーバーブラウザーへのアクセスを提供するための関数。

詳細はゲームサーバーを参照してください。

メンバー関数

ISteamMatchmakingServersのメンバー関数は、グローバルのアクセサー関数SteamMatchmakingServers()経由で呼び出されます。

CancelQuery

void CancelQuery( HServerListRequest hRequest );
名前型説明
hRequestHServerListRequestサーバーリストリクエストへのハンドル。

未処理のサーバーリストリクエストをキャンセルします。
以下のリクエスト呼び出しのいずれかに渡された可能性のあるコールバックオブジェクトを破棄する前に、これを呼び出して実行中のリクエストをキャンセルする必要があります。そうしないと、破棄されたオブジェクトでコールバックが発生したときに、クラッシュする可能性があります。
クエリをキャンセルしても割り当てられたリクエストハンドルは解放されません。要求ハンドルは、ReleaseRequestを使用して解放する必要があります。

CancelServerQuery

void CancelServerQuery( HServerQuery hServerQuery );
名前型説明
hServerQueryHServerQueryキャンセルするサーバークエリ。

未処理の個々のサーバークエリをキャンセルします。

このタイプのクエリを作成する呼び出しは以下のとおりです。

コールバックが発生したときにクラッシュしないよう、上記の呼び出しのいずれかに渡された可能性のあるコールバックオブジェクトを破棄する前に、これを呼び出して実行中のリクエストをキャンセルする必要があります。

GetServerCount

int GetServerCount( HServerListRequest hRequest );
名前型説明
hRequestHServerListRequestサーバーリストリクエストへのハンドル。

指定されたリスト内のサーバー数を取得します。

これは、GetServerDetailsでの反復に使用されます。

戻り値: int
サーバーリスト要求オブジェクト内のサーバー数。

hRequestが無効の場合、0を返します。

GetServerDetails

gameserveritem_t * GetServerDetails( HServerListRequest hRequest, int iServer );
名前型説明
hRequestHServerListRequestサーバーリストリクエストへのハンドル。
iServerint詳細を取得するサーバーのインデックス。値の範囲は0からGetServerCount。

リスト内で指定されたサーバーの詳細情報を取得します。

GetServerCountを呼び出すことにより、インデックス値の有効な範囲を取得できます。

ISteamMatchmakingServerListResponse::ServerRespondedコールバックでもインデックス値を受け取ります。

戻り値: gameserveritem_t *

IsRefreshing

bool IsRefreshing( HServerListRequest hRequest );
名前型説明
hRequestHServerListRequestサーバーリストリクエストへのハンドル。

サーバーリスト要求が現在更新中かどうかを確認します。

戻り値: bool
true となるのはhRequestが有効で現在更新中の場合、それ以外はfalseです。

PingServer

HServerQuery PingServer( uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse *pRequestServersResponse );
名前型説明
unIPuint32照会しているゲームサーバーのIP。ホスト順(例:127.0.0.1 == 0x7f000001)。
usPortuint16照会しているゲームサーバーのポート。ホスト順。
pRequestServersResponseISteamMatchmakingPingResponse *これは、ISteamMatchmakingPingResponseから継承するオブジェクトでなければなりません。通常はthisです。

IP/Portを介して個々のゲームサーバーを直接照会し、サーバーから更新されたping時間やその他の詳細を要求します。

このコールバックを取得するにはISteamMatchmakingPingResponseオブジェクトを継承する必要があります。

ISteamMatchmakingPingResponse

個々のサーバーにpingを送信した後、応答を受信するためのコールバックインターフェイス。

このインターフェイスを実装するオブジェクトを破棄する場合は、CancelServerQueryを呼び出して、実行中のクエリにハンドルを渡します。コールバックハンドラーを破棄する際に、実行中のクエリをキャンセルしないと、後でコールバックが発生したときにクラッシュする可能性があります。

メンバー関数:
戻り値の型関数名パラメーター説明
voidServerRespondedgameserveritem_t &serverサーバーが正常に応答し、データを更新したときに呼び出されます。
voidServerFailedToRespondサーバーがping要求への応答に失敗したときに呼び出されます。

戻り値: HServerQuery
未処理のサーバークエリへのハンドル。

PlayerDetails

HServerQuery PlayerDetails( uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse *pRequestServersResponse );
名前型説明
unIPuint32照会しているゲームサーバーのIP。ホスト順(例:127.0.0.1 == 0x7f000001)。
usPortuint16照会しているゲームサーバーのポート。ホスト順。
pRequestServersResponseISteamMatchmakingPlayersResponse *これは、ISteamMatchmakingPlayersResponseから継承するオブジェクトでなければなりません。通常はthisです。

IP/Portを介して個々のゲームサーバーを直接照会し、サーバーで現在プレイしているプレイヤーのリストを要求します。

このコールバックを取得するにはISteamMatchmakingPlayersResponseオブジェクトを継承する必要があります。

ISteamMatchmakingPlayersResponse

個々のサーバーにpingを送信した後、応答を受信するためのコールバックインターフェイス。

このインターフェイスを実装するオブジェクトを破棄する場合は、CancelServerQueryを呼び出して、進行中のクエリにハンドルを渡します。コールバックハンドラを破棄する際に、実行中のクエリをキャンセルしないと、後でコールバックが発生したときにクラッシュする可能性があります。

メンバー関数:
戻り値の型関数名パラメーター説明
voidAddPlayerToListconst char *pchName, int nScore, float flTimePlayedサーバー上の新しいプレイヤーでデータを取得したときに呼び出されます。プレイヤーデータを要求したサーバー上のプレイヤーごとにこのコールバックを取得します。
voidPlayersFailedToRespondサーバーがプレイヤー詳細の要求に応答しなかったときに呼び出されます。
voidPlayersRefreshCompleteサーバーがプレイヤーの詳細リクエストへの応答を終了したときに呼び出されます(つまり、これ以上AddPlayerToListコールバックを取得できなくなります)。

戻り値: HServerQuery
未処理のサーバークエリへのハンドル。

RefreshQuery

void RefreshQuery( HServerListRequest hRequest );
名前型説明
hRequestHServerListRequestサーバーリストリクエストへのハンドル。

リスト内のすべてのサーバーに、再度Pingを実行します。サーバーリストは更新しません。

サーバーリストの要求時に実装されたクエリコールバックは、通知を送信するために再び使用され、RefreshCompleteが再度呼び出されます。そのため、コールバックが完了するか、またはReleaseRequestで要求が解放されるまで、コールバックが有効である必要があります。

RefreshServer

void RefreshServer( HServerListRequest hRequest, int iServer );
名前型説明
hRequestHServerListRequestサーバーリストリクエストへのハンドル。
iServerint更新するサーバーのインデックス。値の範囲は、0からGetServerCount。

クエリ内の単一サーバーを更新します。

すべてのサーバーを更新する場合は、RefreshQueryを使用してください。

ReleaseRequest

void ReleaseRequest( HServerListRequest hServerListRequest );
名前型説明
hServerListRequestHServerListRequest解放する非同期サーバーリスト要求オブジェクト。

非同期サーバーリスト要求オブジェクトを解放し、保留中のクエリが進行中の場合、そのオブジェクトに対する保留中のクエリをキャンセルします。

リクエストが解放されたときには、RefreshCompleteコールバックは送られません。

RequestFavoritesServerList

HServerListRequest RequestFavoritesServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
名前型説明
iAppAppId_tサーバーリストを要求するアプリ。
ppchFiltersMatchMakingKeyValuePair_t **ユーザーが関心のあるサーバーのみを取得するフィルターの配列。
nFiltersuint32ppchFilters配列内のフィルターの数。
pRequestServersResponseISteamMatchmakingServerListResponse *これは、ISteamMatchmakingServerListResponseから継承するオブジェクトでなければなりません。通常はthisです。

「お気に入り」サーバーリストからゲームサーバーの新しいリストを要求します。

詳細は、MatchMakingKeyValuePair_tを参照してください。

戻り値: HServerListRequest
新規の非同期サーバーリスト要求オブジェクト。

注: この要求オブジェクトは、使用が終了したらReleaseRequestを呼び出して解放する必要があります。

RequestFriendsServerList

HServerListRequest RequestFriendsServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
名前型説明
iAppAppId_tサーバーリストを要求するアプリ。
ppchFiltersMatchMakingKeyValuePair_t **ユーザーが関心のあるサーバーのみを取得するフィルターの配列。
nFiltersuint32ppchFilters配列内のフィルターの数。
pRequestServersResponseISteamMatchmakingServerListResponse *これは、ISteamMatchmakingServerListResponseから継承するオブジェクトでなければなりません。通常はthisです。

「フレンド」サーバーリストからゲームサーバーの新しいリストを要求します。

詳細は、MatchMakingKeyValuePair_tを参照してください。

戻り値: HServerListRequest
新規の非同期サーバーリスト要求オブジェクト。

注: この要求オブジェクトは、使用が終了したらReleaseRequestを呼び出して解放する必要があります。

RequestHistoryServerList

HServerListRequest RequestHistoryServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
名前型説明
iAppAppId_tサーバーリストを取得するアプリ。
ppchFiltersMatchMakingKeyValuePair_t **ユーザーが関心のあるサーバーのみを取得するフィルターの配列。
nFiltersuint32ppchFilters配列内のフィルターの数。
pRequestServersResponseISteamMatchmakingServerListResponse *これは、ISteamMatchmakingServerListResponseから継承するオブジェクトでなければなりません。通常はthisです。

「履歴」サーバーリストからゲームサーバーの新しいリストを要求します。

詳細は、MatchMakingKeyValuePair_tを参照してください。

戻り値: HServerListRequest
新規の非同期サーバーリスト要求オブジェクト。

注: この要求オブジェクトは、使用が終了したらReleaseRequestを呼び出して解放する必要があります。

RequestInternetServerList

HServerListRequest RequestInternetServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
名前型説明
iAppAppId_tサーバーリストを取得するアプリ。
ppchFiltersMatchMakingKeyValuePair_t **ユーザーが関心のあるサーバーのみを取得するフィルターの配列。
nFiltersuint32ppchFilters配列内のフィルターの数。
pRequestServersResponseISteamMatchmakingServerListResponse *これは、ISteamMatchmakingServerListResponseから継承するオブジェクトでなければなりません。通常はthisです。

「インターネット」サーバーリストからゲームサーバーの新しいリストを要求します。

詳細は、MatchMakingKeyValuePair_tを参照してください。

戻り値: HServerListRequest
LobbyChatUpdate_tコールバックをトリガーします。
新規の非同期サーバーリスト要求オブジェクト。

注: この要求オブジェクトは、使用が終了したらReleaseRequestを呼び出して解放する必要があります。

RequestLANServerList

HServerListRequest RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse );
名前型説明
iAppAppId_tサーバーリストを要求するアプリ。
pRequestServersResponseISteamMatchmakingServerListResponse *これは、ISteamMatchmakingServerListResponseから継承するオブジェクトでなければなりません。通常はthisです。

「LAN」サーバーリストからゲームサーバーの新しいリストを要求します。

詳細は、MatchMakingKeyValuePair_tを参照してください。

戻り値: HServerListRequest
新規の非同期サーバーリスト要求オブジェクト。

注: この要求オブジェクトは、使用が終了したらReleaseRequestを呼び出して解放する必要があります。

RequestSpectatorServerList

HServerListRequest RequestSpectatorServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
名前型説明
iAppAppId_tサーバーリストを要求するアプリ。
ppchFiltersMatchMakingKeyValuePair_t **ユーザーが関心のあるサーバーのみを取得するフィルターの配列。
nFiltersuint32ppchFilters配列内のフィルターの数。
pRequestServersResponseISteamMatchmakingServerListResponse *これは、ISteamMatchmakingServerListResponseから継承するオブジェクトでなければなりません。通常はthisです。

「観戦者」サーバーリストからゲームサーバーの新しいリストを要求します。

詳細は、MatchMakingKeyValuePair_tを参照してください。

戻り値: HServerListRequest
新規の非同期サーバーリスト要求オブジェクト。

注: この要求オブジェクトは、使用が終了したらReleaseRequestを呼び出して解放する必要があります。

ServerFriends

HServerQuery ServerFriends( uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse *pRequestServersResponse );
名前型説明
unIPuint32照会しているゲームサーバーのIP。ホスト順(例:127.0.0.1 == 0x7f000001)。
usPortuint16照会しているゲームサーバーのポート。ホスト順。
pRequestServersResponseISteamMatchmakingServerFriendsResponse *これは、ISteamMatchmakingServerFriendsResponseから継承するオブジェクトでなければなりません。通常はthisです。

IP/Portを介して個々のゲームサーバーを直接照会し、このサーバーでプレイしたことのあるフレンドのリストを要求します。

このコールバックを取得するにはISteamMatchmakingServerFriendsResponseオブジェクトを継承する必要があります。

ISteamMatchmakingServerFriendsResponse

個々のサーバーにpingを送信した後、応答を受信するためのコールバックインターフェイス。

このインターフェイスを実装するオブジェクトを破棄する場合は、CancelServerQueryを呼び出して、実行中のクエリにハンドルを渡します。コールバックハンドラーを破棄する際に、実行中のクエリをキャンセルしないと、後でコールバックが発生したときにクラッシュする可能性があります。

ServerRules

HServerQuery ServerRules( uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse *pRequestServersResponse );
名前型説明
unIPuint32照会しているゲームサーバーのIP。ホスト順(例:127.0.0.1 == 0x7f000001)。
usPortuint16照会しているゲームサーバーのポート。ホスト順。
pRequestServersResponseISteamMatchmakingRulesResponse *これは、ISteamMatchmakingRulesResponseから継承するオブジェクトでなければなりません。通常はthisです。

IP/Portを介して個々のゲームサーバーを直接照会し、サーバーが実行しているルールのリストを要求します(サーバー側でルールを設定するには、ISteamGameServer::SetKeyValueを参照してください)。

このコールバックを取得するにはISteamMatchmakingRulesResponseオブジェクトを継承する必要があります。

ISteamMatchmakingRulesResponse

個々のサーバーにpingを送信した後、応答を受信するためのコールバックインターフェイス。

このインターフェイスを実装するオブジェクトを破棄する場合は、CancelServerQueryを呼び出して、進行中のクエリにハンドルを渡します。コールバックハンドラーを破棄する際に、実行中のクエリをキャンセルしないと、後でコールバックが発生したときにクラッシュする可能性があります。

メンバー関数:
戻り値の型関数名パラメーター説明
voidAddPlayerToListconst char *pchName, int nScore, float flTimePlayedサーバー上のルールでデータを取得したときに呼び出されます。照会しているサーバーで定義されたルールごとに、これらのいずれかを取得します。
voidPlayersFailedToRespondサーバーがルール詳細の要求に応答しなかったときに呼び出されます。
voidRulesRefreshCompleteサーバーがルールの詳細リクエストへの応答を完了したときに呼び出されます(これ以上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_szKeychar[256]フィルター操作コード。
m_szValuechar[256]操作オペランド。

列挙型

これらはISteamMatchmakingServersで使用するために定義された列挙型です。

EMatchMakingServerResponse

マッチメイキングサーバー更新時の戻り応答として提供されます。詳細は、RequestInternetServerListを参照してください。

名前値説明
eServerResponded0サーバーは正常に応答しました。
eServerFailedToRespond1サーバーは応答に失敗しました。
eNoServersListedOnMasterServer2インターネットクエリタイプの場合のみ。このタイプと一致するサーバーがない場合、応答コールバックで返されます。

定数

これらはISteamMatchmakingServersで使用するために定義された定数です。

名前型値説明
k_cbMaxGameServerGameDataint2048ISteamGameServer::SetGameDataで設定されるゲームサーバーデータがサポートする最大サイズ(UTF-8バイト、nullターミネーターを含む)。
k_cbMaxGameServerGameDescriptionint64ISteamGameServer::SetGameDescriptionで設定されるゲームサーバーMOD説明がサポートする最大サイズ(UTF-8バイト、nullターミネーターを含む)。
k_cbMaxGameServerGameDirint32ISteamGameServer::SetModDirで設定されるゲームサーバーMODディレクトリがサポートする最大サイズ(UTF-8バイト、nullターミネーターを含む)。
k_cbMaxGameServerMapNameint32ISteamGameServer::SetMapNameで設定されるゲームサーバーマップ名がサポートする最大サイズ(UTF-8バイト、nullターミネーターを含む)。
k_cbMaxGameServerNameint64ISteamGameServer::SetServerNameで設定されるゲームサーバー名がサポートする最大サイズ(UTF-8バイト、nullターミネーターを含む)。
k_cbMaxGameServerTagsint128ISteamGameServer::SetGameTagsで設定されるゲームサーバータグがサポートする最大サイズ(UTF-8バイト、nullターミネーターを含む)。