Documentation Steamworks
Interface ISteamMatchmaking
Fonctions permettant à la clientèle d'accéder aux services de matchmaking, de favoris et d'agir sur les salles d'attente.

Pour plus d'informations, consultez la section Matchmaking Steam et salles d'attente.

Fonctions membres

Les fonctions membres d'ISteamMatchmaking sont appelées par le biais de la fonction d'accesseur global SteamMatchmaking().

AddFavoriteGame

int AddFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer );
NomTypeDescription
nAppIDAppId_tAppID du jeu.
nIPuint32Adresse IP du serveur dans l'ordre de l'hôte, c.-à-d. 127.0.0.1 == 0x7f000001.
nConnPortuint16Port utilisé pour se connecter au serveur, dans l'ordre de l'hôte.
nQueryPortuint16Port utilisé pour interroger le serveur, dans l'ordre de l'hôte.
unFlagsuint32Définit si le serveur doit être ajouté à la liste des favoris ou à l'historique. Pour plus d'informations, veuillez consulter k_unFavoriteFlagNone.
rTime32LastPlayedOnServeruint32Devrait être l'heure actuelle au format « depuis l'époque Unix » (secondes passées depuis le 1er janvier 1970).

Ajoute le serveur de jeu à la liste des favoris locaux ou met à jour le temps de jeu du serveur s'il existe déjà dans la liste.

Éléments renvoyés : int

AddRequestLobbyListCompatibleMembersFilter

void AddRequestLobbyListCompatibleMembersFilter( CSteamID steamIDLobby );
NomTypeDescription
steamIDLobbyCSteamID

Inutilisé : vérifie la compatibilité entre personnes qui veulent jouer en fonction du système ami(e)s-ennemi(e)s.

AddRequestLobbyListDistanceFilter

void AddRequestLobbyListDistanceFilter( ELobbyDistanceFilter eLobbyDistanceFilter );
NomTypeDescription
eLobbyDistanceFilterELobbyDistanceFilterPrécise la distance maximum possible.

Définit la distance physique à laquelle nous chercherons des salles d'attente. Ceci s'opère sur la base de l'adresse IP des utilisateurs et utilisatrices et d'une carte de localisation IP enregistrées sur Steam.

AddRequestLobbyListFilterSlotsAvailable

void AddRequestLobbyListFilterSlotsAvailable( int nSlotsAvailable );
NomTypeDescription
nSlotsAvailableintNombre d'emplacements disponibles qui doivent être ouverts.

Filtres destinés à ne renvoyer que les salles d'attente comportant le nombre spécifié de places disponibles ouvertes.

AddRequestLobbyListNearValueFilter

void AddRequestLobbyListNearValueFilter( const char *pchKeyToMatch, int nValueToBeCloseTo );
NomTypeDescription
pchKeyToMatchconst char *Nom de la clé de filtre à faire correspondre. Ne peut pas être plus long que k_nMaxLobbyKeyLength.
nValueToBeCloseTointValeur à partir de laquelle les salles d'attente seront triées.

Trie les résultats au plus près de la valeur spécifiée.

Les filtres proches ne filtrent pas réellement les valeurs, ils influencent uniquement la manière dont les résultats sont triés. Vous pouvez spécifier plusieurs filtres proches, le premier filtre ayant la plus grande influence et le dernier, la moins élevée.

AddRequestLobbyListNumericalFilter

void AddRequestLobbyListNumericalFilter( const char *pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType );
NomTypeDescription
pchKeyToMatchconst char *Nom de la clé de filtre à faire correspondre. Ne peut pas être plus long que k_nMaxLobbyKeyLength.
nValueToMatchintNombre à faire correspondre.
eComparisonTypeELobbyComparisonType de comparaison à effectuer.

Ajoute un filtre de comparaison numérique au prochain appel RequestLobbyList.

AddRequestLobbyListResultCountFilter

void AddRequestLobbyListResultCountFilter( int cMaxResults );
NomTypeDescription
cMaxResultsintNombre maximum de salles d'attente à renvoyer.

Définit le nombre maximum de salles d'attente à renvoyer. Plus le compte est bas, plus le téléchargement des résultats et des détails de la salle d'attente au client sera rapide.

AddRequestLobbyListStringFilter

void AddRequestLobbyListStringFilter( const char *pchKeyToMatch, const char *pchValueToMatch, ELobbyComparison eComparisonType );
NomTypeDescription
pchKeyToMatchconst char *Nom de la clé de filtre à faire correspondre. Ne peut pas être plus long que k_nMaxLobbyKeyLength.
pchValueToMatchconst char *Chaine de caractères à faire correspondre.
eComparisonTypeELobbyComparisonType de comparaison à effectuer.

Ajoute un filtre de comparaison des chaines de caractères au prochain appel RequestLobbyList.

CheckForPSNGameBootInvite

void CheckForPSNGameBootInvite( unsigned int iGameBootAttributes );
NomTypeDescription
iGameBootAttributesunsigned int

Obsolète : PS3 uniquement.

CreateLobby

SteamAPICall_t CreateLobby( ELobbyType eLobbyType, int cMaxMembers );
NomTypeDescription
eLobbyTypeELobbyTypeType et visibilité de cette salle d'attente. Peut être modifié par la suite grâce à SetLobbyType.
cMaxMembersintNombre maximum de personnes pouvant rejoindre la salle d'attente. Ne peut pas dépasser 250.

Créer une nouvelle salle d'attente de matchmaking.

Éléments renvoyés : SteamAPICall_t à utiliser avec un résultat d'appel LobbyCreated_t.
Déclenche un rappel LobbyEnter_t.
Déclenche un rappel LobbyDataUpdate_t.
Si les résultats renvoyés via le résultat d'appel LobbyCreated_t indiquent un succès, alors la salle d'attente sera rejointe et fin prête.

Le rappel LobbyEnter_t sera également reçu, vu que l'utilisatrice ou l'utilisateur local a rejoint sa propre salle d'attente.

DeleteLobbyData

bool DeleteLobbyData( CSteamID steamIDLobby, const char *pchKey );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente pour laquelle supprimer les métadonnées.
pchKeyconst char *Clé pour laquelle supprimer les données.

