Documentación de Steamworks
Interfaz de ISteamMatchmakingServers
Funciones que brindan acceso al explorador de servidores de juego.

Consulta Servidores de juego para obtener más información.

Funciones miembro

Las funciones miembro para ISteamMatchmakingServers se llaman a través de la función de acceso global SteamMatchmakingServers().

CancelQuery

void CancelQuery( HServerListRequest hRequest );
NombreTipoDescripción
hRequestHServerListRequestHandle de la solicitud de lista de servidores.

Cancela una solicitud de lista de servidores pendiente.
Tienes que llamar a esta función para cancelar cualquier solicitud en curso antes de destruir un objeto callback que pudiera haberse pasado
a alguna de las siguientes llamadas de solicitud. No hacerlo puede dar lugar a un bloqueo cuando se activa la función callback sobre el objeto destruido.
La cancelación de una consulta no libera el handle de solicitud asignado. El handle de solicitud debe liberarse utilizando ReleaseRequest.

CancelServerQuery

void CancelServerQuery( HServerQuery hServerQuery );
NombreTipoDescripción
hServerQueryHServerQueryLa consulta al servidor que se va a cancelar.

Cancela una consulta individual pendiente al servidor.

Las llamadas que crea este tipo de consultas son:

Tienes que llamar a esta función para cancelar cualquier solicitud en curso antes de destruir un objeto callback que pudiera haberse pasado a alguna de las llamadas anteriores para que no se produzca un bloqueo cuando se activen las funciones callback.

GetServerCount

int GetServerCount( HServerListRequest hRequest );
NombreTipoDescripción
hRequestHServerListRequestHandle de la solicitud de lista de servidores.

Obtiene el número de servidores en la lista dada.

Esto se usa para iterar con GetServerDetails.

Devuelve: int
El número de servidores en un objeto de solicitud de lista de servidores.

Devuelve 0 si hRequest no es válido.

GetServerDetails

gameserveritem_t * GetServerDetails( HServerListRequest hRequest, int iServer );
NombreTipoDescripción
hRequestHServerListRequestHandle de la solicitud de lista de servidores.
iServerintEl índice del servidor del que obtener los detalles, desde 0 hasta GetServerCount.

Obtiene los detalles de un servidor concreto de la lista.

Puedes obtener el rango válido de valores de índice llamando a GetServerCount.

También recibirás valores de índice en funciones callback ISteamMatchmakingServerListResponse::ServerResponded.

Devuelve: gameserveritem_t *

IsRefreshing

bool IsRefreshing( HServerListRequest hRequest );
NombreTipoDescripción
hRequestHServerListRequestHandle de la solicitud de lista de servidores.

Comprueba si se está actualizando la solicitud de lista de servidores.

Devuelve: bool
true si hRequest es válido y se está actualizando; de lo contrario, false.

PingServer

HServerQuery PingServer( uint32 unIP, uint16 usPort, ISteamMatchmakingPingResponse *pRequestServersResponse );
NombreTipoDescripción
unIPuint32El IP del servidor de juego que estás consultando conforme al orden del host, es decir, 127.0.0.1 == 0x7f000001.
usPortuint16Puerto del servidor de juego que se consulta conforme al orden del host.
pRequestServersResponseISteamMatchmakingPingResponse *Este debe ser el objeto que se hereda de ISteamMatchmakingPingResponse. Normalmente this.

Consulta servidores de juego de manera individual directamente a través del IP o del puerto para solicitar un ping actualizado y otros detalles.

Debes heredar del objeto ISteamMatchmakingPingResponse para recibir esta función callback.

ISteamMatchmakingPingResponse

Interfaz callback para recibir respuestas después de hacer ping a un servidor concreto.

Si se está destruyendo un objeto que implementa esta interfaz, conviene llamar a CancelServerQuery y pasar el handle de la consulta en curso. Si no se cancela una consulta en curso cuando se destruye un controlador de callback, puede producirse un bloqueo cuando se activa una función callback más adelante.

Funciones miembro:
Tipo de devoluciónNombre de la funciónParámetrosDescripción
voidServerRespondedgameserveritem_t &serverSe llama cuando el servidor ha respondido correctamente y cuenta con datos actualizados.
voidServerFailedToRespondSe llama cuando el servidor no ha respondido a la solicitud de ping.

