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 );
Nombre | Tipo | Descripción |
hRequest | HServerListRequest | Handle 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 );
Nombre | Tipo | Descripción |
hServerQuery | HServerQuery | La 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 );
Nombre | Tipo | Descripción |
hRequest | HServerListRequest | Handle 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 );
Nombre | Tipo | Descripción |
hRequest | HServerListRequest | Handle de la solicitud de lista de servidores. |
iServer | int | El í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 );
Nombre | Tipo | Descripción |
hRequest | HServerListRequest | Handle 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 );
Nombre | Tipo | Descripción |
unIP | uint32 | El IP del servidor de juego que estás consultando conforme al orden del host, es decir, 127.0.0.1 == 0x7f000001. |
usPort | uint16 | Puerto del servidor de juego que se consulta conforme al orden del host. |
pRequestServersResponse | ISteamMatchmakingPingResponse * | 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ón | Nombre de la función | Parámetros | Descripción |
void | ServerResponded | gameserveritem_t &server | Se llama cuando el servidor ha respondido correctamente y cuenta con datos actualizados. |
void | ServerFailedToRespond | | Se llama cuando el servidor no ha respondido a la solicitud de ping. |
Devuelve: HServerQueryHandle a la consulta del servidor pendiente.
PlayerDetails
HServerQuery PlayerDetails( uint32 unIP, uint16 usPort, ISteamMatchmakingPlayersResponse *pRequestServersResponse );
Nombre | Tipo | Descripción |
unIP | uint32 | IP del servidor de juego que se consulta conforme al orden del host, es decir, 127.0.0.1 == 0x7f000001. |
usPort | uint16 | Puerto del servidor de juego que se consulta conforme al orden del host. |
pRequestServersResponse | ISteamMatchmakingPlayersResponse * | 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ón | Nombre de la función | Parámetros | Descripción |
void | AddPlayerToList | const char *pchName, int nScore, float flTimePlayed | Se 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. |
void | PlayersFailedToRespond | | Se llama cuando el servidor no ha respondido a la solicitud de datos sobre el jugador. |
void | PlayersRefreshComplete | | Se 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: HServerQueryHandle a la consulta del servidor pendiente.
RefreshQuery
void RefreshQuery( HServerListRequest hRequest );
Nombre | Tipo | Descripción |
hRequest | HServerListRequest | Handle 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 );
Nombre | Tipo | Descripción |
hRequest | HServerListRequest | Handle de la solicitud de lista de servidores. |
iServer | int | El í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 );
Nombre | Tipo | Descripción |
hServerListRequest | HServerListRequest | El 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 );
Nombre | Tipo | Descripción |
iApp | AppId_t | Aplicación cuya lista de servidores se solicita. |
ppchFilters | MatchMakingKeyValuePair_t ** | Un vector de filtros para recuperar solo aquellos servidores que le interesan al usuario. |
nFilters | uint32 | El número de filtros en el vector ppchFilters . |
pRequestServersResponse | ISteamMatchmakingServerListResponse * | 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: HServerListRequestUn 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 );
Nombre | Tipo | Descripción |
iApp | AppId_t | Aplicación cuya lista de servidores se solicita. |
ppchFilters | MatchMakingKeyValuePair_t ** | Un vector de filtros para recuperar solo aquellos servidores que le interesan al usuario. |
nFilters | uint32 | El número de filtros en el vector ppchFilters . |
pRequestServersResponse | ISteamMatchmakingServerListResponse * | 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: HServerListRequestUn 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 );
Nombre | Tipo | Descripción |
iApp | AppId_t | Aplicación cuya lista de servidores se quiere obtener. |
ppchFilters | MatchMakingKeyValuePair_t ** | Un vector de filtros para recuperar solo aquellos servidores que le interesan al usuario. |
nFilters | uint32 | El número de filtros en el vector ppchFilters . |
pRequestServersResponse | ISteamMatchmakingServerListResponse * | 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: HServerListRequestUn 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 );
Nombre | Tipo | Descripción |
iApp | AppId_t | Aplicación cuya lista de servidores se quiere obtener. |
ppchFilters | MatchMakingKeyValuePair_t ** | Un vector de filtros para recuperar solo aquellos servidores que le interesan al usuario. |
nFilters | uint32 | El número de filtros en el vector ppchFilters . |
pRequestServersResponse | ISteamMatchmakingServerListResponse * | 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: HServerListRequestActiva 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 );
Nombre | Tipo | Descripción |
iApp | AppId_t | Aplicación cuya lista de servidores se solicita. |
pRequestServersResponse | ISteamMatchmakingServerListResponse * | 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: HServerListRequestUn 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 );
Nombre | Tipo | Descripción |
iApp | AppId_t | Aplicación cuya lista de servidores se solicita. |
ppchFilters | MatchMakingKeyValuePair_t ** | Un vector de filtros para recuperar solo aquellos servidores que le interesan al usuario. |
nFilters | uint32 | El número de filtros en el vector ppchFilters . |
pRequestServersResponse | ISteamMatchmakingServerListResponse * | 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: HServerListRequestUn 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 );
Nombre | Tipo | Descripción |
unIP | uint32 | IP del servidor de juego que se consulta conforme al orden del host, es decir, 127.0.0.1 == 0x7f000001. |
usPort | uint16 | Puerto del servidor de juego que se consulta conforme al orden del host. |
pRequestServersResponse | ISteamMatchmakingRulesResponse * | 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ón | Nombre de la función | Parámetros | Descripción |
void | AddPlayerToList | const char *pchName, int nScore, float flTimePlayed | Se 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. |
void | PlayersFailedToRespond | | Se llama cuando el servidor no responde a la solicitud de detalles de la regla. |
void | RulesRefreshComplete | | Se 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: HServerQueryHandle 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.
Nombre | Tipo | Descripción |
m_szKey | char[256] | Código de operación del filtro. |
m_szValue | char[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.
Nombre | Valor | Descripción |
eServerResponded | 0 | El servidor respondió con éxito. |
eServerFailedToRespond | 1 | El servidor no responde. |
eNoServersListedOnMasterServer | 2 | Solo 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.
Nombre | Tipo | Valor | Descripción |
k_cbMaxGameServerGameData | int | 2048 | Tamañ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_cbMaxGameServerGameDescription | int | 64 | El 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_cbMaxGameServerGameDir | int | 32 | El 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_cbMaxGameServerMapName | int | 32 | El 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_cbMaxGameServerName | int | 64 | El 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_cbMaxGameServerTags | int | 128 | El 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. |