Supprime une clé de métadonnées de la salle d'attente.

Cette opération ne peut être effectuée que par le ou la propriétaire de la salle d'attente.

Les données ne seront envoyées que si la clé existait déjà. Il y a un court délai avant l'envoi des données, vous pouvez donc effectuer cet appel de manière répétée afin de définir toutes les données que vous devez envoyer. Ces dernières seront regroupées et envoyées après le dernier appel séquentiel.

Éléments renvoyés : bool
true si la clé a été supprimée avec succès. Sinon, renvoie false si steamIDLobby ou pchKey ne sont pas valides.

GetFavoriteGame

bool GetFavoriteGame( int iGame, AppId_t *pnAppID, uint32 *pnIP, uint16 *pnConnPort, uint16 *pnQueryPort, uint32 *punFlags, uint32 *pRTime32LastPlayedOnServer );
NomTypeDescription
iGameintIndex du serveur de jeu favori duquel obtenir les détails. Doit être compris entre 0 et GetFavoriteGameCount.
pnAppIDAppId_t *Renvoie l'AppID pour lequel ce serveur travaille.
pnIPuint32 *Renvoie l'adresse IP du serveur dans l'ordre de l'hôte, c.-à-d. 127.0.0.1 == 0x7f000001.
pnConnPortuint16 *Renvoie le port utilisé pour se connecter au serveur, dans l'ordre de l'hôte.
pnQueryPortuint16 *Renvoie le port utilisé pour interroger le serveur, dans l'ordre de l'hôte.
punFlagsuint32 *Renvoie si le serveur doit être ajouté à la liste des favoris ou à l'historique. Pour plus d'informations, veuillez consulter k_unFavoriteFlagNone.
pRTime32LastPlayedOnServeruint32 *Renvoie l'heure à laquelle le serveur a été ajouté pour la dernière fois à la liste des favoris, au format « depuis l'époque Unix » (secondes écoulées depuis le 1er janvier 1970).

Obtient les détails du serveur de jeu favori, par index.

REMARQUE : vous devez appeler GetFavoriteGameCount avant d'appeler cette fonction.

Éléments renvoyés : bool
true si les détails ont été récupérés avec succès. Renvoie false si iGame ne dispose pas d'un index valide.

Consulter également : AddFavoriteGame, RemoveFavoriteGame

GetFavoriteGameCount

int GetFavoriteGameCount();
Obtient le nombre de serveurs de jeu favoris et récents que l'utilisateur ou l'utilisatrice a stockés localement.

Éléments renvoyés : int


Consultez également : AddFavoriteGame, RemoveFavoriteGame

GetLobbyByIndex

CSteamID GetLobbyByIndex( int iLobby );
NomTypeDescription
iLobbyintIndex de la salle d'attente de laquelle obtenir le SteamID, de 0 à LobbyMatchList_t.m_nLobbiesMatching.

Obtient le SteamID de la salle d'attente à l'index spécifié après réception des résultats de RequestLobbyList.

REMARQUE : ne devrait être appelé qu'après réception d'un résultat d'appel LobbyMatchList_t.

Éléments renvoyés : CSteamID
Renvoie k_steamIDNil si l'index fourni n'est pas valide ou qu'aucune salle d'attente n'est trouvée.

GetLobbyChatEntry

int GetLobbyChatEntry( CSteamID steamIDLobby, int iChatID, CSteamID *pSteamIDUser, void *pvData, int cubData, EChatEntryType *peChatEntryType );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente de laquelle obtenir l'entrée de discussion. Devrait presque toujours être LobbyChatMsg_t::m_ulSteamIDUser.
iChatIDintIndex de l'entrée de discussion dans la salle d'attente. Devrait presque toujours être LobbyChatMsg_t::m_iChatID.
pSteamIDUserCSteamID *Si défini, ce paramètre renvoie le SteamID de la personne qui a envoyé ce message. Non requis la plupart du temps car sera identique à LobbyChatMsg_t::m_ulSteamIDUser.
pvDatavoid *Renvoie les données du message en les copiant dans ce tampon. La taille de ce tampon ne doit pas dépasser 4 Ko.
cubDataintLa taille du tampon alloué à pvData.
peChatEntryTypeEChatEntryType *Si défini, ce paramètre renverra simplement toujours k_EChatEntryTypeChatMsg. Peut être simplement défini sur NULL.

Obtient les données d'un message dans une salle d'attente après la réception d'un rappel LobbyChatMsg_t.

Éléments renvoyés : int
Nombre d'octets copiés dans pvData.

Consulter également : SendLobbyChatMsg

GetLobbyData

const char * GetLobbyData( CSteamID steamIDLobby, const char *pchKey );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente de laquelle obtenir les métadonnées.
pchKeyconst char *Clé pour laquelle obtenir la valeur.

Obtient les métadonnées associées à la clé spécifiée depuis la salle d'attente spécifiée.

REMARQUE : il n'est possible d'obtenir des métadonnées que depuis les salles d'attente connues du client, soit après réception d'une liste de salles d'attente de LobbyMatchList_t et récupération des données avec RequestLobbyData, soit après avoir rejoint une salle d'attente.

Éléments renvoyés : const char *
Renvoie une chaine de caractères vide ("") si aucune valeur n'est définie pour cette clé, ou si steamIDLobby n'est pas valide.

GetLobbyDataByIndex

bool GetLobbyDataByIndex( CSteamID steamIDLobby, int iLobbyData, char *pchKey, int cchKeyBufferSize, char *pchValue, int cchValueBufferSize );
NomTypeDescription
steamIDLobbyCSteamIDLa salle d'attente DOIT être identique à celle utilisée dans l'appel précédent à GetLobbyDataCount !
iLobbyDataintIndex compris entre 0 et GetLobbyDataCount.
pchKeychar *Renvoie le nom de la clé située à l'index spécifié en la copiant dans ce tampon.
cchKeyBufferSizeintLa taille du tampon alloué à pchKey. Devrait généralement être k_nMaxLobbyKeyLength.
pchValuechar *Renvoie la valeur associée à la clé située à l'index spécifié en la copiant dans ce tampon.
cchValueBufferSizeintLa taille du tampon alloué à pchValue. Devrait généralement être k_cubChatMetadataMax.

