Steamworksドキュメント
ISteamMatchmakingインターフェイス
マッチメイキングサービス、お気に入りにクライアントがアクセスし、ゲームロビーで動作するための関数。

詳細はSteamマッチメイキングとロビーを参照してください。

メンバー関数

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

AddFavoriteGame

int AddFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer );
名前型説明
nAppIDAppId_tゲームのApp ID。
nIPuint16 *サーバーのIPアドレス、ホスト順。例:127.0.0.1 == 0x7f000001
nConnPortuint16サーバーへの接続に使用されるポート、ホスト順。
nQueryPortuint16サーバーの照会に使用されるポート、ホスト順。
unFlagsuint32サーバーを、お気に入りリストまたは履歴リストに追加するかを設定します。 詳細情報はk_unFavoriteFlagNoneを参照してください。
rTime32LastPlayedOnServeruint32これは、Unixエポック形式の現在時刻でなければなりません(1970年1月1日からの秒数)。

ゲームサーバーをローカルのお気に入りリストに追加するか、リストにすでに存在する場合はサーバーのプレイ時間を更新します。

戻り値: int

AddRequestLobbyListCompatibleMembersFilter

void AddRequestLobbyListCompatibleMembersFilter( CSteamID steamIDLobby );
名前型説明
steamIDLobbyCSteamID

未使用-フレネミーシステムに基づいてプレイヤーの互換性をチェックします。

AddRequestLobbyListDistanceFilter

void AddRequestLobbyListDistanceFilter( ELobbyDistanceFilter eLobbyDistanceFilter );
名前型説明
eLobbyDistanceFilterELobbyComparison最大距離を指定します。

ロビーの検索用の物理的な距離を設定します。これは、ユーザーのIPアドレスとSteamバックエンド上のIPロケーションマップに基づいています。

AddRequestLobbyListFilterSlotsAvailable

void AddRequestLobbyListFilterSlotsAvailable( int nSlotsAvailable );
名前型説明
nSlotsAvailableintオープンする必要があるオープンスロットの数。

指定された数の空きスロットが利用可能なロビーのみを返すようにフィルターします。

AddRequestLobbyListNearValueFilter

void AddRequestLobbyListNearValueFilter( const char *pchKeyToMatch, int nValueToBeCloseTo );
名前型説明
pchKeyToMatchconst char *マッチするフィルターキーの名前。 k_nMaxLobbyKeyLengthより長くてはいけません。
nValueToBeCloseTointロビーの並べ替えに使用する値。

指定値に最も近い結果を並べ替えます。

近接フィルターは実際に値をフィルターで除外するのではなく、結果の並べ替え方法に影響するだけです。 複数の近接フィルターを指定できます。最初の近接フィルターが最も影響を及ぼし、最後の近接フィルターの影響は最も小さくなります。

AddRequestLobbyListNumericalFilter

void AddRequestLobbyListNumericalFilter( const char *pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType );
名前型説明
pchKeyToMatchconst char *マッチするフィルターキーの名前。 k_nMaxLobbyKeyLengthより長くてはいけません。
nValueToMatchintマッチする数字。
eComparisonTypeELobbyComparison比較するタイプ。

次のRequestLobbyList呼び出しに数値比較フィルターを追加します。

AddRequestLobbyListResultCountFilter

void AddRequestLobbyListResultCountFilter( int cMaxResults );
名前型説明
cMaxResultsint返すロビーの最大数。

返すロビーの最大数を設定します。 カウントが小さいほどロビーの結果、およびクライアントへの詳細を高速にダウンロードできます。

AddRequestLobbyListStringFilter

void AddRequestLobbyListStringFilter( const char *pchKeyToMatch, const char *pchValueToMatch, ELobbyComparison eComparisonType );
名前型説明
pchKeyToMatchconst char *マッチするフィルターキーの名前。 k_nMaxLobbyKeyLengthより長くてはいけません。
pchValueToMatchconst char *マッチする文字列。
eComparisonTypeELobbyComparison比較するタイプ。

次のRequestLobbyList呼び出しに、文字列比較フィルターを追加します。

CheckForPSNGameBootInvite

void CheckForPSNGameBootInvite( unsigned int iGameBootAttributes );
名前型説明
iGameBootAttributesunsigned int

使用されていません-PS3のみ。

CreateLobby

SteamAPICall_t CreateLobby( ELobbyType eLobbyType, int cMaxMembers );
名前型説明
eLobbyTypeELobbyDistanceFilterこのロビーのタイプと露出。 これは後ほどSetLobbyType経由で変更できます。
cMaxMembersintこのロビーに参加できる最大プレイヤー数。 250を超えることはできません。

新しいマッチメイキングロビーを作成します。

戻り値: SteamAPICall_tはLobbyCreated_t呼び出し結果と使われます。
LobbyEnter_tコールバックをトリガーします。
LobbyDataUpdate_tコールバックをトリガーします。
LobbyCreated_t呼び出し結果を経由して結果が返される場合には、呼び出し結果は成功を示し、ロビーは参加済みとなり、この時点で使用準備完了となります。

LobbyEnter_tコールバックも受信します。これは、ローカルユーザーが自身のロビーに参加しているためです。

DeleteLobbyData

