Steamworks 文獻庫
ISteamGameServer 介面
提供 Steam 遊戲伺服器 API 的核心功能。

成員函式

ISteamGameServer 的成員函式可透過全域存取子函式 SteamGameServer() 呼叫。

AssociateWithClan

SteamAPICall_t AssociateWithClan( CSteamID steamIDClan );
名稱型別說明
steamIDClanCSteamID希望產生關聯的群組 Steam ID。

讓此遊戲伺服器與隊伍產生關聯,以計算玩家相容度。

傳回: 用於 AssociateWithClanResult_t 呼叫結果的 SteamAPICall_t

BeginAuthSession

EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID );
名稱型別說明
pAuthTicketconst void *要認證的驗證票證。
cbAuthTicketint驗證票證的位元組大小。 此值須與建立此票證的呼叫所提供的 pcbTicket 大小相同。
steamIDCSteamID送出此票證的實體的 Steam ID。

認證從一個實體 Steam ID 傳來的票證,以確認票證有效,且沒有重複使用。 請注意在收到 ValidateAuthTicketResponse_t 回呼並確認當中傳回的值為成功前,身分仍未驗證。

票證是以 ISteamUser::GetAuthSessionTicketGetAuthSessionTicket 建立在實體上的,並需要透過網路提供給另一端以進行認證。

如果實體下線或取消了票證,便會登錄 ValidateAuthTicketResponse_t 回呼。 更多資訊請參閱 EAuthSessionResponse

必須在多人遊戲工作階段結束時呼叫 EndAuthSession

傳回: EBeginAuthSessionResult


另外請見: 使用者驗證與所有權

BLoggedOn

bool BLoggedOn();
檢查遊戲伺服器的登入狀態。

傳回: bool
true ,如果遊戲伺服器已登入;否則傳回 false

BSecure

bool BSecure();
檢查遊戲伺服器是否在「安全」模式。

傳回: bool
true ,如果遊戲伺服器是安全的;否則傳回 false

另外請見: EServerModeGSPolicyResponse_t

BUpdateUserData

bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore );
名稱型別說明
steamIDUserCSteamID使用者的 Steam ID。
pchPlayerNameconst char *使用者的名稱。
uScoreuint32使用者目前的分數。

更新正在連線至伺服器的使用者,將顯示於伺服器瀏覽器與遊戲配對介面中的資訊。

備註: 此為舊版使用者認證 API 的一部分,不應與新的 API 混用。

傳回: bool
true ,如果呼叫成功;失敗則傳回 false(即 steamIDUser 並非在目前伺服器的玩家)。

另外請見: 使用者驗證與所有權

CancelAuthTicket

void CancelAuthTicket( HAuthTicket hAuthTicket );
名稱型別說明
hAuthTicketHAuthTicket使用中但要取消的票證。

取消一張從 ISteamUser::GetAuthSessionTicket 收到的認證票證。 不再使用指定實體遊玩時,應呼叫此函式。

另外請見: 使用者驗證與所有權

ClearAllKeyValues

void ClearAllKeyValues();
清除整組傳給規則查詢的索引碼 / 值清單。

另外請見: SetKeyValueISteamMatchmakingServers::ServerRules

ComputeNewPlayerCompatibility

SteamAPICall_t ComputeNewPlayerCompatibility( CSteamID steamIDNewPlayer );
名稱型別說明
steamIDNewPlayerCSteamID嘗試加入的玩家的 Steam ID。

使用敵友系統,檢查目前是否有任何玩家不希望與正在嘗試加入的玩家一同遊玩,或反之。

傳回: 用於 ComputeNewPlayerCompatibilityResult_t 呼叫結果的 SteamAPICall_t

CreateUnauthenticatedUserConnection

CSteamID CreateUnauthenticatedUserConnection();
建立一個在伺服器上的假使用者(例如電腦玩家),但略過認證程序。

備註: 此為舊版使用者認證 API 的一部分,不應與新的 API 混用。

