Steamworks 文献库
ISteamGameServer 接口
提供 Steam 游戏服务器 API 的核心功能。

成员函数

ISteamGameServer 的成员函数通过全局访问器函数 SteamGameServer() 调用。

AssociateWithClan

SteamAPICall_t AssociateWithClan( CSteamID steamIDClan );
名称类型描述
steamIDClanCSteamID您希望与之关联的组的 Steam ID。

将此游戏服务器与此组关联,以计算玩家兼容度。

返回: SteamAPICall_t,与 AssociateWithClanResult_t 调用结果一起使用。

BeginAuthSession

EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID );
名称类型描述
pAuthTicketconst void *要检验的验证票证。
cbAuthTicketint验证票证的字节大小。 必须为创建此票证的调用所提供的 pcbTicket 大小。
steamIDCSteamID发送此票证的实体的 Steam ID。

验证发自实体 Steam ID 的票证,以确定其有效且非重复使用。 请注意,直到收到回调 ValidateAuthTicketResponse_t 并检查该回调中的返回值以判断是否成功后,身份才会得到确认。

票证通过 ISteamUser::GetAuthSessionTicketISteamGameServer::GetAuthSessionTicket 创建于实体之上,然后需要通过网络提供给另一端进行验证。

如果实体离线或取消票证,这将注册 ValidateAuthTicketResponse_t 回调。 参见 EAuthSessionResponse,了解更多信息。

多人游戏会话结束时必须调用 ISteamGameServer::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 表示调用成功; 如果调用失败(即 steamIDUser 不在当前服务器上)则返回 false

另见: 用户验证与所有权

CancelAuthTicket

void CancelAuthTicket( HAuthTicket hAuthTicket );
名称类型描述
hAuthTicketHAuthTicket要取消的可用验证票证。

取消从 ISteamUser::GetAuthSessionTicket 获得的验证票证。 在不再运行指定实体时,应该调用此函数。

另见: 用户验证与所有权

ClearAllKeyValues

void ClearAllKeyValues();
清除在规则查询中发送的整个键/值列表。

另见: ISteamGameServer::SetKeyValueISteamMatchmakingServers::ServerRules

ComputeNewPlayerCompatibility

SteamAPICall_t ComputeNewPlayerCompatibility( CSteamID steamIDNewPlayer );
名称类型描述
steamIDNewPlayerCSteamID尝试加入的玩家的 Steam ID。

根据敌友系统,检查当前是否有任何玩家不希望与此正在尝试加入的玩家一同游玩,反之亦然。

返回: SteamAPICall_t,与 ComputeNewPlayerCompatibilityResult_t 调用结果一起使用。

CreateUnauthenticatedUserConnection

CSteamID CreateUnauthenticatedUserConnection();
创建一个在服务器上列为正在游玩的假用户(即机器人),但略过验证程序。

注意: 这是旧用户验证 API 的一部分,不应与新 API 混用。

返回: CSteamID
返回要跟踪的机器人的 Steam ID。

与真的用户一样,当此用户离开服务器时,您也应调用 ISteamGameServer::SendUserDisconnect

EnableHeartbeats

void EnableHeartbeats( bool bActive );
名称类型描述
bActivebool启动(true)或禁用(false)主服务器更新程序。

通知 Steam 主服务器您是否希望处于活动状态。

如果启用,游戏服务器便会与主服务器交谈。如果禁用,便会忽略传入的消息,也不会传送检测信号。

另见: ISteamGameServer::SetHeartbeatIntervalISteamGameServer::ForceHeartbeat

EndAuthSession

void EndAuthSession( CSteamID steamID );
名称类型描述
steamIDCSteamID要结束活动的验证会话的实体。

结束以 ISteamUser::BeginAuthSession 开始的验证会话。 在不再与指定实体游玩时,应调用此函数。

另见: 用户验证与所有权

ForceHeartbeat

void ForceHeartbeat();
下一次有机会时,强制传送一个检测信号至 Steam 主服务器。

您一般不需要用到此函数。

另见: ISteamGameServer::EnableHeartbeatsISteamGameServer::SetHeartbeatInterval

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,AuthenticateUserTicket 调用将因无法验证用户而失败。