Obtient une paire clé/valeur de métadonnées de la salle d'attente en fonction de l'index.

REMARQUE : vous devez appeler GetLobbyDataCount avant d'appeler cette fonction.

Éléments renvoyés : bool
true en cas de réussite. Sinon, renvoie false si steamIDLobby ou iLobbyData ne sont pas valides.

GetLobbyDataCount

int GetLobbyDataCount( CSteamID steamIDLobby );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente pour laquelle obtenir le décompte des données.

Obtient le nombre de clés de métadonnées défini dans la salle d'attente spécifiée.

REMARQUE : il n'est possible d'obtenir des métadonnées que depuis les salles d'attente connues du client, soit après réception d'une liste de salles d'attente de LobbyMatchList_t et récupération des données avec RequestLobbyData, soit après avoir rejoint une salle d'attente.

Cette fonction est utilisée pour l'itération. Après l'avoir appelée, GetLobbyDataByIndex peut être utilisée pour obtenir la paire clé/valeur de chaque métadonnée.

REMARQUE : ne devrait généralement être utilisé qu'à des fins de débogage.

Éléments renvoyés : int
Renvoie 0 si steamIDLobby n'est pas valide.

Exemple :
void ListLobbyData( CSteamID lobbyID ) { int nData = SteamMatchmaking()->GetLobbyDataCount( lobbyID ); char key[k_nMaxLobbyKeyLength]; char value[k_cubChatMetadataMax]; for( int i = 0; i < nData; ++i ) { bool bSuccess = SteamMatchmaking()->GetLobbyDataByIndex( lobbyID, i, key, k_nMaxLobbyKeyLength, value, k_cubChatMetadataMax ); if ( bSuccess ) { printf( "Lobby Data %d, Key: \"%s\" - Value: \"%s\"\n", i, key, value ); } } }

GetLobbyGameServer

bool GetLobbyGameServer( CSteamID steamIDLobby, uint32 *punGameServerIP, uint16 *punGameServerPort, CSteamID *psteamIDGameServer );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente de laquelle obtenir les informations sur le serveur de jeu.
punGameServerIPuint32 *Si définie, renvoie l'adresse IP du serveur de jeu, dans l'ordre de l'hôte, c.-à-d. 127.0.0.1 == 0x7f000001.
punGameServerPortuint16 *Si défini, renvoie le port de connexion du serveur de jeu, dans l'ordre de l'hôte.
psteamIDGameServerCSteamID *Renvoie le SteamID du serveur de jeu, si défini.

Obtient les détails d'un serveur de jeu défini dans une salle d'attente.

L'adresse IP/le port ou le SteamID du serveur de jeu doivent être valides, en fonction de la manière dont vous souhaitez que les clients puissent se connecter.

Éléments renvoyés : bool
true si la salle d'attente est valide et qu'un serveur de jeu valide lui est attribué. Sinon, renvoie false.

Consulter également : SetLobbyGameServer

GetLobbyMemberByIndex

CSteamID GetLobbyMemberByIndex( CSteamID steamIDLobby, int iMember );
NomTypeDescription
steamIDLobbyCSteamIDLa salle d'attente DOIT être identique à celle utilisée dans l'appel précédent à GetNumLobbyMembers !
iMemberintIndex compris entre 0 et GetNumLobbyMembers.

Obtient le SteamID du membre de la salle d'attente à l'index donné.

REMARQUE : vous devez appeler GetNumLobbyMembers avant d'appeler cette fonction.

REMARQUE : l'utilisatrice ou utilisateur actuel doit se trouver dans la salle d'attente pour récupérer les SteamID des autres personnes dans cette salle d'attente.

Éléments renvoyés : CSteamID
Les index non valides renvoient k_steamIDNil.

GetLobbyMemberData

const char * GetLobbyMemberData( CSteamID steamIDLobby, CSteamID steamIDUser, const char *pchKey );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente dans laquelle se trouve l'autre personne.
steamIDUserCSteamIDSteamID du compte duquel obtenir les métadonnées.
pchKeyconst char *Clé pour laquelle obtenir la valeur.

Obtient des métadonnées pour chaque utilisateur ou utilisatrice depuis une autre personne en attente pour jouer dans la salle d'attente spécifiée.

Ne peut être demandé qu'auprès des personnes qui se trouvent dans les salles d'attente dans lesquelles vous êtes actuellement.

Éléments renvoyés : const char *
Renvoie NULL si steamIDLobby n'est pas valide, ou que steamIDUser n'est pas dans la salle d'attente.

Renvoie une chaine de caractères vide ("") si pchKey n'est pas défini pour le compte en question.

Consultez également : SetLobbyMemberData

GetLobbyMemberLimit

int GetLobbyMemberLimit( CSteamID steamIDLobby );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente de laquelle obtenir la limite de membres.

La limite actuelle au nombre de personnes pouvant rejoindre la salle d'attente.
Renvoie 0 si aucune limite n'a été définie.

Éléments renvoyés : int
Renvoie 0 si aucune métadonnée n'est disponible pour la salle d'attente spécifiée.

GetLobbyOwner

CSteamID GetLobbyOwner( CSteamID steamIDLobby );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente de laquelle obtenir le compte propriétaire.

Renvoie le compte propriétaire actuel de la salle d'attente.

REMARQUE : vous devez être membre de la salle d'attente pour accéder à cette information.

Il y a toujours une personne détentrice d'une salle d'attente : si celle-ci la quitte, une autre personne de la salle endossera automatiquement le rôle de propriétaire. Il est possible (bien que rare) de rejoindre une salle d'attente au moment même où sa ou son propriétaire la quitte, et donc d'entrer dans une salle d'attente en tant que propriétaire soi-même.

Éléments renvoyés : CSteamID
Renvoie k_steamIDNil si vous n'êtes pas dans la salle d'attente.