bool DeleteLobbyData( CSteamID steamIDLobby, const char *pchKey );
名前型説明
steamIDLobbyCSteamIDメタデータを削除するロビーのSteamID。
pchKeyconst char *データを削除するキー。

ロビーからメタデータキーを削除します。

これはロビーのオーナーのみが実行可能です。

キーが存在する場合、データの送信のみ実行します。 データを送信する前にわずかな遅延があるため、これを繰り返し呼び出して必要なすべてのデータを設定し、最後の連続した呼び出しの後に自動的にバッチ処理されて送信されます。


戻り値: bool
true となるのはキー/値の削除に成功した場合で、それ以外はsteamIDLobbyまたはpchKeyが無効な場合はfalseです。

GetFavoriteGame

bool GetFavoriteGame( int iGame, AppId_t *pnAppID, uint32 *pnIP, uint16 *pnConnPort, uint16 *pnQueryPort, uint32 *punFlags, uint32 *pRTime32LastPlayedOnServer );
名前型説明
iGameint詳細を取得するお気に入りのゲームサーバーのインデックス。 これは0からGetFavoriteGameCountである必要があります。
pnAppIDAppId_t *このサーバーのAppIDを返します。
pnIPuint32サーバーのIPアドレスをホスト順で返します。例:127.0.0.1 == 0x7f000001
pnConnPortuint16サーバーへの接続に使用されるポートをホスト順で返します。
pnQueryPortuint16 *サーバーの照会に使用されるポートをホスト順で返します。
punFlagsuint32 *サーバーがお気に入りリスト内か、履歴リスト内かを返します。 詳細情報はk_unFavoriteFlagNoneを参照してください。
pRTime32LastPlayedOnServeruint32 *サーバーが最後にお気に入りリストに追加された時間をUnixエポック形式(1970年1月1日からの秒数)で返します。

お気に入りのゲームサーバーの詳細をインデックスで取得します。

注: GetFavoriteGameCountを呼び出してから、これを呼び出す必要があります。

戻り値: bool
true となるのは詳細が正常に取得されたときです。 iGameが無効なインデックスだった場合はfalseです。

こちらも参照してください: AddFavoriteGame, RemoveFavoriteGame

GetFavoriteGameCount

int GetFavoriteGameCount();
お気に入りとユーザーがローカルに保存してある最近のゲームサーバーの数を取得します。

戻り値: int


こちらも参照してください: AddFavoriteGame, RemoveFavoriteGame

GetLobbyByIndex

CSteamID GetLobbyByIndex( int iLobby );
名前型説明
iLobbyint0からLobbyMatchList_t.m_nLobbiesMatchingの、SteamIDを取得するロビーのインデックス。

RequestLobbyListの結果を取得した後に、指定されたインデックスのロビーのSteam IDを取得します。

注: LobbyMatchList_t呼び出し結果を受け取ってから、これを呼び出してください。

戻り値: CSteamID
指定のインデックスが無効か、ロビーが見つからなかった場合にはk_steamIDNilを返します。

GetLobbyByIndex

int GetLobbyChatEntry( CSteamID steamIDLobby, int iChatID, CSteamID *pSteamIDUser, void *pvData, int cubData, EChatEntryType *peChatEntryType );
名前型説明
steamIDLobbyCSteamIDチャットエントリー取得元のロビーのSteamID。 これはほとんどの場合LobbyChatMsg_t::m_ulSteamIDUserです。
iChatIDintロビー内のチャットエントリーのインデックス。 これはほとんどの場合LobbyChatMsg_t::m_iChatIDです。
pSteamIDUserCSteamID *設定された場合、このメッセージを送信したユーザーのSteamIDを返します。 通常はLobbyChatMsg_t::m_ulSteamIDUserと同じなので不要です。
pvDatavoid *このバッファーにコピーして、メッセージデータを返します。 このバッファーは最大4キロバイトまでにする必要があります。
cubDataintpvDataに割り当てられたバッファーのサイズ。
peChatEntryTypeEChatEntryType *設定された場合、これはいつもk_EChatEntryTypeChatMsgを返します。 これは通常NULLに設定できます。

LobbyChatMsg_tコールバックを受け取ってからロビーチャットメッセージからデータを取得します。


戻り値: int
pvDataにコピーされたバイト数。

こちらも参照してください: SendLobbyChatMsg

GetLobbyChatEntry

const char * GetLobbyData( CSteamID steamIDLobby, const char *pchKey );
名前型説明
steamIDLobbyCSteamIDメタデータ取得元のロビーのSteamID。
pchKeyconst char *値を取得するキー。

指定ロビーから指定されたキーと関連するメタデータを取得します。

注: これは、クライアントにとって既知のロビーからのメタデータのみを取得できます。LobbyMatchList_tからロビーのリストを取得した後にRequestLobbyDataでデータを取得するか、ロビー参加後です。

戻り値: const char *
このキーに値が設定されていない場合、またはsteamIDLobbyが無効な場合は、空の文字列("")を返します。

GetLobbyData