傳回: CSteamID
傳回要追蹤的電腦玩家的 Steam ID。

與真的使用者一樣,當此使用者離開伺服器時,也應呼叫 SendUserDisconnect

EnableHeartbeats

void EnableHeartbeats( bool bActive );
名稱型別說明
bActivebool開啟(true)或關閉(false)主伺服器更新程式。

告訴 Steam 主伺服器您是否希望處於活動狀態。

如果開啟,遊戲伺服器便會與主伺服器交談。如果關閉,便會忽略接下來的訊息,也不會傳送活動訊號。

另外請見: SetHeartbeatIntervalForceHeartbeat

EndAuthSession

void EndAuthSession( CSteamID steamID );
名稱型別說明
steamIDCSteamID要結束的使用中認證工作階段的實體。

結束一個以 BeginAuthSession 開始的認證工作階段。 不再使用指定實體遊玩時,應呼叫此函式。

另外請見: 使用者驗證與所有權

ForceHeartbeat

void ForceHeartbeat();
下一次有機會時,強制傳送一個活動訊號至 Steam 主伺服器。

您通常不會需要用到此函式。

另外請見: EnableHeartbeatsSetHeartbeatInterval

GetAuthSessionTicket

HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket );
名稱型別說明
pTicketvoid *呼叫成功後,要將新的認證票證複製至的緩衝區。
cbMaxTicketint分配給 pTicket 的緩衝區大小。 應為 1024
pcbTicketuint32 *傳回票證的實際長度。

取得一個傳送給希望驗證您的實體的驗證票證。

進行此呼叫後,您便把票證傳送給了實體,他們可再呼叫 ISteamUser::BeginAuthSession 來確認實體的完整性。

建立給 ISteamUserAuth/AuthenticateUserTicket Web API 使用的票證時,呼叫應用程式要使用票證前應先等待 API 呼叫產生的 GetAuthSessionTicketResponse_t 回呼,以確認票證有傳送給伺服器。 如果回呼沒有在短時間內回來(約 10 到 20 秒),便表示您的用戶端沒有連線至 Steam,而 AuthenticeUserTicket 呼叫也會失敗,因為使用者沒有被認證到。

傳回: HAuthTicket
觸發 GetAuthSessionTicketResponse_t 回呼。
認證票證的控制代碼。 當您要停止與實體的互動時,必須呼叫控制代碼的 CancelAuthTicket

如果呼叫失敗,則傳回 k_HAuthTicketInvalid

另外請見: 使用者驗證與所有權

GetGameplayStats

void GetGameplayStats();
已棄用 - 將從未來釋出的 SDK 中移除。

傳回: void
觸發 GSGameplayStats_t 回呼。

GetNextOutgoingPacket

int GetNextOutgoingPacket( void *pOut, int cbMaxOut, uint32 *pNetAdr, uint16 *pPort );
名稱型別說明
pOutvoid *以複製進此緩衝區的方式,傳回要傳送的封包。 封包大小可達 16 KiB,請依此分配空間。
cbMaxOutint提供給 pOut 的緩衝區大小,應為 16 * 1024。
pNetAdruint32 *以主機順序傳回封包要傳送至的 IP 位址,也就是 127.0.0.1 == 0x7f000001。
pPortuint16 *以主機順序傳回要送出此封包的連接埠。

取得主伺服器更新程式在 GameSocketShare 模式時以 UDP 傳送的封包。

備註: 此函式應只有在呼叫 HandleIncomingPacket 「之後」才能呼叫,以取得任何來自該幀的封包。

備註: 使用 GameSocketShare 模式時,直到傳回 0 之前「必須」每幀不斷呼叫此函式。

呼叫 SteamGameServer_Init 時,便可開啟 GameSocketShare 模式。

傳回: int
需要傳送的封包長度,但如果該幀中已沒有要傳送的封包,則傳回 0。

GetPublicIP