Consulter également : SetLobbyOwner

GetNumLobbyMembers

int GetNumLobbyMembers( CSteamID steamIDLobby );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente de laquelle obtenir le nombre de membres.

Obtient le nombre de personnes dans une salle d'attente.

REMARQUE : l'utilisatrice ou utilisateur actuel doit se trouver dans la salle d'attente pour récupérer les SteamID des autres personnes dans cette salle d'attente.

Cette fonction est utilisée pour l'itération. Après l'avoir appelée, GetLobbyMemberByIndex peut être utilisé pour obtenir le SteamID de chaque personne dans la salle d'attente. Les informations du profil de chaque membre de la salle d'attente (nom, avatar, etc.) sont automatiquement reçues et accessibles via l'interface ISteamFriends.

Éléments renvoyés : int
Nombre de membres dans la salle d'attente, 0 si le compte actuel ne possède aucune donnée de la salle d'attente.

InviteUserToLobby

bool InviteUserToLobby( CSteamID steamIDLobby, CSteamID steamIDInvitee );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente dans laquelle inviter l'utilisateur ou l'utilisatrice.
steamIDInviteeCSteamIDSteamID de la personne qui sera invitée.

Invite une autre personne dans la salle d'attente.

Si la personne spécifiée clique sur le lien d'invitation, un rappel GameLobbyJoinRequested_t sera affiché si la personne est en jeu,
ou si le jeu n'est pas encore lancé, celui-ci se lancera automatiquement avec la ligne de commande +connect_lobby <64-bit lobby Steam ID>.

Éléments renvoyés : bool
true si l'invitation a été envoyée avec succès. Sinon, false si la personne locale n'est pas dans une salle d'attente, si la connexion à Steam n'a pas pu s'effectuer ou si le compte spécifié n'est pas valide.

REMARQUE : cet appel ne vérifie pas si l'autre personne a été invitée avec succès.

JoinLobby

SteamAPICall_t JoinLobby( CSteamID steamIDLobby );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente à rejoindre.

Rejoint une salle d'attente existante.

Le SteamID de la salle d'attente peut être obtenu soit à l'aide d'une recherche effectuée via RequestLobbyList, soit en rejoignant un contact, soit depuis une invitation.

Éléments renvoyés : SteamAPICall_t peut être utilisé avec un résultat d'appel LobbyEnter_t.
Déclenche un rappel LobbyDataUpdate_t.

LeaveLobby

void LeaveLobby( CSteamID steamIDLobby );
NomTypeDescription
steamIDLobbyCSteamIDSalle d'attente à quitter.

Quitte une salle d'attente dans laquelle se trouve actuellement la personne ; cette opération prendra effet immédiatement du côté du client, les autres utilisateurs et utilisatrices de la salle d'attente en seront notifiés via un rappel LobbyChatUpdate_t.

RemoveFavoriteGame

bool RemoveFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags );
NomTypeDescription
nAppIDAppId_tAppID du jeu.
nIPuint32Adresse IP du serveur dans l'ordre de l'hôte, c.-à-d. 127.0.0.1 == 0x7f000001.
nConnPortuint16Port utilisé pour se connecter au serveur, dans l'ordre de l'hôte.
nQueryPortuint16Port utilisé pour interroger le serveur, dans l'ordre de l'hôte.
unFlagsuint32Définit si le serveur doit être ajouté à la liste des favoris ou à l'historique. Pour plus d'informations, veuillez consulter k_unFavoriteFlagNone.

Supprime le serveur de jeu de la liste locale des favoris.

Éléments renvoyés : bool
true si le serveur a été supprimé. Sinon, renvoie false si le serveur spécifié ne figurait pas sur la liste locale des favoris des comptes concernés.

RequestLobbyData

bool RequestLobbyData( CSteamID steamIDLobby );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente dont il faut actualiser les métadonnées.

Actualise toutes les métadonnées d'une salle d'attente dans laquelle vous ne vous trouvez pas actuellement.

Vous n'effectuerez jamais cette opération pour les salles d'attente dont vous êtes membre, ces données seront toujours à jour. Vous pouvez utiliser ce paramètre pour actualiser les salles d'attente obtenues depuis RequestLobbyList ou disponibles via des contacts.

Éléments renvoyés : bool
Déclenche un rappel LobbyDataUpdate_t.
true si la requête a été envoyée avec succès au serveur. false si aucune connexion n'a pu être établie avec Steam, ou que steamIDLobby n'est pas valide.

Si la salle d'attente spécifiée n'existe pas, LobbyDataUpdate_t::m_bSuccess sera défini sur false.

RequestLobbyList

SteamAPICall_t RequestLobbyList();
Obtient une liste filtrée de salles d'attente pertinentes.

Une seule recherche de salle d'attente peut être active à un moment donné. La requête précédente sera annulée si une nouvelle requête est initiée. En fonction de la qualité de la connexion avec l'interface Steam, cet appel pourra prendre de 300 ms à 5 secondes pour s'achever, avec un délai de 20 secondes.

REMARQUE : pour filtrer les résultats, vous DEVEZ appeler les fonctions AddRequestLobbyList* avant d'effectuer cet appel. Les filtres sont supprimés à chaque appel vers cette fonction.

REMARQUE : si AddRequestLobbyListDistanceFilter n'est pas appelé, k_ELobbyDistanceFilterDefault sera utilisé, ce qui ne permettra de trouver des correspondances que dans la même région du monde ou les régions proches.

REMARQUE : renvoie uniquement aux salles d'attente qui ne sont pas pleines, et seules celles qui sont k_ELobbyTypePublic ou k_ELobbyTypeInvisible, et définies comme rejoignables via SetLobbyJoinable.

Éléments renvoyés : SteamAPICall_t à utiliser avec un résultat d'appel LobbyMatchList_t.
REMARQUE : cette opération renvoie également un rappel de compatibilité avec les applications plus anciennes, mais utilisez le résultat de l'appel si possible.

Consulter également : AddRequestLobbyListStringFilter, AddRequestLobbyListNumericalFilter, AddRequestLobbyListNearValueFilter, AddRequestLobbyListFilterSlotsAvailable, AddRequestLobbyListDistanceFilter, AddRequestLobbyListResultCountFilter