Devuelve: HServerQuery
Handle a la consulta del servidor pendiente.

PlayerDetails

HServerQuery PlayerDetails( uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse *pRequestServersResponse );
NombreTipoDescripción
unIPuint32IP del servidor de juego que se consulta conforme al orden del host, es decir, 127.0.0.1 == 0x7f000001.
usPortuint16Puerto del servidor de juego que se consulta conforme al orden del host.
pRequestServersResponseISteamMatchmakingPlayersResponse *Este debe ser el objeto que se hereda de ISteamMatchmakingPlayersResponse. Normalmente this.

Consulta servidores de juego de manera individual directamente a través del IP/puerto para solicitar la lista de jugadores que están jugando en el servidor en ese momento.

Debes heredar del objeto ISteamMatchmakingPlayersResponse para recibir esta función callback.

ISteamMatchmakingPlayersResponse

Interfaz callback para recibir respuestas después de hacer ping a un servidor concreto.

Si se está destruyendo un objeto que implementa esta interfaz, conviene llamar a CancelServerQuery y pasar el handle de la consulta en curso. Si no se cancela una consulta en curso cuando se destruye un handle callback, puede producirse un bloqueo cuando se activa una función callback más adelante.

Funciones miembro:
Tipo de devoluciónNombre de la funciónParámetrosDescripción
voidAddPlayerToListconst char *pchName, int nScore, float flTimePlayedSe llama cuando se recuperan datos sobre un nuevo jugador en el servidor. Esta función callback se recibe una vez por jugador en el servidor del que se han solicitado los datos.
voidPlayersFailedToRespondSe llama cuando el servidor no ha respondido a la solicitud de datos sobre el jugador.
voidPlayersRefreshCompleteSe llama cuando el servidor ha terminado de responder a la solicitud de datos del jugador (es decir, que no se van a recibir más callbacks de AddPlayerToList).

Devuelve: HServerQuery
Handle a la consulta del servidor pendiente.

RefreshQuery

void RefreshQuery( HServerListRequest hRequest );
NombreTipoDescripción
hRequestHServerListRequestHandle de la solicitud de lista de servidores.

Vuelve a hacer ping a los servidores de la lista, pero no actualiza la lista de servidores.

La consulta callback instalada cuando se solicitó la lista de servidores se utilizará de nuevo para publicar notificaciones y se volverá a llamar a RefreshComplete, por lo que la función callback debe seguir siendo válida hasta que se complete o se publique la solicitud con ReleaseRequest.

RefreshServer

void RefreshServer( HServerListRequest hRequest, int iServer );
NombreTipoDescripción
hRequestHServerListRequestHandle de la solicitud de lista de servidores.
iServerintEl índice del servidor para actualizar, de 0 a GetServerCount.

Actualiza un único servidor de una consulta.

Si desea actualizar todos los servidores, debe usar RefreshQuery.

ReleaseRequest

void ReleaseRequest( HServerListRequest hServerListRequest );
NombreTipoDescripción
hServerListRequestHServerListRequestEl objeto de solicitud de lista de servidores asíncrono que se libera.

Libera el objeto de solicitud de la lista de servidores asíncrono y cancela cualquier consulta pendiente, siempre y cuando haya alguna en curso.

La función callback RefreshComplete no se enviará cuando se libere la solicitud.

RequestFavoritesServerList

HServerListRequest RequestFavoritesServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
NombreTipoDescripción
iAppAppId_tAplicación cuya lista de servidores se solicita.
ppchFiltersMatchMakingKeyValuePair_t **Un vector de filtros para recuperar solo aquellos servidores que le interesan al usuario.
nFiltersuint32El número de filtros en el vector ppchFilters.
pRequestServersResponseISteamMatchmakingServerListResponse *Este debe ser el objeto que se hereda de ISteamMatchmakingServerListResponse. Normalmente this.

Solicita una nueva lista de servidores de juego de la lista de servidores "Favoritos".

Consulta MatchMakingKeyValuePair_t para más información.

Devuelve: HServerListRequest
Un nuevo objeto de solicitud de lista de servidores asíncronos.

NOTA: Este objeto de solicitud debe liberarse llamando a ReleaseRequest cuando hayas terminado de usarlo.

RequestFriendsServerList