uint32 GetPublicIP();
根據 Steam 的資料取得伺服器的公開 IP。

若伺服器位於 NAT 之後,而您想將此 IP 公布於大廳中讓其它用戶端可以直接連線,便可利用此函式。

傳回: uint32
主機順序的公開 IP,也就是 127.0.0.1 == 0x7f000001。

如果無法判辨 IP,則傳回 0

GetServerReputation

SteamAPICall_t GetServerReputation();
已棄用 - 將從未來釋出的 SDK 中移除。

傳回: 用於 GSReputation_t 呼叫結果的 SteamAPICall_t

GetSteamID

CSteamID GetSteamID();
取得遊戲伺服器的 Steam ID。

傳回: CSteamID

HandleIncomingPacket

bool HandleIncomingPacket( const void *pData, int cbData, uint32 srcIP, uint16 srcPort );
名稱型別說明
pDataconst void *即將到來的封包中的資料。
cbDataintpData 的位元組大小。
srcIPuint32以主機順序傳回封包傳送至的 IP 位址,也就是 127.0.0.1 == 0x7f000001。
srcPortuint16以主機順序傳回送出此封包的連接埠。

在 GameSocketShare 模式中處理 Steam 主伺服器的封包。

在 GameSocketShare 模式中便可用遊戲的通訊端發出訊息與主伺服器談話,而不是由 ISteamGameServer 自己建立通訊端 。 我們便不必要求伺服器操作員在防火牆上另開一個連接埠。

每當有以 0xFFFFFFFF 開頭的封包,應呼叫此函式。 這表示該封包是給我們的。

當您選擇讓遊戲伺服器的 UDP 通訊端進行多工,而非讓主伺服器更新程式使用自己的通訊端,便會用到 IP 與連接埠參數。

Source 引擎遊戲利用此函式來簡化伺服器管理員的工作,如此一來便不須在防火牆上開啟更多連接埠。

只有在呼叫此函式之後,才應呼叫 GetNextOutgoingPacket

呼叫 SteamGameServer_Init 時,便可開啟 GameSocketShare 模式。

傳回: bool

InitGameServer

bool InitGameServer( uint32 unIP, uint16 usGamePort, uint16 usQueryPort, uint32 unFlags, AppId_t nGameAppId, const char *pchVersionString );
名稱型別說明
unIPuint32將與之綁定的 IP 位址。 (須使用主機順序,也就是 127.0.0.1 == 0x7f000001)。 您可使用 INADDR_ANY 來綁定所有的本機 IPv4 位址。
usGamePortuint16進行遊戲時,用戶端要連接至的連接埠。
usQueryPortuint16管理伺服器瀏覽器相關事務以及從用戶端傳來的資訊 Ping 的連接埠。
unFlagsuint32一個或多個 ServerFlags 的聯集。
nGameAppIdAppId_t伺服器所屬遊戲的 App ID。
pchVersionStringconst char *版本字串通常是以 x.x.x.x 的形式呈現,主伺服器會以此值來偵測伺服器版本是否過舊 (只有最新版本的伺服器會被列出)。

初始化 ISteamGameServer 的執行個體。 此函式是由 SteamGameServer_Init 呼叫,您通常不會需要直接呼叫此函式。

如果將 MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE 傳入 usQueryPort 中,遊戲伺服器 API 便會開啟「GameSocketShare」模式,表示遊戲須負責傳送與接收主伺服器更新程式的 UDP 封包。

在 GameSocketShare 模式下,便須使用 HandleIncomingPacketGetNextOutgoingPacket 與 Steam 主伺服器互動。

傳回: bool
true ,如果遊戲伺服器成功與提供的 IP 或連接埠綁定;否則傳回 false 表示失敗。

LogOff

void LogOff();
開始將遊戲伺服器登出 Steam 的程序。

傳回: void
觸發 SteamServerConnectFailure_t 回呼。
觸發 SteamServersConnected_t 回呼。
觸發 SteamServersDisconnected_t 回呼。