bool GetLobbyDataByIndex( CSteamID steamIDLobby, int iLobbyData, char *pchKey, int cchKeyBufferSize, char *pchValue, int cchValueBufferSize );
名前型説明
steamIDLobbyCSteamIDこれは以前のGetLobbyDataCountの呼び出しに使用されたのと同じロビーでなければなりません!
iLobbyDataint0からGetLobbyDataCountの間のインデックス。
pchKeychar *このバッファーにコピーすることで、指定のインデックスのキーの名前を返します。
cchKeyBufferSizeintpchKeyに割り当てられたバッファーのサイズ。 これは通常はk_nMaxLobbyKeyLengthである必要があります。
pchValuechar *このバッファーにコピーすることで、指定のインデックスのキーと関連する値を返します。
cchValueBufferSizeintpchValueに割り当てられたバッファーのサイズ。 これは通常k_cubChatMetadataMaxである必要があります。

インデックスによってロビーメタデータのキー/値ペアを取得します。

注: GetLobbyDataCountを呼び出してから、これを呼び出す必要があります。

戻り値: bool
true となるのは成功時で、それ以外はsteamIDLobbyまたはiLobbyDataが無効な場合はfalseです。

GetLobbyDataCount

int GetLobbyDataCount( CSteamID steamIDLobby );
名前型説明
steamIDLobbyCSteamIDデータカウント取得元のロビーのSteamID。

指定のロビーに設定されたメタデータキーの数を取得します。

注: これは、クライアントにとって既知のロビーからのメタデータのみを取得できます。LobbyMatchList_tからロビーのリストを取得した後にRequestLobbyDataでデータを取得するか、ロビー参加後です。

これは反復に使用されます。これを呼び出した後にGetLobbyDataByIndexを使って、各メタデータのキー/値ペアを取得します。

注: 通常、デバッグの目的にのみ使用されます。

戻り値: int
steamIDLobbyが無効な場合0を返します。

例:
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 );
名前型説明
steamIDLobbyCSteamIDゲームサーバー情報取得元のロビーのSteamID。
punGameServerIPuint32 *ゲームサーバーのIPアドレスをホスト順で返します。例:127.0.0.1 == 0x7f000001(設定時)
punGameServerPortuint16 *設定時、ゲームサーバーの接続ポートをホスト順で返します。
psteamIDGameServerCSteamID *設定時、ゲームサーバーのSteamIDを返します。

ロビー内のゲームサーバーの詳細を取得します。

クライアントの接続方法に応じて、ゲームサーバーのIP/ポートまたはSteam IDのいずれかが有効である必要があります。

戻り値: bool
true となるのはロビーが有効で有効なゲームサーバーが設定されている場合で、それ以外は falseです。

こちらも参照してください: SetLobbyGameServer

GetLobbyMemberByIndex

CSteamID GetLobbyMemberByIndex( CSteamID steamIDLobby, int iMember );
名前型説明
steamIDLobbyCSteamIDこれは以前のGetNumLobbyMembersの呼び出しに使用されたのと同じロビーでなければなりません!
iMemberint0からGetNumLobbyMembersの間のインデックス。

指定のインデックスでロビーメンバーのSteam IDを取得します。

注: GetNumLobbyMembersを呼び出してから、これを呼び出す必要があります。

注: 現在のユーザーが、ロビー内の他のユーザーのSteam IDを取得するには、ロビー内にいる必要があります。

戻り値: CSteamID
無効なインデックスはk_steamIDNilを返します。

GetLobbyMemberData

const char * GetLobbyMemberData( CSteamID steamIDLobby, CSteamID steamIDUser, const char *pchKey );
名前型説明
steamIDLobbyCSteamID他のプレイヤーがいるロビーのSteamID。
steamIDUserCSteamIDメタデータ取得元のプレイヤーのSteamID。
pchKeyconst char *値を取得するキー。

指定のロビー内の別のプレイヤーから、ユーザーごとのメタデータを取得します。

これは、現在いるロビー内のメンバーからのみ照会できます。

戻り値: const char *
steamIDLobbyが無効、またはsteamIDUserがロビー内にいない場合には、NULLを返します。

pchKeyがプレイヤーに設定されていなければ、空の文字列("")を返します。

こちらも参照してください: SetLobbyMemberData

GetLobbyMemberLimit

int GetLobbyMemberLimit( CSteamID steamIDLobby );
名前型説明
steamIDLobbyCSteamIDメンバー制限を取得するロビーのSteamID。

ロビーに参加できるユーザー数の現在の上限。
上限が定義されていない場合は0を返します。

戻り値: int
指定されたロビーに取得できるメタデータが無ければ0を返します。

GetLobbyOwner

CSteamID GetLobbyOwner( CSteamID steamIDLobby );
名前型説明
steamIDLobbyCSteamIDオーナーを取得するロビーのSteamID。

現在のロビーオーナーを返します。

注: これにアクセスするにはロビーのメンバーでなければなりません。

ロビーオーナーはいつも1人います-現在のオーナーが退出すると自動で、ロビー内の別のユーザーがオーナーになります。 めったに起こりませんが、オーナーが退出する瞬間にロビーに参加すると、オーナーとしてロビーに入ることもあり得ます。

戻り値: CSteamID
ロビーにいない場合には、k_steamIDNilを返します。

こちらも参照してください: SetLobbyOwner

GetNumLobbyMembers

int GetNumLobbyMembers( CSteamID steamIDLobby );
名前型説明
steamIDLobbyCSteamIDメンバー数を取得するロビーのSteamID。

ロビー内のユーザー数を取得します。