HServerListRequest RequestFriendsServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
NombreTipoDescripción
iAppAppId_tAplicación cuya lista de servidores se solicita.
ppchFiltersMatchMakingKeyValuePair_t **Un vector de filtros para recuperar solo aquellos servidores que le interesan al usuario.
nFiltersuint32El número de filtros en el vector ppchFilters.
pRequestServersResponseISteamMatchmakingServerListResponse *Este debe ser el objeto que se hereda de ISteamMatchmakingServerListResponse. Normalmente this.

Solicita una nueva lista de servidores de juego de la lista de servidores "Amigos".

Consulta MatchMakingKeyValuePair_t para más información.

Devuelve: HServerListRequest
Un nuevo objeto de solicitud de lista de servidores asíncronos.

NOTA: Este objeto de solicitud debe liberarse llamando a ReleaseRequest cuando hayas terminado de usarlo.

RequestHistoryServerList

HServerListRequest RequestHistoryServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
NombreTipoDescripción
iAppAppId_tAplicación cuya lista de servidores se quiere obtener.
ppchFiltersMatchMakingKeyValuePair_t **Un vector de filtros para recuperar solo aquellos servidores que le interesan al usuario.
nFiltersuint32El número de filtros en el vector ppchFilters.
pRequestServersResponseISteamMatchmakingServerListResponse *Este debe ser el objeto que se hereda de ISteamMatchmakingServerListResponse. Normalmente this.

Solicita una nueva lista de servidores de juego de la lista de servidores "Historial".

Consulta MatchMakingKeyValuePair_t para más información.

Devuelve: HServerListRequest
Un nuevo objeto de solicitud de lista de servidores asíncronos.

NOTA: Este objeto de solicitud debe liberarse llamando a ReleaseRequest cuando hayas terminado de usarlo.

RequestInternetServerList

HServerListRequest RequestInternetServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
NombreTipoDescripción
iAppAppId_tAplicación cuya lista de servidores se quiere obtener.
ppchFiltersMatchMakingKeyValuePair_t **Un vector de filtros para recuperar solo aquellos servidores que le interesan al usuario.
nFiltersuint32El número de filtros en el vector ppchFilters.
pRequestServersResponseISteamMatchmakingServerListResponse *Este debe ser el objeto que se hereda de ISteamMatchmakingServerListResponse. Normalmente this.

Solicita una nueva lista de servidores de juego de la lista de servidores "Internet".

Consulta MatchMakingKeyValuePair_t para más información.

Devuelve: HServerListRequest
Activa la función callback LobbyChatUpdate_t.
Un nuevo objeto de solicitud de lista de servidores asíncronos.

NOTA: Este objeto de solicitud debe liberarse llamando a ReleaseRequest cuando hayas terminado de usarlo.

RequestLANServerList

HServerListRequest RequestLANServerList( AppId_t iApp, ISteamMatchmakingServerListResponse *pRequestServersResponse );
NombreTipoDescripción
iAppAppId_tAplicación cuya lista de servidores se solicita.
pRequestServersResponseISteamMatchmakingServerListResponse *Este debe ser el objeto que se hereda de ISteamMatchmakingServerListResponse. Normalmente this.

Solicita una nueva lista de servidores de juego de la lista de servidores "LAN".

Consulta MatchMakingKeyValuePair_t para más información.

Devuelve: HServerListRequest
Un nuevo objeto de solicitud de lista de servidores asíncronos.

NOTA: Este objeto de solicitud debe liberarse llamando a ReleaseRequest cuando hayas terminado de usarlo.

RequestSpectatorServerList

HServerListRequest RequestSpectatorServerList( AppId_t iApp, MatchMakingKeyValuePair_t **ppchFilters, uint32 nFilters, ISteamMatchmakingServerListResponse *pRequestServersResponse );
NombreTipoDescripción
iAppAppId_tAplicación cuya lista de servidores se solicita.
ppchFiltersMatchMakingKeyValuePair_t **Un vector de filtros para recuperar solo aquellos servidores que le interesan al usuario.
nFiltersuint32El número de filtros en el vector ppchFilters.
pRequestServersResponseISteamMatchmakingServerListResponse *Este debe ser el objeto que se hereda de ISteamMatchmakingServerListResponse. Normalmente this.

