マッチメイキングサービス、お気に入りにクライアントがアクセスし、ゲームロビーで動作するための関数。
詳細は
Steamマッチメイキングとロビーを参照してください。
メンバー関数
ISteamMatchmakingのメンバー関数は、グローバルのアクセサー関数
SteamMatchmaking()経由で呼び出されます。
AddFavoriteGame
int AddFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer );
| 名前 | 型 | 説明 |
| nAppID | AppId_t | ゲームのApp ID。 |
| nIP | uint16 * | サーバーのIPアドレス、ホスト順。例:127.0.0.1 == 0x7f000001 |
| nConnPort | uint16 | サーバーへの接続に使用されるポート、ホスト順。 |
| nQueryPort | uint16 | サーバーの照会に使用されるポート、ホスト順。 |
| unFlags | uint32 | サーバーを、お気に入りリストまたは履歴リストに追加するかを設定します。 詳細情報はk_unFavoriteFlagNoneを参照してください。 |
| rTime32LastPlayedOnServer | uint32 | これは、Unixエポック形式の現在時刻でなければなりません(1970年1月1日からの秒数)。 |
ゲームサーバーをローカルのお気に入りリストに追加するか、リストにすでに存在する場合はサーバーのプレイ時間を更新します。
戻り値: int
AddRequestLobbyListCompatibleMembersFilter
void AddRequestLobbyListCompatibleMembersFilter( CSteamID steamIDLobby );
未使用-フレネミーシステムに基づいてプレイヤーの互換性をチェックします。
AddRequestLobbyListDistanceFilter
void AddRequestLobbyListDistanceFilter( ELobbyDistanceFilter eLobbyDistanceFilter );
ロビーの検索用の物理的な距離を設定します。これは、ユーザーのIPアドレスとSteamバックエンド上のIPロケーションマップに基づいています。
AddRequestLobbyListFilterSlotsAvailable
void AddRequestLobbyListFilterSlotsAvailable( int nSlotsAvailable );
| 名前 | 型 | 説明 |
| nSlotsAvailable | int | オープンする必要があるオープンスロットの数。 |
指定された数の空きスロットが利用可能なロビーのみを返すようにフィルターします。
AddRequestLobbyListNearValueFilter
void AddRequestLobbyListNearValueFilter( const char *pchKeyToMatch, int nValueToBeCloseTo );
| 名前 | 型 | 説明 |
| pchKeyToMatch | const char * | マッチするフィルターキーの名前。 k_nMaxLobbyKeyLengthより長くてはいけません。 |
| nValueToBeCloseTo | int | ロビーの並べ替えに使用する値。 |
指定値に最も近い結果を並べ替えます。
近接フィルターは実際に値をフィルターで除外するのではなく、結果の並べ替え方法に影響するだけです。 複数の近接フィルターを指定できます。最初の近接フィルターが最も影響を及ぼし、最後の近接フィルターの影響は最も小さくなります。
AddRequestLobbyListNumericalFilter
void AddRequestLobbyListNumericalFilter( const char *pchKeyToMatch, int nValueToMatch, ELobbyComparison eComparisonType );
次の
RequestLobbyList呼び出しに数値比較フィルターを追加します。
AddRequestLobbyListResultCountFilter
void AddRequestLobbyListResultCountFilter( int cMaxResults );
| 名前 | 型 | 説明 |
| cMaxResults | int | 返すロビーの最大数。 |
返すロビーの最大数を設定します。 カウントが小さいほどロビーの結果、およびクライアントへの詳細を高速にダウンロードできます。
AddRequestLobbyListStringFilter
void AddRequestLobbyListStringFilter( const char *pchKeyToMatch, const char *pchValueToMatch, ELobbyComparison eComparisonType );
次の
RequestLobbyList呼び出しに、文字列比較フィルターを追加します。
CheckForPSNGameBootInvite
void CheckForPSNGameBootInvite( unsigned int iGameBootAttributes );
| 名前 | 型 | 説明 |
| iGameBootAttributes | unsigned int | |
使用されていません-PS3のみ。
CreateLobby
SteamAPICall_t CreateLobby( ELobbyType eLobbyType, int cMaxMembers );
新しいマッチメイキングロビーを作成します。
戻り値: SteamAPICall_tは
LobbyCreated_t呼び出し結果と使われます。
LobbyEnter_tコールバックをトリガーします。
LobbyDataUpdate_tコールバックをトリガーします。
LobbyCreated_t呼び出し結果を経由して結果が返される場合には、呼び出し結果は成功を示し、ロビーは参加済みとなり、この時点で使用準備完了となります。
LobbyEnter_tコールバックも受信します。これは、ローカルユーザーが自身のロビーに参加しているためです。
DeleteLobbyData
bool DeleteLobbyData( CSteamID steamIDLobby, const char *pchKey );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | メタデータを削除するロビーのSteamID。 |
| pchKey | const char * | データを削除するキー。 |
ロビーからメタデータキーを削除します。
これはロビーのオーナーのみが実行可能です。
キーが存在する場合、データの送信のみ実行します。 データを送信する前にわずかな遅延があるため、これを繰り返し呼び出して必要なすべてのデータを設定し、最後の連続した呼び出しの後に自動的にバッチ処理されて送信されます。
戻り値: bool
true となるのはキー/値の削除に成功した場合で、それ以外は
steamIDLobbyまたは
pchKeyが無効な場合は
falseです。
GetFavoriteGame
bool GetFavoriteGame( int iGame, AppId_t *pnAppID, uint32 *pnIP, uint16 *pnConnPort, uint16 *pnQueryPort, uint32 *punFlags, uint32 *pRTime32LastPlayedOnServer );
| 名前 | 型 | 説明 |
| iGame | int | 詳細を取得するお気に入りのゲームサーバーのインデックス。 これは0からGetFavoriteGameCountである必要があります。 |
| pnAppID | AppId_t * | このサーバーのAppIDを返します。 |
| pnIP | uint32 | サーバーのIPアドレスをホスト順で返します。例:127.0.0.1 == 0x7f000001 |
| pnConnPort | uint16 | サーバーへの接続に使用されるポートをホスト順で返します。 |
| pnQueryPort | uint16 * | サーバーの照会に使用されるポートをホスト順で返します。 |
| punFlags | uint32 * | サーバーがお気に入りリスト内か、履歴リスト内かを返します。 詳細情報はk_unFavoriteFlagNoneを参照してください。 |
| pRTime32LastPlayedOnServer | uint32 * | サーバーが最後にお気に入りリストに追加された時間をUnixエポック形式(1970年1月1日からの秒数)で返します。 |
お気に入りのゲームサーバーの詳細をインデックスで取得します。
注: GetFavoriteGameCountを呼び出してから、これを呼び出す必要があります。
戻り値: bool
true となるのは詳細が正常に取得されたときです。
iGameが無効なインデックスだった場合は
falseです。
こちらも参照してください: AddFavoriteGame,
RemoveFavoriteGameGetFavoriteGameCount
int GetFavoriteGameCount();
お気に入りとユーザーがローカルに保存してある最近のゲームサーバーの数を取得します。
戻り値: int
こちらも参照してください: AddFavoriteGame,
RemoveFavoriteGameGetLobbyByIndex
CSteamID GetLobbyByIndex( int iLobby );
RequestLobbyListの結果を取得した後に、指定されたインデックスのロビーのSteam IDを取得します。
注: LobbyMatchList_t呼び出し結果を受け取ってから、これを呼び出してください。
戻り値: CSteamID指定のインデックスが無効か、ロビーが見つからなかった場合には
k_steamIDNilを返します。
GetLobbyByIndex
int GetLobbyChatEntry( CSteamID steamIDLobby, int iChatID, CSteamID *pSteamIDUser, void *pvData, int cubData, EChatEntryType *peChatEntryType );
LobbyChatMsg_tコールバックを受け取ってからロビーチャットメッセージからデータを取得します。
戻り値: int
pvDataにコピーされたバイト数。
こちらも参照してください: SendLobbyChatMsgGetLobbyChatEntry
const char * GetLobbyData( CSteamID steamIDLobby, const char *pchKey );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | メタデータ取得元のロビーのSteamID。 |
| pchKey | const char * | 値を取得するキー。 |
指定ロビーから指定されたキーと関連するメタデータを取得します。
注: これは、クライアントにとって既知のロビーからのメタデータのみを取得できます。
LobbyMatchList_tからロビーのリストを取得した後に
RequestLobbyDataでデータを取得するか、ロビー参加後です。
戻り値: const char *
このキーに値が設定されていない場合、または
steamIDLobbyが無効な場合は、空の文字列("")を返します。
GetLobbyData
bool GetLobbyDataByIndex( CSteamID steamIDLobby, int iLobbyData, char *pchKey, int cchKeyBufferSize, char *pchValue, int cchValueBufferSize );
インデックスによってロビーメタデータのキー/値ペアを取得します。
注: GetLobbyDataCountを呼び出してから、これを呼び出す必要があります。
戻り値: bool
true となるのは成功時で、それ以外は
steamIDLobbyまたは
iLobbyDataが無効な場合は
falseです。
GetLobbyDataCount
int GetLobbyDataCount( CSteamID steamIDLobby );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | データカウント取得元のロビーの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 );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | ゲームサーバー情報取得元のロビーのSteamID。 |
| punGameServerIP | uint32 * | ゲームサーバーのIPアドレスをホスト順で返します。例:127.0.0.1 == 0x7f000001(設定時) |
| punGameServerPort | uint16 * | 設定時、ゲームサーバーの接続ポートをホスト順で返します。 |
| psteamIDGameServer | CSteamID * | 設定時、ゲームサーバーのSteamIDを返します。 |
ロビー内のゲームサーバーの詳細を取得します。
クライアントの接続方法に応じて、ゲームサーバーのIP/ポートまたはSteam IDのいずれかが有効である必要があります。
戻り値: bool
true となるのはロビーが有効で有効なゲームサーバーが設定されている場合で、それ以外は
falseです。
こちらも参照してください: SetLobbyGameServerGetLobbyMemberByIndex
CSteamID GetLobbyMemberByIndex( CSteamID steamIDLobby, int iMember );
指定のインデックスでロビーメンバーのSteam IDを取得します。
注: GetNumLobbyMembersを呼び出してから、これを呼び出す必要があります。
注: 現在のユーザーが、ロビー内の他のユーザーのSteam IDを取得するには、ロビー内にいる必要があります。
戻り値: CSteamID無効なインデックスは
k_steamIDNilを返します。
GetLobbyMemberData
const char * GetLobbyMemberData( CSteamID steamIDLobby, CSteamID steamIDUser, const char *pchKey );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | 他のプレイヤーがいるロビーのSteamID。 |
| steamIDUser | CSteamID | メタデータ取得元のプレイヤーのSteamID。 |
| pchKey | const char * | 値を取得するキー。 |
指定のロビー内の別のプレイヤーから、ユーザーごとのメタデータを取得します。
これは、現在いるロビー内のメンバーからのみ照会できます。
戻り値: const char *
steamIDLobbyが無効、または
steamIDUserがロビー内にいない場合には、
NULLを返します。
pchKeyがプレイヤーに設定されていなければ、空の文字列("")を返します。
こちらも参照してください: SetLobbyMemberDataGetLobbyMemberLimit
int GetLobbyMemberLimit( CSteamID steamIDLobby );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | メンバー制限を取得するロビーのSteamID。 |
ロビーに参加できるユーザー数の現在の上限。
上限が定義されていない場合は
0を返します。
戻り値: int
指定されたロビーに取得できるメタデータが無ければ
0を返します。
GetLobbyOwner
CSteamID GetLobbyOwner( CSteamID steamIDLobby );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | オーナーを取得するロビーのSteamID。 |
現在のロビーオーナーを返します。
注: これにアクセスするにはロビーのメンバーでなければなりません。
ロビーオーナーはいつも1人います-現在のオーナーが退出すると自動で、ロビー内の別のユーザーがオーナーになります。 めったに起こりませんが、オーナーが退出する瞬間にロビーに参加すると、オーナーとしてロビーに入ることもあり得ます。
戻り値: CSteamIDロビーにいない場合には、
k_steamIDNilを返します。
こちらも参照してください: SetLobbyOwnerGetNumLobbyMembers
int GetNumLobbyMembers( CSteamID steamIDLobby );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | メンバー数を取得するロビーのSteamID。 |
ロビー内のユーザー数を取得します。
注: 現在のユーザーが、ロビー内の他のユーザーのSteam IDを取得するには、ロビー内に居る必要があります。
これは反復に使用されます。これを呼び出した後に
GetLobbyMemberByIndexを使って、ロビー内の各ユーザーのSteam IDを取得できます。 他のロビーメンバーの(名前、アバター等の)ペルソナ情報は、自動で受信し、
ISteamFriendsインターフェイスからアクセスできます。
戻り値: int
ロビー内のメンバーの数、現在のユーザーがロビーからのデータを持たない場合は
0です。
InviteUserToLobby
bool InviteUserToLobby( CSteamID steamIDLobby, CSteamID steamIDInvitee );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | ユーザーを招待するロビーのSteamID。 |
| steamIDInvitee | CSteamID | 招待されるユーザーのSteamID。 |
別のユーザーをロビーに招待します。
指定のユーザーが参加リンクをクリックすると、ユーザーがゲーム内にいる場合には
GameLobbyJoinRequested_tコールバックがポストされ、ゲームがまだ実行されていない場合には、代わりにコマンドラインパラメーター
+connect_lobby <64-bit lobby Steam ID>でゲームが自動的に起動されます。
戻り値: bool
true となるのは招待が正常に送信された場合で、それ以外は、ローカルユーザーがロビー内にいない場合、Steamへの接続できない、または指定のユーザーが無効な場合には
falseです。
注: この呼び出しは、別のユーザーが正常に招待されたかのチェックは行いません。
JoinLobby
SteamAPICall_t JoinLobby( CSteamID steamIDLobby );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | 参加するロビーのSteamID。 |
既存のロビーに参加します。
ロビーの SteamIDは、
RequestLobbyListで検索、フレンドに参加、または招待から取得できます。
戻り値: SteamAPICall_tは
LobbyEnter_t呼出し結果と使用されます。
LobbyDataUpdate_tコールバックをトリガーします。
LeaveLobby
void LeaveLobby( CSteamID steamIDLobby );
ユーザーが現在いるロビーを退出します。これはクライアントサイドですぐに実行され、ロビー内の他のユーザーは
LobbyChatUpdate_tコールバックによって通知されます。
RemoveFavoriteGame
bool RemoveFavoriteGame( AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags );
ローカルのお気に入りリストからゲームサーバーを削除します。
戻り値: bool
true となるのはサーバーが削除された場合で、それ以外は、指定のサーバーがユーザーのローカルのお気に入りリストに無い場合には
falseです。
RequestLobbyData
bool RequestLobbyData( CSteamID steamIDLobby );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | メタデータを更新するロビーの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 );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | チャットメッセージ送信先ロビーのSteamID。 |
| pvMsgBody | const void * | これは、最大で4キロバイトのサイズのテキストまたはバイナリーデータです。 |
| cubMsgBody | int | pvMsgBodyのバイト単位でのサイズ。テキストメッセージの場合、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 );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | プライマリロビーのSteamID。 |
| steamIDLobbyDependent | CSteamID | プライマリーロビーにリンクされるSteamID。 |
未使用-フレネミーシステムを使用し、プレイヤー比較を目的として、2つのロビーをリンクします。
あなたが両方のロビーのオーナーである必要があります。
戻り値: bool
true となるのは、リクエストが正常にSteamサーバーに送信された場合です。
false となるのは、ローカルユーザーが両方のロビーのオーナーでない場合、またはSteamの接続が確立できない場合です。
SetLobbyData
bool SetLobbyData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue );
ロビーメタデータ内にキー/値を設定します。 これはロビー名、現在のマップ、ゲームモード等を設定するのに使用できます。
これはロビーのオーナーのみが設定可能です。 ロビーメンバーは、代わりに
SetLobbyMemberDataを使用する必要があります。
ロビー内の各ユーザーは
LobbyDataUpdate_t コールバック経由でロビーデータ変更の通知を受け取り、今後参加する新規ユーザーは既存のデータを受け取ります。
変更された場合、これはデータの送信のみ実行します。 データを送信する前にわずかな遅延があるため、これを繰り返し呼び出して必要なすべてのデータを設定し、最後の連続した呼び出しの後に自動的にバッチ処理されて送信されます。
戻り値: bool
true となるのはデータが正常に設定された場合です。
steamIDLobbyが無効な場合、またはキー/値が長すぎる場合には
falseです。
SetLobbyGameServer
void SetLobbyGameServer( CSteamID steamIDLobby, uint32 unGameServerIP, uint16 unGameServerPort, CSteamID steamIDGameServer );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | ゲームサーバー情報を設定するロビーのSteamID。 |
| unGameServerIP | uint32 | ゲームサーバーのIPアドレスをホスト順で設定します。例:127.0.0.1 == 0x7f000001. |
| unGameServerPort | uint16 | ゲームサーバーの接続ポートを設定します、ホスト順。 |
| steamIDGameServer | CSteamID | ゲームサーバーのSteamIDを設定します。 これを設定しない場合は k_steamIDNilを使用します。 |
ロビーと関連するゲームサーバーを設定します。
これはロビーのオーナーのみが設定可能です。
クライアントにとって可能な接続方法に応じて、ゲームサーバーのIP/ポートまたはSteamIDのいずれかが有効である必要があります。
ロビー内のすべてのプレイヤーに
LobbyGameCreated_tコールバックが送信され、通常はこの時点においてユーザーが指定のゲームサーバーに参加します。
戻り値: void
LobbyGameCreated_tコールバックをトリガーします。
こちらも参照してください: GetLobbyGameServerSetLobbyJoinable
bool SetLobbyJoinable( CSteamID steamIDLobby, bool bLobbyJoinable );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | ロビーのSteamID |
| bLobbyJoinable | bool | ユーザーのこのロビーへの参加を有効 (true)か無効 (false)にします。 |
他のプレイヤーによるロビーへの参加可否を設定します。 新規ロビーのデフォルトの設定はいつも有効です。
参加が無効化されている場合、フレンドや招待されたユーザーであっても、誰も参加できません。
参加が無効なロビーは、ロビー検索からは返されません。
戻り値: bool
true となるのは成功時、それ以外はロビーのオーナーでなければ
falseです。
SetLobbyMemberData
void SetLobbyMemberData( CSteamID steamIDLobby, const char *pchKey, const char *pchValue );
ローカルユーザーのためにユーザーごとのメタデータを設定します。
ロビー内の各ユーザーは
LobbyDataUpdate_t コールバック経由でロビーデータ変更の通知を受け取り、今後参加する新規ユーザーは既存のデータを受け取ります。
データを送信する前にわずかな遅延があるため、これを繰り返し呼び出して必要なすべてのデータを設定し、最後の連続した呼び出しの後に自動的にバッチ処理されて送信されます。
戻り値: void
LobbyDataUpdate_tコールバックをトリガーします。
こちらも参照してください: GetLobbyMemberDataSetLobbyMemberLimit
bool SetLobbyMemberLimit( CSteamID steamIDLobby, int cMaxMembers );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | メンバー制限を設定するロビーのSteamID。 |
| cMaxMembers | int | このロビーに許可される最大プレイヤー数。 250を超えることはできません。 |
ロビーに参加できる最大プレイヤー数を設定します。
ロビーを
CreateLobbyで作成した場合にも、設定されます。
これはロビーのオーナーのみが設定可能です。
戻り値: bool
true となるのは制限が正常に設定された場合です。
false となるのはあなたが指定されたロビーのオーナーではない場合です。
SetLobbyOwner
bool SetLobbyOwner( CSteamID steamIDLobby, CSteamID steamIDNewOwner );
| 名前 | 型 | 説明 |
| steamIDLobby | CSteamID | オーナー変更が起こったロビーのSteamID。 |
| steamIDNewOwner | CSteamID | 新しくロビーのオーナーとなるユーザーのSteamIDで、このユーザーはロビー内にいる必要があります。 |
ロビーオーナーを変更します。
これはロビーのオーナーのみが設定可能です。 これはロビー内のすべてのユーザーの
LobbyDataUpdate_tがトリガーされ、各ユーザーが新オーナーをはねいするためにローカル状態を更新する必要があります。 これは通常オーナー名の横に王冠のアイコンを表示することで達成します。
戻り値: bool
LobbyDataUpdate_tコールバックをトリガーします。
true となるのはオーナーが正常に変更された場合です。
false となるのは、あなたがロビーの現在のオーナーではない、
steamIDNewOwnerがロビー内のメンバーではない、またはSteamに接続できなかった場合です。
こちらも参照してください: GetLobbyOwnerSetLobbyType
bool SetLobbyType( CSteamID steamIDLobby, ELobbyType eLobbyType );
これがどのタイプのロビーなのかをアップデートします。
ロビーを
CreateLobbyで作成した場合にも、設定されます。
これはロビーのオーナーのみが設定可能です。
戻り値: bool
true となるのは成功時、それ以外はロビーのオーナーでなければ
falseです。
コールバック
これらは
SteamAPI_RunCallbacks を呼び出すことによって実行されるコールバックです。 これらの多くは
ISteamMatchmakingのメンバー関数への応答として直接実行されます。
FavoritesListAccountsUpdated_t
FavoritesListChanged_t
お気に入りリストから一つのサーバーが追加/削除されました。今すぐ更新してください。
| 名前 | 型 | 説明 |
| m_nIP | uint32 | IPが0とはリスト全体のリロードを意味し、他の値は、1つのサーバーのみを意味します。 これはホスト順です。例 127.0.0.1 == 0x7f000001 |
| m_nQueryPort | uint32 | m_nIPが設定されると、これはホスト順での新しいサーバークエリポートです。 |
| m_nConnPort | uint32 | m_nIPが設定されると、これはホスト順での新しいサーバー接続ポートです。 |
| m_nAppID | uint32 | m_nIPが設定されている場合、これはゲームサーバーが所属するAppIDです。 |
| m_nFlags | uint32 | m_nIPが設定されている場合、サーバーがお気に入りリストにまたは履歴リストにあるかが返されます。 詳細情報はk_unFavoriteFlagNoneを参照してください。 |
| m_bAdd | bool | m_nIPの設定がある場合、これはサーバーがリストに追加された(true)か削除された (false)かを示します。 |
| m_unAccountId | AccountID_t | |
LobbyChatMsg_t
このロビーへのチャット(テキストまたはバイナリー)メッセージの受信がありました。 これを受け取ってから、このメッセージのコンテンツを取得するには
GetLobbyChatEntryを使用する必要があります。
| 名前 | 型 | 説明 |
| m_ulSteamIDLobby | uint32 * | メッセージが送信されたロビーのSteamID。 |
| m_ulSteamIDUser | uint64 | このメッセージを送信したユーザーのSteamID。 これはローカルユーザーの場合があります。 |
| m_eChatEntryType | uint8 | 受信したメッセージのタイプ。 これは実際は EChatEntryTypeです。 |
| m_iChatID | uint32 | GetLobbyChatEntryと使用するチャットエントリーのインデックスで、このコールバックのスコープ外では有効ではないため、保存しないでください。 |
関連する関数: SendLobbyChatMsgLobbyChatUpdate_t
ロビーチャットルーム状態が変わりました。ユーザーがロビーに参加または退出したに送信されます。
| 名前 | 型 | 説明 |
| m_ulSteamIDLobby | uint64 | ロビーのSteamID。 |
| m_ulSteamIDUserChanged | uint64 | ロビー内での状態が変わったユーザーも受信者となりえます。 |
| m_ulSteamIDMakingChange | uint64 | 変更のあったチャットメンバー。 追放、ミュートの場合これはm_ulSteamIDUserChangedとは異なります。 例えば、ユーザーが別のユーザーをロビーから追放した場合、これは追放を開始したユーザーのIDに設定されます。 |
| m_rgfChatMemberStateChange | uint32 | EChatMemberStateChange値のビットフィールド。 |
LobbyCreated_t
ロビー作成リクエストへの結果。 この時点でロビーは参加され使用可能となります。
LobbyEnter_t コールバックも受信されます。(ローカルユーザーが自身のロビーに参加するため)
| 名前 | 型 | 説明 |
| m_eResult | EResult | 呼び出しの結果。
可能な値:
|
| m_ulSteamIDLobby | uint64 | 作成されたロビーのSteamID。失敗時は0。 |
関連する関数: CreateLobbyLobbyDataUpdate_t
メタデータが変更されたロビー。
m_ulSteamIDMemberがロビー内のユーザーである場合、ユーザーごとの詳細へのアクセスには
GetLobbyMemberDataを使用します。それ以外は、
m_ulSteamIDMember ==
m_ulSteamIDLobbyの場合、
GetLobbyData使用してロビーメタデータにアクセスします。
| 名前 | 型 | 説明 |
| m_ulSteamIDLobby | uint64 | ロビーのSteamID。 |
| m_ulSteamIDMember | uint64 | データが変更されたメンバー、またはルームのSteamID。 |
| m_bSuccess | uint8 | trueとなるのはロビーデータが正常に変更された場合で、それ以外はfalseです。 |
関連する関数: CreateLobby,
JoinLobby,
SetLobbyMemberData,
RequestLobbyData,
SetLobbyOwnerLobbyEnter_t
ロビー入室時に受け取ります。 この受信直後にロビーメタデータが利用可能となります。
関連する関数: CreateLobby,
JoinLobbyLobbyGameCreated_t
ゲームサーバーが
SetLobbyGameServer経由で設定され、ロビーのメンバー全員が参加できます。 これにアクションを実行するのは各クライアント次第です。典型的なゲームの動作は、ロビーを退出して指定されたゲームサーバーに接続することです。 必要に応じて、セッション中はロビーが開いたままになる場合があります。
| 名前 | 型 | 説明 |
| m_ulSteamIDLobby | uint64 | ゲームサーバーを設定するロビー。 |
| m_ulSteamIDGameServer | uint64 | ゲームサーバーのSteamID。(設定時) |
| m_unIP | uint32 | ゲームサーバーのIPアドレス、ホスト順。例:127.0.0.1 == 0x7f000001(設定時) |
| m_usPort | uint16 | 設定時、ホスト順のゲームサーバーの接続ポート。 |
関連する関数: SetLobbyGameServerLobbyInvite_t
ロビーへの参加招待がありました。 通常、これに対して必要なことはありません。Steam UIも、 <user>がロビーに招待しています、参加しますか?というメッセージと通知を表示します。
ゲーム外にいるユーザーが参加を決定すると、ゲームがパラメーター
+connect_lobby <64-bit lobby id>とともに起動します。すでにゲーム内にいる場合にはコールバック
GameLobbyJoinRequested_tで起動されます。
| 名前 | 型 | 説明 |
| m_ulSteamIDUser | uint64 | 招待送信者のSteamID。 |
| m_ulSteamIDLobby | uint64 | 招待されたロビーのSteamID。 |
| m_ulGameID | uint64 | 招待されたロビーのGame ID。 |
LobbyKicked_t
現在使用されていません! この時点で追放を実装したい場合、
SendLobbyChatMsgと送信されるスペシャルパケットで行ってください。ユーザーがパケットを取得した時に、
LeaveLobbyを呼び出す必要があります。
LobbyMatchList_t
ロビーリストをリクエストした時の結果。
GetLobbyByIndexを使用して、返されたロビーを0から
m_nLobbiesMatching-1で反復処理する必要があります。
| 名前 | 型 | 説明 |
| m_nLobbiesMatching | uint32 | 検索条件とマッチし、SteamIDがあるロビーの数。 |
関連する関数: RequestLobbyListPSNGameBootInviteResult_t
使用されていません - PS3のみ。
| 名前 | 型 | 説明 |
| m_bGameBootInviteExists | bool | |
| m_steamIDLobby | CSteamID | |
列挙型
これらはISteamMatchmakingで使用するために定義された列挙型です。
EChatMemberStateChange
ユーザーのロビー状態がどのように変更したかを説明するフラグ。 これは
LobbyChatUpdate_tから提供されます。
| 名前 | 値 | 説明 |
| k_EChatMemberStateChangeEntered | 0x0001 | このユーザーがロビーに参加したか参加中。 |
| k_EChatMemberStateChangeLeft | 0x0002 | このユーザーがロビーから退出したか退出中。 |
| k_EChatMemberStateChangeDisconnected | 0x0004 | ユーザーがロビーから退出せずに切断しました。 |
| k_EChatMemberStateChangeKicked | 0x0008 | ユーザーが追放された。 |
| k_EChatMemberStateChangeBanned | 0x0010 | ユーザーが追放され、禁止された。 |
ELobbyComparison
ロビー検索のフィルターオプション。 これらは
AddRequestLobbyListStringFilterと
AddRequestLobbyListNearValueFilterとともに設定できます。
| 名前 | 値 | 説明 |
| k_ELobbyComparisonEqualToOrLessThan | -2 | ロビー値はこれ以下でなければなりません。 |
| k_ELobbyComparisonLessThan | -1 | ロビー値はこれより小さくなければなりません。 |
| k_ELobbyComparisonEqual | 0 | ロビー値は、これと一致する必要があります。 |
| k_ELobbyComparisonGreaterThan | 1 | ロビー値は、これより大きくなければなりません。 |
| k_ELobbyComparisonEqualToOrGreaterThan | 2 | ロビー値はこれ以上でなければなりません。 |
| k_ELobbyComparisonNotEqual | 3 | ロビー値はこれに一致してはいけません。 |
ELobbyDistanceFilter
ロビーリストリクエスト時のロビー検索距離フィルター。 ロビー結果が近い順で並べられます。 これは
AddRequestLobbyListDistanceFilterとともに設定できます。
| 名前 | 値 | 説明 |
| k_ELobbyDistanceFilterClose | 0 | 同じ隣接地域内のロビーのみが返されます。 |
| k_ELobbyDistanceFilterDefault | 1 | 同じ地域または近接地域内のロビーのみが返されます。 |
| k_ELobbyDistanceFilterFar | 2 | 多くのレイテンシー要件を持たないゲームの場合、世界の裏側と線を結び中間地点以前に入るロビーを返します。 |
| k_ELobbyDistanceFilterWorldwide | 3 | フィルタなし、インドからニューヨークのロビーもマッチします(クライアント間で数秒の待ち時間が予想されるため、非推奨。) |
ELobbyType
ロビータイプを指定します。これは
CreateLobbyと
SetLobbyTypeから設定されます。
| 名前 | 値 | 説明 |
| k_ELobbyTypePrivate | 0 | ロビーへ参加する唯一の方法は招待からです。 |
| k_ELobbyTypeFriendsOnly | 1 | フレンドと招待者は参加できますが、ロビーリストには表示されません。 |
| k_ELobbyTypePublic | 2 | 検索から返されフレンドに表示されます。 |
| k_ELobbyTypeInvisible | 3 | 検索で返されますが、他のフレンドには表示されません。 これは、ユーザーに2つのロビー内にいてほしい場合(例:グループを一緒にマッチする場合)に便利です。 1人のユーザーは通常1つ、最大2つの個別ロビーにいることができます。 |
Typedefs
これらはISteamMatchmakingで使用するために定義されたtypedefsです。
| 名前 | ベース型 | 説明 |
| HServerListRequest | void* | サーバーリストを要求するときに受け取るハンドル。 |
| HServerQuery | int | 個々のサーバーで詳細を照会するときに受け取るハンドル。 |
定数
これらはISteamMatchmakingで使用するために定義された定数です。
| 名前 | 型 | 値 | 説明 |
| HSERVERQUERY_INVALID | int | 0xffffffff | |
| k_nMaxLobbyKeyLength | int | 255 | ロビーメタデータキーの最大文字数。 |
| k_unFavoriteFlagFavorite | uint32 | 0x01 | このお気に入りのゲームサーバーエントリーはお気に入りリスト用です。 |
| k_unFavoriteFlagHistory | uint32 | 0x02 | このお気に入りのゲームサーバーエントリは、履歴リスト用です。 |
| k_unFavoriteFlagNone | uint32 | 0x00 | このお気に入りのゲームサーバーにはフラグが設定されていません。 |
| STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION | const char * | "SteamMatchMakingServers002" | |
| STEAMMATCHMAKING_INTERFACE_VERSION | const char * | "SteamMatchMaking009" | |