LogOn

void LogOn( const char *pszToken );
名稱型別說明
pszTokenconst char *

開始登入永續性遊戲伺服器帳戶的程序。

傳回: void
觸發 SteamServerConnectFailure_t 回呼。
觸發 SteamServersConnected_t 回呼。
觸發 SteamServersDisconnected_t 回呼。


另外請見: LogOnAnonymous

LogOnAnonymous

void LogOnAnonymous();
登入一個泛用的、不具名的帳戶。

傳回: void
觸發 SteamServerConnectFailure_t 回呼。
觸發 SteamServersConnected_t 回呼。
觸發 SteamServersDisconnected_t 回呼。


另外請見: LogOn

RequestUserGroupStatus

bool RequestUserGroupStatus( CSteamID steamIDUser, CSteamID steamIDGroup );
名稱型別說明
steamIDUserCSteamID要檢查群組狀態的使用者。
steamIDGroupCSteamID要檢查的群組。

檢查使用者是某在指定的 Steam 群組中。

傳回: bool
觸發 GSClientGroupStatus_t 回呼。
true ,如果呼叫成功傳送至 Steam 伺服器;如果沒有連接至 Steam 伺服器,或提供了無效的使用者或群組,則傳回 false

SendUserConnectAndAuthenticate

bool SendUserConnectAndAuthenticate( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser );
名稱型別說明
unIPClientuint32將進行連接的用戶端 IP 位址。 此值須使用主機順序,也就是 127.0.0.1 == 0x7f000001。
pvAuthBlobconst void *由呼叫 ISteamUser::InitiateGameConnection 取得,使用者須提供的認證資料。
cubAuthBlobSizeuint32pvAuthBlob 的位元組大小。
pSteamIDUserCSteamID *傳回使用者的 Steam ID。 不可為 NULL

處理新收到的 Steam 使用者的連線。 此函式將會向 Steam 伺服器驗證使用者身份、應用程式所有權,以及 VAC 狀態。

如果 Steam 伺服器不在線上,此函式便會驗證快取中的票證,以此驗證應用程式所有權與身份。

備註: 此為舊版使用者認證 API 的一部分,不應與新的 API 混用。

傳回: bool
true ,如果使用者的票證通過基本的檢查;若否,則為 false

如果呼叫成功,便要預期收到 GSClientApprove_tGSClientDeny_t 回呼,告知您使用者認證成功或失敗。 回呼中的 Steam ID 將與此呼叫傳回的相同。

SendUserDisconnect

void SendUserDisconnect( CSteamID steamIDUser );
名稱型別說明
steamIDUserCSteamID離開遊戲伺服器的使用者的 Steam ID。

每當有使用者離開了遊戲伺服器,便應呼叫此函式。

為了避免同一個帳戶重複登入多個伺服器,以及顯示目前在伺服器的使用者等目的,Steam 將用此函式來追蹤哪些使用者在哪台伺服器中。

備註: 此為舊版使用者認證 API 的一部分,不應與新的 API 混用。

SetBotPlayerCount

void SetBotPlayerCount( int cBotplayers );
名稱型別說明
cBotplayersint目前在伺服器中,電腦或 AI 玩家的數量。

設定遊戲伺服器中電腦或 AI 玩家的數量。 預設值為 0。

SetDedicatedServer

void SetDedicatedServer( bool bDedicated );
名稱Type說明
bDedicatedbool此為專屬伺服器(true),或監聽伺服器(false)?

將此伺服器設定為專用或監聽伺服器。 預設為監聽伺服器。

備註: 必須在呼叫 LogOnLogOnAnonymous 之前進行設定。

SetGameData

void SetGameData( const char *pchGameData );
名稱型別說明
pchGameDataconst char *要為「gamedata」設定的新值。 不能為 NULL 或空白字串("")。 不可比 k_cbMaxGameServerGameData 中規範的長。