Solicita una nueva lista de servidores de juego de la lista de servidores "Espectadores".

Consulta MatchMakingKeyValuePair_t para más información.

Devuelve: HServerListRequest
Un nuevo objeto de solicitud de lista de servidores asíncronos.

NOTA: Este objeto de solicitud debe liberarse llamando a ReleaseRequest cuando hayas terminado de usarlo.

ServerRules

HServerQuery ServerRules( uint32 unIP, uint16 usPort, ISteamMatchmakingRulesResponse *pRequestServersResponse );
NombreTipoDescripción
unIPuint32IP del servidor de juego que se consulta conforme al orden del host, es decir, 127.0.0.1 == 0x7f000001.
usPortuint16Puerto del servidor de juego que se consulta conforme al orden del host.
pRequestServersResponseISteamMatchmakingRulesResponse *Este debe ser el objeto que se hereda de ISteamMatchmakingRulesResponse. Normalmente this.

Consulta servidores de juego de manera individual directamente a través del IP o del puerto para solicitar la lista de reglas que utiliza el servidor. (Consulta ISteamGameServer::SetKeyValue para establecer las reglas en el lado del servidor).

Debes heredar del objeto ISteamMatchmakingRulesResponse para recibir esta función callback.

ISteamMatchmakingRulesResponse

Interfaz callback para recibir respuestas después de hacer ping a un servidor concreto.

Si se está destruyendo un objeto que implementa esta interfaz, conviene llamar a CancelServerQuery y pasar el handle de la consulta en curso. Si no se cancela una consulta en curso cuando se destruye un handle callback, puede producirse un bloqueo cuando se activa una función callback más adelante.

Funciones miembro:
Tipo de devoluciónNombre de la funciónParámetrosDescripción
voidAddPlayerToListconst char *pchName, int nScore, float flTimePlayedSe llama cuando se recuperan datos sobre una regla en el servidor. Se recibe una de estas funciones por cada regla definida en el servidor que se consulta.
voidPlayersFailedToRespondSe llama cuando el servidor no responde a la solicitud de detalles de la regla.
voidRulesRefreshCompleteSe llama cuando el servidor ha terminado de responder a la solicitud de detalles de la regla (es decir, no recibirá más funciones callback RulesResponded).

Devuelve: HServerQuery
Handle a la consulta del servidor pendiente.

Structs

Estas son las estructuras que pueden devolver las funciones de ISteamMatchmakingServers y con las que pueden interactuar.

MatchMakingKeyValuePair_t

Almacena pares clave-valor usados en consultas de emparejamiento o matchmaking.

De hecho, el nombre clave-valor es un poco engañoso. La "clave" se entiende mejor como "código de operación de filtrado" y el "valor" es el operando de esta operación. El significado del operando depende del filtro.