注: 現在のユーザーが、ロビー内の他のユーザーのSteam IDを取得するには、ロビー内に居る必要があります。

これは反復に使用されます。これを呼び出した後に GetLobbyMemberByIndexを使って、ロビー内の各ユーザーのSteam IDを取得できます。 他のロビーメンバーの(名前、アバター等の)ペルソナ情報は、自動で受信し、ISteamFriendsインターフェイスからアクセスできます。

戻り値: int
ロビー内のメンバーの数、現在のユーザーがロビーからのデータを持たない場合は0です。

InviteUserToLobby

bool InviteUserToLobby( CSteamID steamIDLobby, CSteamID steamIDInvitee );
名前型説明
steamIDLobbyCSteamIDユーザーを招待するロビーのSteamID。
steamIDInviteeCSteamID招待されるユーザーのSteamID。

別のユーザーをロビーに招待します。

指定のユーザーが参加リンクをクリックすると、ユーザーがゲーム内にいる場合にはGameLobbyJoinRequested_tコールバックがポストされ、ゲームがまだ実行されていない場合には、代わりにコマンドラインパラメーター+connect_lobby <64-bit lobby Steam ID>でゲームが自動的に起動されます。

戻り値: bool
true となるのは招待が正常に送信された場合で、それ以外は、ローカルユーザーがロビー内にいない場合、Steamへの接続できない、または指定のユーザーが無効な場合にはfalseです。

注: この呼び出しは、別のユーザーが正常に招待されたかのチェックは行いません。

JoinLobby

SteamAPICall_t JoinLobby( CSteamID steamIDLobby );
名前型説明
steamIDLobbyCSteamID参加するロビーのSteamID。

既存のロビーに参加します。

ロビーの SteamIDは、RequestLobbyListで検索、フレンドに参加、または招待から取得できます。

戻り値: SteamAPICall_tはLobbyEnter_t呼出し結果と使用されます。
LobbyDataUpdate_tコールバックをトリガーします。

LeaveLobby

void LeaveLobby( CSteamID steamIDLobby );
名前型説明
steamIDLobbyCSteamID退出するロビー。

ユーザーが現在いるロビーを退出します。これはクライアントサイドですぐに実行され、ロビー内の他のユーザーはLobbyChatUpdate_tコールバックによって通知されます。

RemoveFavoriteGame

bool RemoveFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags );
名前型説明
nAppIDAppId_tゲームのApp ID。
nIPuint32サーバーのIPアドレス、ホスト順。例:127.0.0.1 == 0x7f000001
nConnPortuint16サーバーへの接続に使用されるポート、ホスト順。
nQueryPortuint16サーバーの照会に使用されるポート、ホスト順。
unFlagsuint32サーバーがお気に入りリスト内か、履歴リスト内か。 詳細情報はk_unFavoriteFlagNoneを参照してください。

ローカルのお気に入りリストからゲームサーバーを削除します。

戻り値: bool
true となるのはサーバーが削除された場合で、それ以外は、指定のサーバーがユーザーのローカルのお気に入りリストに無い場合には falseです。

RequestLobbyData

bool RequestLobbyData( CSteamID steamIDLobby );
名前型説明
steamIDLobbyCSteamIDメタデータを更新するロビーのSteamID。

現在いないロビーのメタデータすべてを更新します。

メンバーのロビーにこれを実行することは無く、データは常に最新状態です。 これを使用して、RequestLobbyListから取得したロビーまたは友人から入手可能なロビーを更新できます。

戻り値: bool
LobbyDataUpdate_tコールバックをトリガーします。
true となるのは、リクエストが正常にサーバーに送信された場合です。 Steamへの接続が確立されない、またはsteamIDLobbyが無効な場合にはfalseです。

指定のロビーが存在しない場合、 LobbyDataUpdate_t::m_bSuccessはfalseと設定されます。

RequestLobbyList

SteamAPICall_t RequestLobbyList();
フィルターされた関連するロビーのリストを取得します。

一度に存在できるアクリティブなロビー検索は一つだけです。 新しく開始された場合、古いリクエストはキャンセルされます。 ユーザーとSteamバックエンドの接続によって、この呼び出しは完了するのに300ミリ秒から5秒かかり、20秒のタイムアウトがあります。

注: 結果をフィルタリングするにはAddRequestLobbyList*関数を呼び出してから、これを呼び出す必要があります。
この関数を呼び出す度にフィルターがクリアされます。

注: AddRequestLobbyListDistanceFilterが呼び出されなければ、k_ELobbyDistanceFilterDefaultが使用され、同じまたは近隣の地域内でのマッチを探します。

注: これは、空きのあるロビー、およびk_ELobbyTypePublicまたはk_ELobbyTypeInvisibleであるロビーのみを返し、
SetLobbyJoinableで参加可能として設定されます。

戻り値: SteamAPICall_t は LobbyMatchList_t の呼び出し結果と使われます。
注: これは古いアプリケーションとの互換性のためにコールバックとしても返しますが、可能な場合には呼び出し結果を使う必要があります。

こちらも参照してください: AddRequestLobbyListStringFilter, AddRequestLobbyListNumericalFilter, AddRequestLobbyListNearValueFilter, AddRequestLobbyListFilterSlotsAvailable, AddRequestLobbyListDistanceFilter, AddRequestLobbyListResultCountFilter