設置定義此伺服器的「gamedata」的字串。此為非必要的設定,但設置後使用者便可使用此值在介面中篩選遊戲配對或伺服器瀏覽器。

此值通常會以逗號或分號分開的列表表示。

除非真的有所改變,否則不要設定。這只會在主伺服器認可時上傳一次。

SetGameDescription

void SetGameDescription( const char *pszGameDescription );
名稱型別說明
pszGameDescriptionconst char *您遊戲的說明。 不能為 NULL 或空白字串("")。 不可比 k_cbMaxGameServerGameDescription 中規範的長。

設定遊戲說明。 建議可設定成遊戲的完整名稱。

備註: 所有遊戲伺服器皆需要此設定。此函式必須在呼叫 LogOnLogOnAnonymous 之前進行設定。

SetGameTags

void SetGameTags( const char *pchGameTags );
名稱型別說明
pchGameTagsconst char *要為「gamedata」設定的新值。 不能為 NULL 或空白字串("")。 不可比 k_cbMaxGameServerTags 中規範的長。

設置定義「gamedata」的字串。此為非必要的設定,但設置後使用者便可使用此值在介面中篩選遊戲配對或伺服器瀏覽器。

此值通常會以逗號或分號分開的列表表示。

除非真的有所改變,否則不要設定。這只會在主伺服器認可時上傳一次。

SetHeartbeatInterval

void SetHeartbeatInterval( int iHeartbeatInterval );
名稱型別說明
iHeartbeatIntervalint每個活動訊號之間間隔的毫秒數, 通常在 250 到 1000 之間。 設為 -1 便可使用預設的值。

改變傳送活動訊號至 Steam 伺服器的時間間隔。

您通常不會需要用到此函式。

另外請見: EnableHeartbeatsForceHeartbeat

SetKeyValue

void SetKeyValue( const char *pKey, const char *pValue );
名稱型別說明
pKeyconst char *
pValueconst char *

新增或更新規則的索引碼 / 值配對。

另外請見: ClearAllKeyValuesISteamMatchmakingServers::ServerRules

SetMapName

void SetMapName( const char *pszMapName );
名稱型別說明
pszMapNameconst char *要設置的新地圖名稱。 不能為 NULL 或空白字串("")。 不可比 k_cbMaxGameServerMapName 中規範的長。

設定要回報給伺服器瀏覽器的地圖名稱。

SetMaxPlayerCount

void SetMaxPlayerCount( int cPlayersMax );
名稱型別說明
cPlayersMaxint此伺服器最多可容納的玩家人數。

設定此伺服器一次最多可容納的玩家人數。

此值可隨時改變。

SetModDir

void SetModDir( const char *pszModDir );
姓名型別說明
pszModDirconst char *要設定的遊戲路徑。 不能為 NULL 或空白字串("")。 不可比 k_cbMaxGameServerGameDir 中規範的長。

設定遊戲的路徑。

應與遊戲的安裝路徑相同。 僅需資料夾名稱即可,不需要整個路徑。 例如「Spacewar」。

備註: 所有遊戲伺服器皆需要此設定。此函式必須在呼叫 LogOnLogOnAnonymous 之前進行設定。

SetPasswordProtected

void SetPasswordProtected( bool bPasswordProtected );
名稱型別說明
bPasswordProtectedbool開啟(true)或關閉(false)密碼保護。

設定使用者嘗試登入遊戲伺服器時是否需要密碼。

SetProduct

void SetProduct( const char *pszProduct );
名稱型別說明
pszProductconst char *您遊戲的唯一識別碼。 不能為 NULL 或空白字串("")。

設定遊戲產品的識別碼。 伺服器目前會用此函式來檢查版本。

建議可將遊戲的 App ID 轉換成字串後填入。

備註: 所有遊戲伺服器皆需要此設定。此函式必須在呼叫 LogOnLogOnAnonymous 之前進行設定。