Códigos de operaciones de filtrado compatibles:
  • "map"
    El servidor pasa el filtro si el servidor está reproduciendo el mapa especificado.
  • "gamedataand"
    El servidor pasa el filtro si los datos del juego del servidor (ISteamGameServer::SetGameData) contienen todas las cadenas especificadas. El campo valor es una lista de cadenas, separadas por comas, que deben coincidir.
  • "gamedataor"
    El servidor pasa el filtro si los datos del juego del servidor (ISteamGameServer::SetGameData) contienen al menos una de las cadenas especificadas. El campo valor es una lista de cadenas, separadas por comas, que deben coincidir.
  • "gamedatanor"
    El servidor pasa el filtro si los datos del juego del servidor (ISteamGameServer::SetGameData) no contienen ninguna de las cadenas especificadas. El campo valor es una lista de cadenas, separadas por comas, que se deben comprobar.
  • "gametagsand"
    El servidor pasa el filtro si las etiquetas de juego del servidor (ISteamGameServer::SetGameTags) contienen todas las cadenas especificadas. El campo valor es una lista de cadenas, separadas por comas, que se deben comprobar.
  • "gametagsnor"
    El servidor pasa el filtro si las etiquetas de juego del servidor (ISteamGameServer::SetGameTags) no contienen ninguna de las cadenas especificadas. El campo valor es una lista de cadenas, separadas por comas, que se deben comprobar.
  • "and" (x1 && x2 && ... && xn)
    "or" (x1 || x2 || ... || xn)
    "nand" !(x1 && x2 && ... && xn)
    "nor" !(x1 || x2 || ... || xn)
    Realiza la operación booleana en los siguientes filtros. El operando de este filtro especifica el "tamaño" de las entradas booleanas de la operación, en pares clave-valor. (Los pares clave-valor han de ir inmediatamente después, es decir, esta es una notación de un prefijo de operador lógico). En el caso más simple donde las expresiones booleanas no están anidadas, esto es simplemente el número de operandos.
    Por ejemplo, para hacer coincidir los servidores en un mapa en particular o con una etiqueta en particular, se usarían estos filtros.
    ( server.map == "cp_dustbowl" || server.gametags.contains("payload") ) "or", "2" "map", "cp_dustbowl" "gametagsand", "payload"

    Si las entradas lógicas están anidadas, el operando especifica el tamaño de la "longitud" entera de sus operandos, no el número de secundarios inmediatos.
    ( server.map == "cp_dustbowl" || ( server.gametags.contains("payload") && !server.gametags.contains("payloadrace") ) ) "or", "4" "map", "cp_dustbowl" "and", "2" "gametagsand", "payload" "gametagsnor", "payloadrace"
    No se puede conseguir un unario usando "nand" o "nor" con un solo operando.

  • "addr"
    El servidor pasa el filtro si la dirección de consulta del servidor coincide con el puerto IP o IP especificado.
  • "gameaddr"
    El servidor pasa el filtro si la dirección del juego del servidor coincide con el puerto IP o IP especificado.

Las siguientes operaciones de filtro ignoran la parte del "valor" de MatchMakingKeyValuePair_t
  • "dedicated"
    El servidor pasa el filtro si pasa true a ISteamGameServer::SetDedicatedServer.
  • "secure"
    El servidor pasa el filtro si el servidor está habilitado para VAC.
  • "notfull"
    El servidor pasa el filtro si el número de jugadores es menor que el número máximo de jugadores informado.
  • "hasplayers"
    El servidor pasa el filtro si el número de jugadores es mayor que cero.
  • "noplayers"
    El servidor pasa el filtro si no tiene ningún jugador.
  • "linux"
    El servidor pasa el filtro si es un servidor linux.

NombreTipoDescripción
m_szKeychar[256]Código de operación del filtro.
m_szValuechar[256]Operación.

Enums

Estas son las enumeraciones definidas para usarse con ISteamMatchmakingServers.

EMatchMakingServerResponse

Respuesta de retorno al actualizar servidores de matchmaking. Consulta RequestInternetServerList para más información.

NombreValorDescripción
eServerResponded0El servidor respondió con éxito.
eServerFailedToRespond1El servidor no responde.
eNoServersListedOnMasterServer2Solo para una consulta de tipo Internet. Se devuelve en la función callback de respuesta si no hay servidores de este tipo.

Constantes

Estas son constantes definidas para usarse con ISteamMatchmakingServers.

NombreTipoValorDescripción
k_cbMaxGameServerGameDataint2048Tamaño máximo (en bytes UTF-8, incluido el terminador nulo) compatible para los datos del servidor de juego que se establece con ISteamGameServer::SetGameData.
k_cbMaxGameServerGameDescriptionint64El tamaño máximo (en UTF-8 bytes, incluido el terminador nulo) admitido para la descripción del mod del servidor del juego que se establece con ISteamGameServer::SetGameDescription.
k_cbMaxGameServerGameDirint32El tamaño máximo (en UTF-8 bytes, incluido el terminador nulo) admitido para el servidor de juegos mod dir que se establece conISteamGameServer::SetModDir.
k_cbMaxGameServerMapNameint32El tamaño máximo (en UTF-8 bytes, incluido el terminador nulo) admitido para los nombres de mapas del servidor de juegos que se establece con ISteamGameServer::SetMapName.
k_cbMaxGameServerNameint64El tamaño máximo (en UTF-8 bytes, incluido el terminador nulo) admitido para los nombres de servidor de juegos que se establece con ISteamGameServer::SetServerName.
k_cbMaxGameServerTagsint128El tamaño máximo (en UTF-8 bytes, incluido el terminador nulo) admitido para las etiquetas del servidor de juegos que se establece con ISteamGameServer::SetGameTags.