例:
class CLobbyListManager { CCallResult< CLobbyListManager, LobbyMatchList_t > m_CallResultLobbyMatchList; void FindLobbies() { // SteamMatchmaking()->AddRequestLobbyListFilter*() 関数がRequestLobbyList()の前に呼び出されます SteamAPICall_t hSteamAPICall = SteamMatchmaking()->RequestLobbyList(); m_CallResultLobbyMatchList.Set( hSteamAPICall, this, &CLobbyListManager::OnLobbyMatchList ); } void OnLobbyMatchList( LobbyMatchList_t *pLobbyMatchList, bool bIOFailure ) { // Steamバックエンドからロビーリストが取得され、結果を使用します } }

SendLobbyChatMsg

bool SendLobbyChatMsg( CSteamID steamIDLobby, const void *pvMsgBody, int cubMsgBody );
名前型説明
steamIDLobbyCSteamIDチャットメッセージ送信先ロビーのSteamID。
pvMsgBodyconst void *これは、最大で4キロバイトのサイズのテキストまたはバイナリーデータです。
cubMsgBodyintpvMsgBodyのバイト単位でのサイズ。テキストメッセージの場合、nullターミネーターを含めるにはstrlen( text ) + 1にする必要があります。

ロビー内すべてのユーザーに、チャット(テキストまたはバイナリデータ)メッセージをブロードキャストします。



(ローカルユーザーを含む)すべてのロビー内のユーザーがLobbyChatMsg_tコールバックとメッセージを受け取ります。

バイナリーデータを送信する場合、メッセージにプレフィックスのヘッダーを付けることで、プレーンなテキストメッセージではなく、カスタムデータとして扱うようにします。


(例えばキャラクターセットの中からユーザーが一つを選ぶ場合に、そのキャラを選べるのが確実に一人にするといった)調整を必要とするコミュニケーションにおいて、ロビーオーナーを意思決定者として起用できます。 GetLobbyOwnerは現在のロビーオーナーを返します。 オーナーであるロビーメンバーは常に確実に1人だけです。 キャラ選択のシナリオにおいて、ユーザーの一人がキャラクターを選択し「ゾーイになりたい」というバイナリーメッセージを送ると、ロビーオーナーがメッセージを見て、OKかどうかを確認してから、適切な結果(ユーザーxがゾーイ)をブロードキャストします。

これらのメッセージはSteamバックエンド経由で送信されるので、利用可能な帯域幅は限られています。 音声やゲームデータのようなボリュームの多い通信には、Steam Networking APIを使用します。

戻り値: bool
LobbyChatMsg_tコールバックをトリガーします。
true となるのはメッセージが正常に送信されたときです。 メッセージが小さすぎるか大きすぎる、またはSteamへの接続が確立できないときはfalseです。

SetLinkedLobby

bool SetLinkedLobby( CSteamID steamIDLobby, CSteamID steamIDLobbyDependent );
名前型説明
steamIDLobbyCSteamIDプライマリロビーのSteamID。
steamIDLobbyDependentCSteamIDプライマリーロビーにリンクされるSteamID。

未使用-フレネミーシステムを使用し、プレイヤー比較を目的として、2つのロビーをリンクします。

あなたが両方のロビーのオーナーである必要があります。

戻り値: bool
true となるのは、リクエストが正常にSteamサーバーに送信された場合です。
false となるのは、ローカルユーザーが両方のロビーのオーナーでない場合、またはSteamの接続が確立できない場合です。

SetLobbyData

bool SetLobbyData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue );
名前型説明
steamIDLobbyCSteamIDメタデータを設定するロビーのSteamID。
pchKeyconst char *データを設定するキー。 k_nMaxLobbyKeyLengthより長くてはいけません。
pchValueconst char *設定する値。 k_cubChatMetadataMaxより長くてはいけません。

ロビーメタデータ内にキー/値を設定します。 これはロビー名、現在のマップ、ゲームモード等を設定するのに使用できます。

これはロビーのオーナーのみが設定可能です。 ロビーメンバーは、代わりにSetLobbyMemberDataを使用する必要があります。

ロビー内の各ユーザーはLobbyDataUpdate_t コールバック経由でロビーデータ変更の通知を受け取り、今後参加する新規ユーザーは既存のデータを受け取ります。

変更された場合、これはデータの送信のみ実行します。 データを送信する前にわずかな遅延があるため、これを繰り返し呼び出して必要なすべてのデータを設定し、最後の連続した呼び出しの後に自動的にバッチ処理されて送信されます。


戻り値: bool
true となるのはデータが正常に設定された場合です。 steamIDLobbyが無効な場合、またはキー/値が長すぎる場合にはfalseです。

SetLobbyGameServer

void SetLobbyGameServer( CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, CSteamID steamIDGameServer );
名前型説明
steamIDLobbyCSteamIDゲームサーバー情報を設定するロビーのSteamID。
unGameServerIPuint32ゲームサーバーのIPアドレスをホスト順で設定します。例:127.0.0.1 == 0x7f000001.
unGameServerPortuint16ゲームサーバーの接続ポートを設定します、ホスト順。
steamIDGameServerCSteamIDゲームサーバーのSteamIDを設定します。 これを設定しない場合は k_steamIDNilを使用します。

ロビーと関連するゲームサーバーを設定します。

これはロビーのオーナーのみが設定可能です。

クライアントにとって可能な接続方法に応じて、ゲームサーバーのIP/ポートまたはSteamIDのいずれかが有効である必要があります。

ロビー内のすべてのプレイヤーにLobbyGameCreated_tコールバックが送信され、通常はこの時点においてユーザーが指定のゲームサーバーに参加します。

戻り値: void
LobbyGameCreated_tコールバックをトリガーします。


こちらも参照してください: GetLobbyGameServer

SetLobbyJoinable

bool SetLobbyJoinable( CSteamID steamIDLobby, bool bLobbyJoinable );
名前型説明
steamIDLobbyCSteamIDロビーのSteamID
bLobbyJoinableboolユーザーのこのロビーへの参加を有効 (true)か無効 (false)にします。

他のプレイヤーによるロビーへの参加可否を設定します。 新規ロビーのデフォルトの設定はいつも有効です。

参加が無効化されている場合、フレンドや招待されたユーザーであっても、誰も参加できません。

参加が無効なロビーは、ロビー検索からは返されません。

戻り値: bool
true となるのは成功時、それ以外はロビーのオーナーでなければfalseです。

SetLobbyMemberData

void SetLobbyMemberData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue );
名前型説明
steamIDLobbyCSteamIDメタデータを設定するロビーのSteamID。
pchKeyconst char *データを設定するキー。 k_nMaxLobbyKeyLengthより長くてはいけません。
pchValueconst char *設定する値。 k_cubChatMetadataMaxより長くてはいけません。