Exemple :
class CLobbyListManager { CCallResult< CLobbyListManager, LobbyMatchList_t > m_CallResultLobbyMatchList; void FindLobbies() { // les fonctions SteamMatchmaking()->AddRequestLobbyListFilter*() devraient être appelées, avant RequestLobbyList() SteamAPICall_t hSteamAPICall = SteamMatchmaking()->RequestLobbyList(); m_CallResultLobbyMatchList.Set( hSteamAPICall, this, &CLobbyListManager::OnLobbyMatchList ); } void OnLobbyMatchList( LobbyMatchList_t *pLobbyMatchList, bool bIOFailure ) { // la liste des salles d'attente a été récupérée depuis l'interface Steam. Utilisez les résultats } }

SendLobbyChatMsg

bool SendLobbyChatMsg( CSteamID steamIDLobby, const void *pvMsgBody, int cubMsgBody );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente vers laquelle envoyer le message.
pvMsgBodyconst void *Il peut s'agir de texte ou de données binaires, jusqu'à une taille de 4 Ko.
cubMsgBodyintTaille, en octets, de pvMsgBody. S'il s'agit d'un message textuel, il devrait se présenter sous la forme strlen( text ) + 1 afin d'inclure le caractère nul en fin de chaine.

Émet un message (texte ou données binaires) vers toutes les personnes qui utilisent la salle d'attente.

Toutes les personnes dans la salle d'attente (y compris l'utilisatrice ou l'utilisateur local) recevront un rappel LobbyChatMsg_t avec le message.

Si vous envoyez des données binaires, vous devriez ajouter un entête en préfixe du message afin de le reconnaitre et de le traiter en tant que données personnalisées plutôt que comme un message texte banal.

Pour les communications qui doivent être arbitrées (par exemple, demander à quelqu'un de choisir parmi un ensemble de personnages et s'assurer qu'une seule personne a choisi un personnage), vous pouvez utiliser la ou le propriétaire de la salle d'attente en guise de décisionnaire. GetLobbyOwner renvoie la ou le propriétaire actuel de la salle d'attente. Une seule personne de la salle d'attente peut en être le ou la propriétaire, sans exception. Aussi, pour le scénario de choix de personnage, la personne en train de choisir enverra un message binaire « Je veux être Zoé », le ou la propriétaire de la salle d'attente verra ce message, s'assurera de la possibilité de la chose et émettra le résultat approprié (personne X est Zoé).

Ces messages sont envoyés via l'interface Steam, la bande passante disponible est donc limitée. Pour le trafic plus volumineux comme la voix ou les données de jeu, vous préférerez sans doute utiliser l'API de réseau Steam.

Éléments renvoyés : bool
Déclenche un rappel LobbyChatMsg_t.
true si le message a été envoyé avec succès. false si le message est trop petit ou trop grand, ou si la connexion à Steam n'a pas pu s'effectuer.

SetLinkedLobby

bool SetLinkedLobby( CSteamID steamIDLobby, CSteamID steamIDLobbyDependent );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente principale.
steamIDLobbyDependentCSteamIDSteamID qui sera lié à la salle d'attente principale.

Inutilisé : lier deux salles d'attente dans le but de vérifier la compatibilité du joueur ou de la joueuse à l'aide du système ami(e)s-ennemi(e)s.

Vous devez être propriétaire des deux salles d'attente.

Éléments renvoyés : bool
true si la requête a été envoyée avec succès au serveur Steam.
false si le compte local n'est pas propriétaire des deux salles d'attente ou si la connexion à Steam n'a pas pu s'effectuer.

SetLobbyData

bool SetLobbyData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente pour laquelle définir les métadonnées.
pchKeyconst char *Clé pour laquelle définir les données. Ne peut pas être plus long que k_nMaxLobbyKeyLength.
pchValueconst char *Valeur à définir. Ne peut pas être plus long que k_cubChatMetadataMax.

Définit une paire clé/valeur dans les métadonnées de la salle d'attente. Ceci peut être utilisé pour définir le nom de la salle d'attente, la carte actuelle, le mode de jeu, etc.

Ce paramètre ne peut être défini que par le ou la propriétaire de la salle d'attente. Les membres de la salle d'attente devraient plutôt utiliser SetLobbyMemberData.

Chaque personne de la salle d'attente recevra une notification de modification des données de la salle via un rappel LobbyDataUpdate_t, et toute nouvelle personne rejoignant la salle d'attente recevra les données existantes.

Les données ne seront envoyées qu'en cas de modification. Il y a un court délai avant l'envoi des données, vous pouvez donc effectuer cet appel de manière répétée afin de définir toutes les données que vous devez envoyer. Ces dernières seront regroupées et envoyées après le dernier appel séquentiel.

Éléments renvoyés : bool
true si les données ont été définies avec succès. false si steamIDLobby n'était pas valide, ou que la clé ou valeur est trop longue.

SetLobbyGameServer

void SetLobbyGameServer( CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, CSteamID steamIDGameServer );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente pour laquelle définir les informations du serveur de jeu.
unGameServerIPuint32Définit l'adresse IP du serveur de jeu dans l'ordre de l'hôte, c.-à-d. 127.0.0.1 == 0x7f000001.
unGameServerPortuint16Port de connexion du serveur de jeu, dans l'ordre de l'hôte.
steamIDGameServerCSteamIDDéfinit le SteamID du serveur de jeu. Utilisez k_steamIDNil si vous ne le définissez pas.

Définit le serveur de jeu associé à la salle d'attente.

Ce paramètre ne peut être défini que par la ou le propriétaire de la salle d'attente.

L'adresse IP/le port ou le SteamID du serveur de jeu doivent être valides, en fonction de la manière dont vous souhaitez que les clients puissent se connecter.

Généralement, un rappel LobbyGameCreated_t sera alors envoyé à toutes les personnes dans la salle d'attente afin qu'elles rejoignent le serveur de jeu spécifié.

Éléments renvoyés : void
Déclenche un rappel LobbyGameCreated_t.


Consulter également : GetLobbyGameServer

SetLobbyJoinable

bool SetLobbyJoinable( CSteamID steamIDLobby, bool bLobbyJoinable );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente
bLobbyJoinableboolActiver (true) ou désactiver (false) la permission de rejoindre cette salle d'attente ?

Définit si d'autres joueurs et joueuses peuvent rejoindre ou non une salle d'attente. Ce paramètre est toujours activé par défaut pour une nouvelle salle d'attente.

Si l'entrée est désactivée, personne ne peut rejoindre la salle, même s'il s'agit d'un contact ou que la personne a reçu une invitation.

Les salles d'attente à l'entrée désactivée ne seront pas renvoyées par une recherche de salle d'attente.

Éléments renvoyés : bool
true en cas de réussite. Sinon, renvoie false si vous n'êtes pas propriétaire de la salle d'attente.

SetLobbyMemberData

void SetLobbyMemberData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente dans laquelle définir nos métadonnées.
pchKeyconst char *Clé pour laquelle définir les données. Ne peut pas être plus long que k_nMaxLobbyKeyLength.
pchValueconst char *Valeur à définir. Ne peut pas être plus long que k_cubChatMetadataMax.

Définit des métadonnées par utilisateur ou utilisatrice pour l'utilisatrice ou l'utilisateur local.

Chaque personne de la salle d'attente recevra une notification de modification des données de la salle via un rappel LobbyDataUpdate_t, et toute nouvelle personne rejoignant la salle d'attente recevra les données existantes.

Il y a un court délai avant l'envoi des données, vous pouvez donc effectuer cet appel de manière répétée afin de définir toutes les données que vous devez envoyer. Ces dernières seront regroupées et envoyées après le dernier appel séquentiel.

Éléments renvoyés : void
Déclenche un rappel LobbyDataUpdate_t.


Consulter également : GetLobbyMemberData

SetLobbyMemberLimit

bool SetLobbyMemberLimit( CSteamID steamIDLobby, int cMaxMembers );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente pour laquelle définir la limite de membres.
cMaxMembersintNombre maximum de personnes autorisées dans cette salle d'attente. Ne peut pas dépasser 250.

Définit le nombre maximum de joueurs et joueuses qui peuvent rejoindre la salle d'attente.

Ce paramètre est également défini lorsque vous créez la salle d'attente avec CreateLobby.
Ce paramètre ne peut être défini que par le ou la propriétaire de la salle d'attente.

Éléments renvoyés : bool
true si la limite a été définie avec succès.
false si vous n'êtes pas propriétaire de la salle d'attente spécifiée.

SetLobbyOwner

bool SetLobbyOwner( CSteamID steamIDLobby, CSteamID steamIDNewOwner );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente où le changement de propriétaire aura lieu.
steamIDNewOwnerCSteamIDSteamID de la personne qui deviendra propriétaire de la salle d'attente. Cette dernière doit se trouver dans la salle d'attente.

Modifie le ou la propriétaire de la salle d'attente.

Ce paramètre ne peut être défini que par le ou la propriétaire de la salle d'attente. Ceci déclenchera un LobbyDataUpdate_t pour toutes les personnes de la salle d'attente. Chacune devra mettre à jour son état local pour refléter la ou le nouveau propriétaire. Ceci s'accomplit généralement en affichant une icône de couronne à côté du nom de la personne devenue propriétaire.

Éléments renvoyés : bool
Déclenche un rappel LobbyDataUpdate_t.
true si la ou le propriétaire a été modifié avec succès.
false si vous n'êtes pas la ou le propriétaire actuel de la salle d'attente, que steamIDNewOwner n'est pas membre de la salle d'attente, ou qu'aucune connexion n'a pu être établie avec Steam.

Consulter également : GetLobbyOwner

SetLobbyType

bool SetLobbyType( CSteamID steamIDLobby, ELobbyType eLobbyType );
NomTypeDescription
steamIDLobbyCSteamIDSteamID de la salle d'attente pour laquelle définir le type.
eLobbyTypeELobbyTypeNouveau type de salle d'attente qui sera défini.

Met à jour le type de salle d'attente.

Ce paramètre est également défini lorsque vous créez la salle d'attente avec CreateLobby.
Ce paramètre ne peut être défini que par la ou le propriétaire de la salle d'attente.

Éléments renvoyés : bool
true en cas de réussite. Sinon, renvoie false si vous n'êtes pas propriétaire de la salle d'attente.

Rappels

Voici les rappels qui peuvent être activés en appelant SteamAPI_RunCallbacks. La plupart seront activés directement en réponse aux fonctions membres d'ISteamMatchmaking.

FavoritesListAccountsUpdated_t



NomTypeDescription
m_eResultEResult

FavoritesListChanged_t

Un serveur a été ajouté/supprimé de la liste des favoris, vous devriez actualiser.

NomTypeDescription
m_nIPuint32Un IP de 0 implique le rechargement de la liste entière, toute autre valeur n'implique qu'un seul serveur. Il s'agit de l'ordre de l'hôte, c.-à-d. 127.0.0.1 == 0x7f000001.
m_nQueryPortuint32Si m_nIP est défini, alors il s'agit du nouveau port de requête du serveur, dans l'ordre de l'hôte.
m_nConnPortuint32Si m_nIP est défini, alors il s'agit du nouveau port de connexion du serveur, dans l'ordre de l'hôte.
m_nAppIDuint32Si m_nIP est défini, alors il s'agit de l'AppID auquel appartient le serveur de jeu.
m_nFlagsuint32Si m_nIP est défini, alors ceci renvoie le fait que le serveur se trouve dans la liste des favoris ou dans l'historique. Pour plus d'informations, veuillez consulter k_unFavoriteFlagNone.
m_bAddboolSi m_nIP est défini, alors ceci montre si le serveur a été ajouté à la liste (true) ou supprimé (false) de celle-ci.
m_unAccountIdAccountID_t

LobbyChatMsg_t

Un message (texte ou binaire) pour cette salle d'attente a été reçu. Après avoir reçu cette notification, vous devez utiliser GetLobbyChatEntry pour récupérer le contenu de ce message.

NomTypeDescription
m_ulSteamIDLobbyuint64SteamID de la salle d'attente dans laquelle ce message a été envoyé.
m_ulSteamIDUseruint64SteamID de la personne qui a envoyé ce message. Veuillez noter qu'il aurait pu s'agir de l'utilisatrice ou utilisateur local.
m_eChatEntryTypeuint8Type de message reçu. Il s'agit en fait de EChatEntryType.
m_iChatIDuint32Index de l'entrée de discussion à utiliser avec GetLobbyChatEntry. Il n'est pas valide hors du cadre de ce rappel et ne doit jamais être stocké.

Fonctions associées : SendLobbyChatMsg

LobbyChatUpdate_t

Un état de chat de salle d'attente a changé. Ceci est généralement envoyé lorsqu'une personne rejoint ou quitte la salle d'attente.

NomTypeDescription
m_ulSteamIDLobbyuint64SteamID de la salle d'attente.
m_ulSteamIDUserChangeduint64Utilisatrice ou utilisateur dont l'état dans la salle d'attente vient de changer : peut en être la ou le destinataire.
m_ulSteamIDMakingChangeuint64Membre du chat qui a effectué le changement. Cela peut être différent de m_ulSteamIDUserChanged en cas d'expulsion, mise en sourdine, etc. Par exemple, si une personne en exclut une autre de la salle d'attente, ceci sera défini sur l'ID de l'utilisatrice ou utilisateur à l'origine de l'expulsion.
m_rgfChatMemberStateChangeuint32Champ de bits contenant les valeurs EChatMemberStateChange.

LobbyCreated_t

Résultat de notre requête de création de salle d'attente. À ce point, la salle d'attente a été rejointe et est prête à l'emploi, un rappel LobbyEnter_t sera également reçu (puisque l'utilisatrice ou l'utilisateur local rejoint sa propre salle d'attente).

NomTypeDescription
m_eResultEResultRésultat de l'opération.

Valeurs possibles :
  • k_EResultOK : la salle d'attente a été créée avec succès.
  • k_EResultFail : le serveur a bien répondu, mais avec une erreur interne inconnue.
  • k_EResultTimeout : le message a bien été envoyé aux serveurs Steam, mais ceux-ci n'ont pas répondu.
  • k_EResultLimitExceeded : le client de votre jeu a créé trop de salles d'attente et son débit est désormais limité.
  • k_EResultAccessDenied : votre jeu n'a pas été configuré pour autoriser les salles d'attente, ou bien votre client ne possède pas les droits pour jouer à ce titre.
  • k_EResultNoConnection : votre client Steam n'est pas connecté à l'interface.
m_ulSteamIDLobbyuint64SteamID de la salle d'attente créée, 0 en cas d'échec.

Fonctions associées : CreateLobby

LobbyDataUpdate_t

Les métadonnées de la salle d'attente ont changé.

Si m_ulSteamIDMember est une personne présente dans la salle d'attente, alors utilisez GetLobbyMemberData pour avoir accès à ses informations. Sinon, si m_ulSteamIDMember == m_ulSteamIDLobby, utilisez GetLobbyData pour avoir accès aux métadonnées de la salle d'attente.

NomTypeDescription
m_ulSteamIDLobbyuint64SteamID de la salle d'attente.
m_ulSteamIDMemberuint64SteamID soit de la personne dont les données ont changé, soit de la salle elle-même.
m_bSuccessuint8true si la salle d'attente a été modifiée avec succès, sinon renvoie false.

Fonctions associées : CreateLobby, JoinLobby, SetLobbyMemberData, RequestLobbyData, SetLobbyOwner

LobbyEnter_t

Reçu lors d'une tentative d'accès à une salle d'attente. Les métadonnées de la salle d'attente sont disponibles à l'utilisation immédiatement après réception de ce message.

NomTypeDescription
m_ulSteamIDLobbyuint64SteamID de la salle d'attente dans laquelle vous êtes entré(e).
m_rgfChatPermissionsuint32Inutilisé : toujours 0.
m_bLockedboolSi la condition se vérifie, alors seules les personnes invitées peuvent rejoindre la salle.
m_EChatRoomEnterResponseuint32Il s'agit en fait d'une valeur EChatRoomEnterResponse. Ceci sera défini sur k_EChatRoomEnterResponseSuccess si la salle d'attente a pu être rejointe avec succès, sinon elle affichera k_EChatRoomEnterResponseError.

Fonctions associées : CreateLobby, JoinLobby

LobbyGameCreated_t

Un serveur de jeu a été défini via SetLobbyGameServer pour que l'ensemble des membres de la salle d'attente puissent le rejoindre. C'est aux clients individuels de se prononcer à ce sujet ; Le comportement habituel en jeu est de quitter la salle d'attente et de se connecter au serveur de jeu spécifié ; mais la salle d'attente peut rester ouverte tout au long de la session si désiré.

NomTypeDescription
m_ulSteamIDLobbyuint64Salle d'attente ayant défini le serveur de jeu.
m_ulSteamIDGameServeruint64SteamID du serveur de jeu, si défini.
m_unIPuint32Si définie, l'adresse IP du serveur de jeu, dans l'ordre de l'hôte, c'est-à-dire 127.0.0.1 == 0x7f000001.
m_usPortuint16Si défini, renvoie le port de connexion du serveur de jeu, dans l'ordre de l'hôte.

Fonctions associées : SetLobbyGameServer

LobbyInvite_t

Quelqu'un vous a invité à rejoindre une salle d'attente. Normalement, vous n'avez besoin de rien faire, car l'interface Steam affichera également une notification et un message « <user> vous a invité à rejoindre la salle d'attente, la rejoindre ? »

Si quelqu'un qui n'est pas encore en jeu choisit de la rejoindre, le jeu se lancera avec le paramètre +connect_lobby <64-bit lobby id>, ou avec le rappel GameLobbyJoinRequested_t si la personne est déjà en jeu.

NomTypeDescription
m_ulSteamIDUseruint64SteamID de la personne qui a envoyé l'invitation.
m_ulSteamIDLobbyuint64SteamID de la salle d'attente dans laquelle vous avez été invité(e).
m_ulGameIDuint64ID de jeu de la salle d'attente dans laquelle vous avez été invité(e).

LobbyKicked_t

Actuellement inutilisé ! Si vous souhaitez implémenter l'expulsion à ce moment précis, faites-le grâce au paquet spécial envoyé avec SendLobbyChatMsg. Lorsque la personne reçoit le paquet, elle doit appeler LeaveLobby.

NomTypeDescription
m_ulSteamIDLobbyuint64
m_ulSteamIDAdminuint64
m_bKickedDueToDisconnectuint8

LobbyMatchList_t

Résultat obtenu lors d'une requête de liste de salles d'attente. Vous devriez répéter l'opération pour les salles d'attente renvoyées avec GetLobbyByIndex, de 0 à m_nLobbiesMatching-1.

NomTypeDescription
m_nLobbiesMatchinguint32Nombre de salles d'attente correspondant aux critères de recherche et pour lesquelles nous avons des SteamID.

Fonctions associées : RequestLobbyList

PSNGameBootInviteResult_t

Obsolète : PS3 uniquement.

NomTypeDescription
m_bGameBootInviteExistsbool
m_steamIDLobbyCSteamID

Énumérations

Voici les énumérations destinées à être utilisées avec ISteamMatchmaking.

EChatMemberStateChange

Marqueurs décrivant en quoi l'état dans la salle d'attente des utilisatrices et utilisateurs a changé. Ces informations sont fournies à partir de LobbyChatUpdate_t.

NomValeurDescription
k_EChatMemberStateChangeEntered0x0001Cette personne a rejoint ou est en train de rejoindre la salle d'attente.
k_EChatMemberStateChangeLeft0x0002Cette personne a quitté ou est en train de quitter la salle d'attente.
k_EChatMemberStateChangeDisconnected0x0004La personne s'est déconnectée sans quitter la salle d'attente en premier lieu.
k_EChatMemberStateChangeKicked0x0008La personne a été expulsée.
k_EChatMemberStateChangeBanned0x0010La personne a été expulsée et bannie.

ELobbyComparison

Options de filtrage de recherche de salles d'attente. Elles peuvent être définies avec AddRequestLobbyListStringFilter et AddRequestLobbyListNearValueFilter.

NomValeurDescription
k_ELobbyComparisonEqualToOrLessThan-2La valeur des salles d'attente doit être égale ou inférieure à celle-ci.
k_ELobbyComparisonLessThan-1La valeur des salles d'attente doit être inférieure à celle-ci.
k_ELobbyComparisonEqual0La valeur des salles d'attente doit correspondre exactement à celle-ci.
k_ELobbyComparisonGreaterThan1La valeur des salles d'attente doit être supérieure à celle-ci.
k_ELobbyComparisonEqualToOrGreaterThan2La valeur des salles d'attente doit être égale ou supérieure à celle-ci.
k_ELobbyComparisonNotEqual3La valeur des salles d'attente ne doit pas correspondre à celle-ci.

ELobbyDistanceFilter

Filtres de distance de recherche de salle d'attente lors d'une requête de liste de salles d'attente. Les résultats de salles d'attente sont triés de la plus proche à la plus éloignée. Peut être défini avec AddRequestLobbyListDistanceFilter.

NomValeurDescription
k_ELobbyDistanceFilterClose0Seules les salles d'attente dans la même région seront renvoyées.
k_ELobbyDistanceFilterDefault1Seules les salles d'attente dans la même région ou les régions voisines seront renvoyées.
k_ELobbyDistanceFilterFar2Pour les jeux n'ayant pas d'exigences de latence, renverra les salles d'attente situées environ dans le même hémisphère.
k_ELobbyDistanceFilterWorldwide3Pas de filtrage, trouvera des salles d'attente aussi loin que l'Inde pour New York (non recommandé, attendez-vous à plusieurs secondes de latence entre les clients).

ELobbyType

Spécifie le type de salle d'attente. Ceci est défini à partir de CreateLobby et SetLobbyType.

NomValeurDescription
k_ELobbyTypePrivate0Le seul moyen de rejoindre la salle d'attente est par invitation.
k_ELobbyTypeFriendsOnly1Les contacts et les personnes invitées peuvent rejoindre la salle, mais la salle ne s'affiche pas dans la liste des salles d'attente.
k_ELobbyTypePublic2Renvoyé par une recherche et visible par les contacts.
k_ELobbyTypeInvisible3Renvoyé par une recherche, mais invisible des autres contacts.
Utile si vous souhaitez la présence d'une personne dans deux salles d'attente, pour associer des groupes, par exemple. Une personne ne peut se trouver que dans une seule salle d'attente normale, et jusqu'à deux salles d'attente invisibles.

Typedefs

Voici les typedefs destinés à être utilisés avec ISteamMatchmaking.

NomType de baseDescription
HServerListRequestvoid*Handle que vous recevrez en effectuant une requête de liste des serveurs.
HServerQueryintHandle que vous recevrez en effectuant une requête de détails sur un serveur individuel.

Constantes

Voici les constantes destinées à être utilisées avec ISteamMatchmaking.

NomTypeValeurDescription
HSERVERQUERY_INVALIDint0xffffffff
k_nMaxLobbyKeyLengthint255Nombre maximum de caractères pouvant composer une clé de métadonnées de salle d'attente.
k_unFavoriteFlagFavoriteuint320x01Cette entrée de serveur de jeu favori est destinée à la liste des favoris.
k_unFavoriteFlagHistoryuint320x02Cette entrée de serveur de jeu favori est destinée à l'historique.
k_unFavoriteFlagNoneuint320x00Ce serveur de jeu favori n'a aucun marqueur défini.
STEAMMATCHMAKINGSERVERS_INTERFACE_VERSIONconst char *"SteamMatchMakingServers002"
STEAMMATCHMAKING_INTERFACE_VERSIONconst char *"SteamMatchMaking009"