SetRegion

void SetRegion( const char *pszRegion );
名稱型別說明
pszRegionconst char *

地區識別碼。 此為可選欄位,預設值為空白字串,也就是「世界」地區。

SetServerName

void SetServerName( const char *pszServerName );
名稱型別說明
pszServerNameconst char *要設定的新伺服器名稱。 不能為 NULL 或空白字串("")。 不可比 k_cbMaxGameServerName 中規範的長。

設定要顯示於伺服器瀏覽器中的伺服器名稱。

SetSpectatorPort

void SetSpectatorPort( uint16 unSpectatorPort );
名稱型別說明
unSpectatorPortuint16讓旁觀者加入的連接埠。

設定遊戲伺服器是否允許旁觀者,以及他們應連接至哪個連接埠。 預設值為零,代表不使用此服務。

SetSpectatorServerName

void SetSpectatorServerName( const char *pszSpectatorServerName );
名稱型別說明
pszSpectatorServerNameconst char *要設定的旁觀者伺服器名稱。 不能為 NULL 或空白字串("")。 不可比 k_cbMaxGameServerMapName 中規範的長。

設定旁觀者伺服器的名稱。 此函式應只有在旁觀者連接埠並非為零的狀況下使用。

UserHasLicenseForApp

EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID );
名稱型別說明
steamIDCSteamID送出驗證票證的使用者的 Steam ID。
appIDAppId_t要檢查使用者是否擁有的 DLC 的 App ID。

檢查使用者是否擁有指定的可下載內容(DLC)

此函式只有在將驗證票證送至 BeginAuthSession 後才可呼叫。

傳回: EUserHasLicenseForAppResult


另外請見: 使用者驗證與所有權

WasRestartRequested

bool WasRestartRequested();
檢查主伺服器是否警告過版本過舊的問題。

呼叫完此函式後,將轉回為 false

傳回: bool
true ,如果主伺服器要遊戲伺服器更新並重新啟動;否則傳回 false

回呼

以下為呼叫 SteamAPI_RunCallbacks 後可能會發出的回呼。 之中許多函式會應 ISteamGameServer 的成員函式直接執行。

AssociateWithClanResult_t

當遊戲伺服器嘗試與 Steam 群組產生關聯時發送。

名稱型別說明
m_eResultEResult作業的結果。 可能的值:

關聯函式: AssociateWithClan

ComputeNewPlayerCompatibilityResult_t

在遊戲伺服器使用敵友系統檢查新玩家是否適合加入該伺服器時發送。

名稱型別說明
m_eResultEResult作業的結果。 可能的值:
m_cPlayersThatDontLikeCandidateint目前的玩家當中,不希望與此玩家一同遊戲的人數。
m_cPlayersThatCandidateDoesntLikeint伺服器上的玩家中,此玩家不希望一同遊戲的人數。
m_cClanPlayersThatDontLikeCandidateint在關聯 Steam 群組的玩家中,不希望與此玩家一同遊戲的人數。
m_SteamIDCandidateCSteamID此玩家的 Steam ID。

關聯函式: ComputeNewPlayerCompatibility

GSClientAchievementStatus_t

已棄用 - 請改用 ISteamGameServerStats

名稱型別說明
m_SteamIDuint64已棄用
m_pchAchievementchar[128]已棄用
m_bUnlockedbool已棄用

GSClientApprove_t

准許連線至此遊戲伺服器的用戶端。

名稱型別說明
m_SteamIDCSteamID希望連線的使用者的 Steam ID。
m_OwnerSteamIDCSteamID遊戲擁有者的 Steam ID。如果遊戲是透過 Steam 親友同享取用的,此值便會與 m_SteamID 不同。

GSClientDeny_t

使用者連線至遊戲伺服器被拒時呼叫。

名稱型別說明
m_SteamIDCSteamID嘗試連線的使用者的 Steam ID。
m_eDenyReasonEDenyReason玩家被拒的原因。
m_rgchOptionalTextchar[128]解釋拒絕原因的非必要文字訊息。 通常除了記錄以外不須使用。