ローカルユーザーのためにユーザーごとのメタデータを設定します。

ロビー内の各ユーザーはLobbyDataUpdate_t コールバック経由でロビーデータ変更の通知を受け取り、今後参加する新規ユーザーは既存のデータを受け取ります。

データを送信する前にわずかな遅延があるため、これを繰り返し呼び出して必要なすべてのデータを設定し、最後の連続した呼び出しの後に自動的にバッチ処理されて送信されます。


戻り値: void
LobbyDataUpdate_tコールバックをトリガーします。


こちらも参照してください: GetLobbyMemberData

SetLobbyMemberLimit

bool SetLobbyMemberLimit( CSteamID steamIDLobby, int cMaxMembers );
名前型説明
steamIDLobbyCSteamIDメンバー制限を設定するロビーのSteamID。
cMaxMembersintこのロビーに許可される最大プレイヤー数。 250を超えることはできません。

ロビーに参加できる最大プレイヤー数を設定します。

ロビーをCreateLobbyで作成した場合にも、設定されます。
これはロビーのオーナーのみが設定可能です。

戻り値: bool
true となるのは制限が正常に設定された場合です。
false となるのはあなたが指定されたロビーのオーナーではない場合です。

SetLobbyOwner

bool SetLobbyOwner( CSteamID steamIDLobby, CSteamID steamIDNewOwner );
名前型説明
steamIDLobbyCSteamIDオーナー変更が起こったロビーのSteamID。
steamIDNewOwnerCSteamID新しくロビーのオーナーとなるユーザーのSteamIDで、このユーザーはロビー内にいる必要があります。

ロビーオーナーを変更します。

これはロビーのオーナーのみが設定可能です。 これはロビー内のすべてのユーザーの LobbyDataUpdate_tがトリガーされ、各ユーザーが新オーナーをはねいするためにローカル状態を更新する必要があります。 これは通常オーナー名の横に王冠のアイコンを表示することで達成します。

戻り値: bool
LobbyDataUpdate_tコールバックをトリガーします。
true となるのはオーナーが正常に変更された場合です。
false となるのは、あなたがロビーの現在のオーナーではない、steamIDNewOwnerがロビー内のメンバーではない、またはSteamに接続できなかった場合です。

こちらも参照してください: GetLobbyOwner

SetLobbyType

bool SetLobbyType( CSteamID steamIDLobby, ELobbyType eLobbyType );
名前型説明
steamIDLobbyCSteamIDタイプを設定するロビーのSteamID。
eLobbyTypeELobbyType設定される新しいロビーのタイプ。

これがどのタイプのロビーなのかをアップデートします。

ロビーをCreateLobbyで作成した場合にも、設定されます。
これはロビーのオーナーのみが設定可能です。

戻り値: bool
true となるのは成功時、それ以外はロビーのオーナーでなければfalseです。

コールバック

これらは SteamAPI_RunCallbacks を呼び出すことによって実行されるコールバックです。 これらの多くはISteamMatchmakingのメンバー関数への応答として直接実行されます。

FavoritesListAccountsUpdated_t



名前型説明
m_eResultEResult

FavoritesListChanged_t

お気に入りリストから一つのサーバーが追加/削除されました。今すぐ更新してください。

名前型説明
m_nIPuint32IPが0とはリスト全体のリロードを意味し、他の値は、1つのサーバーのみを意味します。 これはホスト順です。例 127.0.0.1 == 0x7f000001
m_nQueryPortuint32m_nIPが設定されると、これはホスト順での新しいサーバークエリポートです。
m_nConnPortuint32m_nIPが設定されると、これはホスト順での新しいサーバー接続ポートです。
m_nAppIDuint32m_nIPが設定されている場合、これはゲームサーバーが所属するAppIDです。
m_nFlagsuint32m_nIPが設定されている場合、サーバーがお気に入りリストにまたは履歴リストにあるかが返されます。 詳細情報はk_unFavoriteFlagNoneを参照してください。
m_bAddboolm_nIPの設定がある場合、これはサーバーがリストに追加された(true)か削除された (false)かを示します。
m_unAccountIdAccountID_t