返回: HAuthTicket
触发一个 GetAuthSessionTicketResponse_t 回调。
验证票证的句柄。 当您结束与实体的互动时,必须在句柄上调用 ISteamGameServer::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 的缓冲区大小,应为 6 * 1024。
pNetAdruint32 *返回此数据包要传送至的主机序 IP 地址,即 127.0.0.1 == 0x7f000001。
pPortuint16 *返回要发送出此数据包的端口主机序。

取得主服务器更新程序在 GameSocketShare 模式时需要用 UDP 发送的数据包。

注意: 对任何来自该帧的数据包,应只有在调用 ISteamGameServer::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 中移除。

返回: SteamAPICall_tGSReputation_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 引擎游戏利用此函数来简化服务器管理员的工作,如此一来便不须在防火墙上开启更多端口。

只有在调用此函数之后,才能调用 ISteamGameServer::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此端口将管理服务器浏览器相关职责与来自客户端的 info ping。
unFlagsuint32一个或多个 ServerFlags 的并集。
nGameAppIdAppId_t服务器所针对游戏的 AppID。
pchVersionStringconst char *版本字符串格式通常为 x.x.x.x,当服务器过期时,供主服务器使用,以进行检测 (只列出最新版的服务器)。

初始化 ISteamGameServer 的实例。 此函数由 SteamGameServer_Init 调用,您通常无需直接调用。

如果将 MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE 传入 usQueryPort 中,游戏服务器 API 便会使用“GameSocketShare”模式,表示游戏负责发送与接收主服务器更新程序的 UDP 数据包。

如果 GameSocketShare 模式已使用,则必须使用 ISteamGameServer::HandleIncomingPacketISteamGameServer::GetNextOutgoingPacket 与 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 回调。


另见: ISteamGameServer::LogOnAnonymous

LogOnAnonymous

void LogOnAnonymous();
登录入一个通用的匿名帐户。

返回: void
触发一个 SteamServerConnectFailure_t 回调。
触发一个 SteamServersConnected_t 回调。
触发一个 SteamServersDisconnected_t 回调。


另见: ISteamGameServer::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 );
名称类型描述
bDedicatedbool此为专用服务器(true),或侦听服务器(false)?

将此服务器设定为专用或侦听服务器。 默认为侦听服务器。

注意: 必须在调用 ISteamGameServer::LogOnISteamGameServer::LogOnAnonymous 之前进行设定。

SetGameData

void SetGameData( const char *pchGameData );
名称类型描述
pchGameDataconst char *要设定的新“gamedata”值。 必须不为 NULL 或空字符串("")。 不可比 k_cbMaxGameServerGameData 中规定的长。

设置一个定义此服务器“gamedata”的字符串,此为可选项,但设置后用户便可使用此值在游戏匹配或服务器浏览器接口中进行筛选。

通常为以逗号或分号分隔的列表。

除非确实有变更,否则不要进行设置。这只会在确认时上传至主服务器一次。

SetGameDescription

void SetGameDescription( const char *pszGameDescription );
名称类型描述
pszGameDescriptionconst char *您游戏的描述。 必须不为 NULL 或空字符串("")。 不可比 k_cbMaxGameServerGameDescription 中规定的长。

设置游戏描述。 建议设置为游戏的完整名称。

注意: 所有游戏服务器均需要此设置。此函数必须在调用 ISteamGameServer::LogOnISteamGameServer::LogOnAnonymous 之前进行设置。

SetGameTags

void SetGameTags( const char *pchGameTags );
名称类型描述
pchGameTagsconst char *要设定的新“gametags”值。 必须不为 NULL 或空字符串("")。 不可比 k_cbMaxGameServerTags 中规定的长。

设置一个定义此服务器“gametags”的字符串,此为可选项,但设置后用户便可使用此值在游戏匹配或服务器浏览器接口中进行筛选。

通常为以逗号或分号分隔的列表。

除非确实有变更,否则不要进行设置。这只会在确认时上传至主服务器一次。

SetHeartbeatInterval

void SetHeartbeatInterval( int iHeartbeatInterval );
名称类型描述
iHeartbeatIntervalint发送检测信号之间间隔的毫秒数, 通常在 250 到 1000 之间。 设为 -1 以使用默认值。

改变传送检测信号至 Steam 主服务器的时间间隔。

一般不需要用到此函数。

另见: ISteamGameServer::EnableHeartbeatsISteamGameServer::ForceHeartbeat

SetKeyValue

void SetKeyValue( const char *pKey, const char *pValue );
名称类型描述
pKeyconst char *
pValueconst char *