GSClientGroupStatus_t

於我們收到使用者的群組狀態時呼叫。

名稱型別說明
m_SteamIDUserCSteamID要查詢群組狀態的使用者。
m_SteamIDGroupCSteamID要查詢的群組。
m_bMemberbool使用者是(true)或不是(false)群組成員。
m_bOfficerbool使用者是(true)或不是(false)群組幹部。 如果 m_bMember 為 false,則永遠不會是 true。

關聯函式: RequestUserGroupStatus

GSClientKick_t

遊戲伺服器應踢出玩家時呼叫。

名稱型別說明
m_SteamIDCSteamID應踢出的玩家的 Steam ID。
m_eDenyReasonEDenyReason踢出該玩家的理由。

GSGameplayStats_t

已棄用 - 使用 GetGameplayStats 查詢遊玩狀態資訊時呼叫。

名稱型別說明
m_eResultEResult作業的結果。
m_nRankint32伺服器的整體階層(以 0 為底)。
m_unTotalConnectsuint32所有曾連線至此伺服器的用戶端總數。
m_unTotalMinutesPlayeduint32在伺服器上游玩過的分鐘總數。

關聯函式: GetGameplayStats

GSPolicyResponse_t

遊戲伺服器要求以安全的方式(VAC 防護)顯示時收到。

名稱型別說明
m_bSecureuint8伺服器目前是設定為安全(true)或是不安全(false)?

GSReputation_t

已棄用 - 查詢遊戲伺服器的信譽時呼叫。

由於主伺服器封鎖的是 IP,所以如果另一個連接埠上有不良的伺服器,就算本身信譽良好,依然有遭封鎖的可能。
此資訊可用來判斷哪一個伺服器是不良的。

名稱型別說明
m_eResultEResult作業的結果。
m_unReputationScoreuint32該遊戲伺服器的信譽分數。
m_bBannedbool該伺服器是否遭到 Steam 主伺服器封鎖(true)或沒有(false)。
m_unBannedIPuint32遭封鎖的伺服器 IP。 只有在 m_bBannedtrue 時才設置。
m_usBannedPortuint16遭封鎖的伺服器的連接埠。 只有在 m_bBannedtrue 時才設置。
m_ulBannedGameIDuint64遭封鎖的伺服器所服務的遊戲 ID。 只有在 m_bBannedtrue 時才設置。
m_unBanExpiresuint32封鎖結束的時間,將以 Unix 紀元格式表示(自 1970 年 1 月 1 日以來的秒數)。 只有在 m_bBannedtrue 時才設置。

關聯函式: GetServerReputation

常數

以下為定義來用於 ISteamGameServer 中的常數。

名稱型別說明
k_unServerFlagActiveuint320x01此遊戲伺服器有使用者正在遊玩。
k_unServerFlagDedicateduint320x04此遊戲伺服器為專屬伺服器。
k_unServerFlagLinuxuint320x08此遊戲伺服器是在 Linux 上執行的。
k_unServerFlagNoneuint320x00此遊戲伺服器沒有旗標。
k_unServerFlagPasswordeduint320x10此遊戲伺服器有密碼保護。
k_unServerFlagPrivateuint320x20此遊戲伺服器不應列在主伺服器上,也不用強制連線至此伺服器的使用者進行認證。
當用戶端可能沒有連線至網路,但依然想允許他們進行遊戲時(也就是區域連線),便可派上用場。
k_unServerFlagSecureuint320x02此遊戲伺服器希望受 VAC 防護。
MASTERSERVERUPDATERPORT_USEGAMESOCKETSHAREint((uint16)-1)SteamGameServer_Init 一同使用,以開啟 GameSocketShare 模式。
STEAMGAMESERVER_INTERFACE_VERSIONconst char *"SteamGameServer012"