LobbyChatMsg_t

このロビーへのチャット(テキストまたはバイナリー)メッセージの受信がありました。 これを受け取ってから、このメッセージのコンテンツを取得するにはGetLobbyChatEntryを使用する必要があります。


名前型説明
m_ulSteamIDLobbyuint32 *メッセージが送信されたロビーのSteamID。
m_ulSteamIDUseruint64このメッセージを送信したユーザーのSteamID。 これはローカルユーザーの場合があります。
m_eChatEntryTypeuint8受信したメッセージのタイプ。 これは実際は EChatEntryTypeです。
m_iChatIDuint32GetLobbyChatEntryと使用するチャットエントリーのインデックスで、このコールバックのスコープ外では有効ではないため、保存しないでください。

関連する関数: SendLobbyChatMsg

LobbyChatUpdate_t

ロビーチャットルーム状態が変わりました。ユーザーがロビーに参加または退出したに送信されます。

名前型説明
m_ulSteamIDLobbyuint64ロビーのSteamID。
m_ulSteamIDUserChangeduint64ロビー内での状態が変わったユーザーも受信者となりえます。
m_ulSteamIDMakingChangeuint64変更のあったチャットメンバー。 追放、ミュートの場合これはm_ulSteamIDUserChangedとは異なります。 例えば、ユーザーが別のユーザーをロビーから追放した場合、これは追放を開始したユーザーのIDに設定されます。
m_rgfChatMemberStateChangeuint32EChatMemberStateChange値のビットフィールド。

LobbyCreated_t

ロビー作成リクエストへの結果。 この時点でロビーは参加され使用可能となります。LobbyEnter_t コールバックも受信されます。(ローカルユーザーが自身のロビーに参加するため)

名前型説明
m_eResultEResult呼び出しの結果。

可能な値:
  • k_EResultOK-ロビーが正常に作成されました。
  • k_EResultFail-サーバーは応答しましたが、不明な内部エラーが発生しました。
  • k_EResultTimeout-Steamサーバーにメッセージが送信されましたが、応答しませんでした。
  • k_EResultLimitExceeded-ゲームクライアントが作成したロビーの数が多すぎて、レート制限されています。
  • k_EResultAccessDenied-ゲームがロビーを許可するように設定されていないか、クライアントにゲームをプレイする権限がありません
  • k_EResultNoConnection-あなたのSteamクライアントはバックエンドへの接続がありません。
m_ulSteamIDLobbyuint64作成されたロビーのSteamID。失敗時は0。

関連する関数: CreateLobby

LobbyDataUpdate_t

メタデータが変更されたロビー。

m_ulSteamIDMemberがロビー内のユーザーである場合、ユーザーごとの詳細へのアクセスにはGetLobbyMemberDataを使用します。それ以外は、m_ulSteamIDMember == m_ulSteamIDLobbyの場合、GetLobbyData使用してロビーメタデータにアクセスします。

名前型説明
m_ulSteamIDLobbyuint64ロビーのSteamID。
m_ulSteamIDMemberuint64データが変更されたメンバー、またはルームのSteamID。
m_bSuccessuint8trueとなるのはロビーデータが正常に変更された場合で、それ以外はfalseです。

関連する関数: CreateLobby, JoinLobby, SetLobbyMemberData, RequestLobbyData, SetLobbyOwner

LobbyEnter_t

ロビー入室時に受け取ります。 この受信直後にロビーメタデータが利用可能となります。

名前型説明
m_ulSteamIDLobbyuint64入出したロビーのSteamID。
m_rgfChatPermissionsuint32未使用-常に0。
m_bLockedbooltrueなら、招待されたユーザーのみ参加可能。
m_EChatRoomEnterResponseuint32 これは実際にはEChatRoomEnterResponse値です。 ロビーへの正常な参加によってこれがk_EChatRoomEnterResponseSuccessに設定されますが、それ以外はk_EChatRoomEnterResponseErrorとなります。

関連する関数: CreateLobby, JoinLobby

LobbyGameCreated_t

ゲームサーバーがSetLobbyGameServer経由で設定され、ロビーのメンバー全員が参加できます。 これにアクションを実行するのは各クライアント次第です。典型的なゲームの動作は、ロビーを退出して指定されたゲームサーバーに接続することです。 必要に応じて、セッション中はロビーが開いたままになる場合があります。



名前型説明
m_ulSteamIDLobbyuint64ゲームサーバーを設定するロビー。
m_ulSteamIDGameServeruint64ゲームサーバーのSteamID。(設定時)
m_unIPuint32ゲームサーバーのIPアドレス、ホスト順。例:127.0.0.1 == 0x7f000001(設定時)
m_usPortuint16設定時、ホスト順のゲームサーバーの接続ポート。

関連する関数: SetLobbyGameServer

LobbyInvite_t

ロビーへの参加招待がありました。 通常、これに対して必要なことはありません。Steam UIも、 <user>がロビーに招待しています、参加しますか?というメッセージと通知を表示します。