添加或更新规则的键/值对。

另见: ISteamGameServer::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”。

注意: 所有游戏服务器均需要此设置。此函数必须在调用 ISteamGameServer::LogOnISteamGameServer::LogOnAnonymous 之前进行设置。

SetPasswordProtected

void SetPasswordProtected( bool bPasswordProtected );
名称类型描述
bPasswordProtectedbool启动(true)或禁用(false)密码保护。

设置用户尝试登录游戏服务器时是否需要密码。

SetProduct

void SetProduct( const char *pszProduct );
名称类型描述
pszProductconst char *您游戏的唯一标识符。 必须不为 NULL 或空字符串("")。

设置游戏产品标识符。 目前由主服务器用于检查版本。

建议将游戏的 App ID 转换成字符串后填入。

注意: 所有游戏服务器均需要此设置。此函数必须在调用 ISteamGameServer::LogOnISteamGameServer::LogOnAnonymous 之前进行设置。

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)

只有在将用户验证票证发送至 ISteamGameServer::BeginAuthSession 之后,才能调用。

返回: EUserHasLicenseForAppResult


另见: 用户验证与所有权

WasRestartRequested

bool WasRestartRequested();
检查主服务器是否警告过我们版本过旧。

调用此函数后,将还原为 false

返回: bool
true 表示主服务器要游戏服务器更新并重启;否则返回 false

回调

以下是可以通过调用 SteamAPI_RunCallbacks 触发的回调。 其中许多将响应 ISteamGameServer 的成员函数直接触发。

AssociateWithClanResult_t

当游戏服务器尝试与 Steam 组进行关联时发送。

名称类型描述
m_eResultEResult操作结果。 以下为可能值:

关联函数: ISteamGameServer::AssociateWithClan

ComputeNewPlayerCompatibilityResult_t

在游戏服务器根据敌友系统检查新玩家是否适合加入该服务器时发送。

名称类型描述
m_eResultEResult操作结果。 以下为可能值:
m_cPlayersThatDontLikeCandidateint不希望与指定玩家一同游玩的当前玩家的人数。
m_cPlayersThatCandidateDoesntLikeint指定玩家不希望一同游玩的服务器玩家的人数。
m_cClanPlayersThatDontLikeCandidateintSteam 关联组中不希望与此玩家一起游玩的人数。
m_SteamIDCandidateCSteamID指定玩家的 Steam ID。

关联函数: ISteamGameServer::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。

关联函数: ISteamGameServer::RequestUserGroupStatus

GSClientKick_t

游戏服务器应踢出玩家时调用。

名称类型描述
m_SteamIDCSteamID应踢出的玩家的 Steam ID。
m_eDenyReasonEDenyReason踢出该玩家的理由。

GSGameplayStats_t

已弃用 - 使用 ISteamGameServer::GetGameplayStats 查询游戏状态信息时调用。

名称类型描述
m_eResultEResult操作结果。
m_nRankint32服务器的总排名(从 0 开始)。
m_unTotalConnectsuint32所有曾连接至此服务器的客户端总数。
m_unTotalMinutesPlayeduint32在此服务器上游玩过的分钟总数。

关联函数: ISteamGameServer::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 时设置。

关联函数: ISteamGameServer::GetServerReputation

常量

以下是为定义来与 ISteamGameServer 一起使用的常量。

名称类型描述
k_unServerFlagActiveuint320x01此游戏服务器有用户正在游玩。
k_unServerFlagDedicateduint320x04此游戏服务器为专用服务器。
k_unServerFlagLinuxuint320x08此游戏服务器在 Linux 上运行。
k_unServerFlagNoneuint320x00此游戏服务器没有标志。
k_unServerFlagPasswordeduint320x10此游戏服务器有密码保护。
k_unServerFlagPrivateuint320x20此游戏服务器不应列在主服务器上,也不强制连至此服务器的用户进行验证。
在您所运行的服务器上的客户端可能未接入互联网,但您依然想允许他们游戏时(即局域网)有用。
k_unServerFlagSecureuint320x02此游戏服务器希望受 VAC 保护。
MASTERSERVERUPDATERPORT_USEGAMESOCKETSHAREint((uint16)-1)steam _gameserver::SteamGameServer_Init 一起使用,以启动 GameSocketShare 模式。
STEAMGAMESERVER_INTERFACE_VERSIONconst char *"SteamGameServer012"