ゲーム外にいるユーザーが参加を決定すると、ゲームがパラメーター+connect_lobby <64-bit lobby id>とともに起動します。すでにゲーム内にいる場合にはコールバックGameLobbyJoinRequested_tで起動されます。

名前型説明
m_ulSteamIDUseruint64招待送信者のSteamID。
m_ulSteamIDLobbyuint64招待されたロビーのSteamID。
m_ulGameIDuint64招待されたロビーのGame ID。

LobbyKicked_t

現在使用されていません! この時点で追放を実装したい場合、SendLobbyChatMsgと送信されるスペシャルパケットで行ってください。ユーザーがパケットを取得した時に、LeaveLobbyを呼び出す必要があります。

名前型説明
m_ulSteamIDLobbyuint64
m_ulSteamIDAdminuint64
m_bKickedDueToDisconnectuint8

LobbyMatchList_t

ロビーリストをリクエストした時の結果。 GetLobbyByIndexを使用して、返されたロビーを0から m_nLobbiesMatching-1で反復処理する必要があります。

名前型説明
m_nLobbiesMatchinguint32検索条件とマッチし、SteamIDがあるロビーの数。

関連する関数: RequestLobbyList

PSNGameBootInviteResult_t

使用されていません - PS3のみ。

名前型説明
m_bGameBootInviteExistsbool
m_steamIDLobbyCSteamID

列挙型

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

EChatMemberStateChange

ユーザーのロビー状態がどのように変更したかを説明するフラグ。 これはLobbyChatUpdate_tから提供されます。

名前値説明
k_EChatMemberStateChangeEntered0x0001このユーザーがロビーに参加したか参加中。
k_EChatMemberStateChangeLeft0x0002このユーザーがロビーから退出したか退出中。
k_EChatMemberStateChangeDisconnected0x0004ユーザーがロビーから退出せずに切断しました。
k_EChatMemberStateChangeKicked0x0008ユーザーが追放された。
k_EChatMemberStateChangeBanned0x0010ユーザーが追放され、禁止された。

ELobbyComparison

ロビー検索のフィルターオプション。 これらはAddRequestLobbyListStringFilterとAddRequestLobbyListNearValueFilterとともに設定できます。

名前値説明
k_ELobbyComparisonEqualToOrLessThan-2ロビー値はこれ以下でなければなりません。
k_ELobbyComparisonLessThan-1ロビー値はこれより小さくなければなりません。
k_ELobbyComparisonEqual0ロビー値は、これと一致する必要があります。
k_ELobbyComparisonGreaterThan1ロビー値は、これより大きくなければなりません。
k_ELobbyComparisonEqualToOrGreaterThan2ロビー値はこれ以上でなければなりません。
k_ELobbyComparisonNotEqual3ロビー値はこれに一致してはいけません。

ELobbyDistanceFilter

ロビーリストリクエスト時のロビー検索距離フィルター。 ロビー結果が近い順で並べられます。 これはAddRequestLobbyListDistanceFilterとともに設定できます。

名前値説明
k_ELobbyDistanceFilterClose0同じ隣接地域内のロビーのみが返されます。
k_ELobbyDistanceFilterDefault1同じ地域または近接地域内のロビーのみが返されます。
k_ELobbyDistanceFilterFar2多くのレイテンシー要件を持たないゲームの場合、世界の裏側と線を結び中間地点以前に入るロビーを返します。
k_ELobbyDistanceFilterWorldwide3フィルタなし、インドからニューヨークのロビーもマッチします(クライアント間で数秒の待ち時間が予想されるため、非推奨。)

ELobbyType

ロビータイプを指定します。これはCreateLobbyと SetLobbyTypeから設定されます。

名前値説明
k_ELobbyTypePrivate0ロビーへ参加する唯一の方法は招待からです。
k_ELobbyTypeFriendsOnly1フレンドと招待者は参加できますが、ロビーリストには表示されません。
k_ELobbyTypePublic2検索から返されフレンドに表示されます。
k_ELobbyTypeInvisible3検索で返されますが、他のフレンドには表示されません。
これは、ユーザーに2つのロビー内にいてほしい場合(例:グループを一緒にマッチする場合)に便利です。 1人のユーザーは通常1つ、最大2つの個別ロビーにいることができます。

Typedefs

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

名前ベース型説明
HServerListRequestvoid*サーバーリストを要求するときに受け取るハンドル。
HServerQueryint個々のサーバーで詳細を照会するときに受け取るハンドル。

定数

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

名前型値説明
HSERVERQUERY_INVALIDint0xffffffff
k_nMaxLobbyKeyLengthint255ロビーメタデータキーの最大文字数。
k_unFavoriteFlagFavoriteuint320x01このお気に入りのゲームサーバーエントリーはお気に入りリスト用です。
k_unFavoriteFlagHistoryuint320x02このお気に入りのゲームサーバーエントリは、履歴リスト用です。
k_unFavoriteFlagNoneuint320x00このお気に入りのゲームサーバーにはフラグが設定されていません。
STEAMMATCHMAKINGSERVERS_INTERFACE_VERSIONconst char *"SteamMatchMakingServers002"
STEAMMATCHMAKING_INTERFACE_VERSIONconst char *"SteamMatchMaking009"