提供 Steam 游戏服务器 API 的核心功能。
成员函数
ISteamGameServer
的成员函数通过全局访问器函数
SteamGameServer()
调用。
AssociateWithClan
SteamAPICall_t AssociateWithClan( CSteamID steamIDClan );
名称 | 类型 | 描述 |
steamIDClan | CSteamID | 您希望与之关联的组的 Steam ID。 |
将此游戏服务器与此组关联,以计算玩家兼容度。
返回: SteamAPICall_t,与
AssociateWithClanResult_t 调用结果一起使用。
BeginAuthSession
EBeginAuthSessionResult BeginAuthSession( const void *pAuthTicket, int cbAuthTicket, CSteamID steamID );
名称 | 类型 | 描述 |
pAuthTicket | const void * | 要检验的验证票证。 |
cbAuthTicket | int | 验证票证的字节大小。 必须为创建此票证的调用所提供的 pcbTicket 大小。 |
steamID | CSteamID | 发送此票证的实体的 Steam ID。 |
验证发自实体 Steam ID 的票证,以确定其有效且非重复使用。 请注意,直到收到回调
ValidateAuthTicketResponse_t 并检查该回调中的返回值以判断是否成功后,身份才会得到确认。
票证通过
ISteamUser::GetAuthSessionTicket 或
ISteamGameServer::GetAuthSessionTicket 创建于实体之上,然后需要通过网络提供给另一端进行验证。
如果实体离线或取消票证,这将注册
ValidateAuthTicketResponse_t 回调。 参见
EAuthSessionResponse,了解更多信息。
多人游戏会话结束时必须调用
ISteamGameServer::EndAuthSession。
返回: EBeginAuthSessionResult另见: 用户验证与所有权BLoggedOn
bool BLoggedOn();
检查游戏服务器是否已登录。
返回: bool
true 表示游戏服务器已登录;否则返回
false。
BSecure
bool BSecure();
检查游戏服务器是否处于“安全”模式。
返回: bool
true 表示游戏服务器安全;否则返回
false。
另见: EServerMode、
GSPolicyResponse_tBUpdateUserData
bool BUpdateUserData( CSteamID steamIDUser, const char *pchPlayerName, uint32 uScore );
名称 | 类型 | 描述 |
steamIDUser | CSteamID | 用户的 Steam ID。 |
pchPlayerName | const char * | 用户的名称。 |
uScore | uint32 | 用户当前的分数。 |
为当前连接至服务器的用户更新显示在服务器浏览器及与游戏匹配接口中的数据。
注意: 这是旧用户验证 API 的一部分,不应与新 API 混用。
返回: bool
true 表示调用成功; 如果调用失败(即
steamIDUser
不在当前服务器上)则返回
false。
另见: 用户验证与所有权CancelAuthTicket
void CancelAuthTicket( HAuthTicket hAuthTicket );
取消从
ISteamUser::GetAuthSessionTicket 获得的验证票证。 在不再运行指定实体时,应该调用此函数。
另见: 用户验证与所有权ClearAllKeyValues
void ClearAllKeyValues();
清除在规则查询中发送的整个键/值列表。
另见: ISteamGameServer::SetKeyValue、
ISteamMatchmakingServers::ServerRulesComputeNewPlayerCompatibility
SteamAPICall_t ComputeNewPlayerCompatibility( CSteamID steamIDNewPlayer );
名称 | 类型 | 描述 |
steamIDNewPlayer | CSteamID | 尝试加入的玩家的 Steam ID。 |
根据敌友系统,检查当前是否有任何玩家不希望与此正在尝试加入的玩家一同游玩,反之亦然。
返回: SteamAPICall_t,与
ComputeNewPlayerCompatibilityResult_t 调用结果一起使用。
CreateUnauthenticatedUserConnection
CSteamID CreateUnauthenticatedUserConnection();
创建一个在服务器上列为正在游玩的假用户(即机器人),但略过验证程序。
注意: 这是旧用户验证 API 的一部分,不应与新 API 混用。
返回: CSteamID返回要跟踪的机器人的 Steam ID。
与真的用户一样,当此用户离开服务器时,您也应调用
ISteamGameServer::SendUserDisconnect。
EnableHeartbeats
void EnableHeartbeats( bool bActive );
名称 | 类型 | 描述 |
bActive | bool | 启动(true)或禁用(false)主服务器更新程序。 |
通知 Steam 主服务器您是否希望处于活动状态。
如果启用,游戏服务器便会与主服务器交谈。如果禁用,便会忽略传入的消息,也不会传送检测信号。
另见: ISteamGameServer::SetHeartbeatInterval、
ISteamGameServer::ForceHeartbeatEndAuthSession
void EndAuthSession( CSteamID steamID );
结束以
ISteamUser::BeginAuthSession 开始的验证会话。 在不再与指定实体游玩时,应调用此函数。
另见: 用户验证与所有权ForceHeartbeat
void ForceHeartbeat();
下一次有机会时,强制传送一个检测信号至 Steam 主服务器。
您一般不需要用到此函数。
另见: ISteamGameServer::EnableHeartbeats、
ISteamGameServer::SetHeartbeatIntervalGetAuthSessionTicket
HAuthTicket GetAuthSessionTicket( void *pTicket, int cbMaxTicket, uint32 *pcbTicket );
名称 | 类型 | 描述 |
pTicket | void * | 如果调用成功,新验证票证将复制入的缓冲区。 |
cbMaxTicket | int | 分配给 pTicket 的缓冲区大小, 应为 1024。 |
pcbTicket | uint32 * | 返回实际票证的长度。 |
获取验证票证发送至想要验证您的实体。
进行此调用后,您可把票证发送给实体,对方可调用
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 );
名称 | 类型 | 描述 |
pOut | void * | 将需要发送的数据包复制至此缓冲区,以返回该数据包。 数据包可达 16 KiB,请分配相应空间。 |
cbMaxOut | int | 分配给 pOut 的缓冲区大小,应为 6 * 1024。 |
pNetAdr | uint32 * | 返回此数据包要传送至的主机序 IP 地址,即 127.0.0.1 == 0x7f000001。 |
pPort | uint16 * | 返回要发送出此数据包的端口主机序。 |
取得主服务器更新程序在 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_t 与
GSReputation_t 调用结果一起使用。
GetSteamID
CSteamID GetSteamID();
获取游戏服务器的 Steam ID。
返回: CSteamIDHandleIncomingPacket
bool HandleIncomingPacket( const void *pData, int cbData, uint32 srcIP, uint16 srcPort );
名称 | 类型 | 描述 |
pData | const void * | 传入的数据包的数据。 |
cbData | int | pData 的字节大小。 |
srcIP | uint32 | 此数据包发送至的主机序 IP 地址,即 127.0.0.1 == 0x7f000001。 |
srcPort | uint16 | 发送数据包的端口主机序。 |
在 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 );
名称 | 类型 | 描述 |
unIP | uint32 | 您要绑定的 IP 地址, 应为主机序,即 127.0.0.1 == 0x7f000001。 您可以使用 INADDR_ANY 来绑定所有本地 IPv4 地址。 |
usGamePort | uint16 | 客户端进行游戏将连接至的端口。 |
usQueryPort | uint16 | 此端口将管理服务器浏览器相关职责与来自客户端的 info ping。 |
unFlags | uint32 | 一个或多个 ServerFlags 的并集。 |
nGameAppId | AppId_t | 服务器所针对游戏的 AppID。 |
pchVersionString | const char * | 版本字符串格式通常为 x.x.x.x,当服务器过期时,供主服务器使用,以进行检测 (只列出最新版的服务器)。 |
初始化 ISteamGameServer 的实例。 此函数由
SteamGameServer_Init 调用,您通常无需直接调用。
如果将
MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE 传入
usQueryPort
中,游戏服务器 API 便会使用“GameSocketShare”模式,表示游戏负责发送与接收主服务器更新程序的 UDP 数据包。
如果 GameSocketShare 模式已使用,则必须使用
ISteamGameServer::HandleIncomingPacket 和
ISteamGameServer::GetNextOutgoingPacket 与 Steam 主服务器交互。
返回: bool
true 表示游戏服务器成功与所提供的 IP 或端口绑定;否则返回
false 表示失败。
LogOff
void LogOff();
开始将游戏服务器从 Steam 注销的过程。
返回: void
触发一个
SteamServerConnectFailure_t 回调。
触发一个
SteamServersConnected_t 回调。
触发一个
SteamServersDisconnected_t 回调。
LogOn
void LogOn( const char *pszToken );
名称 | 类型 | 描述 |
pszToken | const char * | |
开始登录永久性游戏服务器帐户。
返回: void
触发一个
SteamServerConnectFailure_t 回调。
触发一个
SteamServersConnected_t 回调。
触发一个
SteamServersDisconnected_t 回调。
另见: ISteamGameServer::LogOnAnonymousLogOnAnonymous
void LogOnAnonymous();
登录入一个通用的匿名帐户。
返回: void
触发一个
SteamServerConnectFailure_t 回调。
触发一个
SteamServersConnected_t 回调。
触发一个
SteamServersDisconnected_t 回调。
另见: ISteamGameServer::LogOnRequestUserGroupStatus
bool RequestUserGroupStatus( CSteamID steamIDUser, CSteamID steamIDGroup );
检查用户是否在指定的 Steam 组中。
返回: bool
触发一个
GSClientGroupStatus_t 回调。
true 表示调用已成功发送至 Steam 服务器;如果没有连接至 Steam 服务器,或提供的用户或组无效,则返回
false。
SendUserConnectAndAuthenticate
bool SendUserConnectAndAuthenticate( uint32 unIPClient, const void *pvAuthBlob, uint32 cubAuthBlobSize, CSteamID *pSteamIDUser );
处理新收到的 Steam 用户的连接。 将向 Steam 服务器验证用户身份、应用所有权,以及 VAC 状态。
如果 Steam 服务器不在线,此函数则将自行验证缓存中的票证,以此验证应用所有权与身份。
注意: 这是旧用户验证 API 的一部分,不应与新 API 混用。
返回: bool
true 表示用户的票证通过基本检查;否则返回
false。
如果调用成功,您应该会收到
GSClientApprove_t 或
GSClientDeny_t 回调,告知您用户验证成功或失败。 回调中的 Steam ID 将与此调用返回的相同。
SendUserDisconnect
void SendUserDisconnect( CSteamID steamIDUser );
名称 | 类型 | 描述 |
steamIDUser | CSteamID | 已离开游戏服务器的用户的 Steam ID。 |
每当有用户离开了游戏服务器,便应调用此函数。
出于避免同一个帐户重复登录多个服务器,并显示目前在服务器的用户等目的,Steam 可用此函数来内部记录当前哪些用户在哪些服务器中。
注意: 这是旧用户验证 API 的一部分,不应与新 API 混用。
SetBotPlayerCount
void SetBotPlayerCount( int cBotplayers );
名称 | 类型 | 描述 |
cBotplayers | int | 目前在服务器中机器人或 AI 玩家的数量。 |
设置游戏服务器中机器人或 AI 玩家的数量。 默认值为 0。
SetDedicatedServer
void SetDedicatedServer( bool bDedicated );
名称 | 类型 | 描述 |
bDedicated | bool | 此为专用服务器(true),或侦听服务器(false)? |
将此服务器设定为专用或侦听服务器。 默认为侦听服务器。
注意: 必须在调用
ISteamGameServer::LogOn 或
ISteamGameServer::LogOnAnonymous 之前进行设定。
SetGameData
void SetGameData( const char *pchGameData );
设置一个定义此服务器“gamedata”的字符串,此为可选项,但设置后用户便可使用此值在游戏匹配或服务器浏览器接口中进行筛选。
通常为以逗号或分号分隔的列表。
除非确实有变更,否则不要进行设置。这只会在确认时上传至主服务器一次。
SetGameDescription
void SetGameDescription( const char *pszGameDescription );
设置游戏描述。 建议设置为游戏的完整名称。
注意: 所有游戏服务器均需要此设置。此函数必须在调用
ISteamGameServer::LogOn 或
ISteamGameServer::LogOnAnonymous 之前进行设置。
SetGameTags
void SetGameTags( const char *pchGameTags );
设置一个定义此服务器“gametags”的字符串,此为可选项,但设置后用户便可使用此值在游戏匹配或服务器浏览器接口中进行筛选。
通常为以逗号或分号分隔的列表。
除非确实有变更,否则不要进行设置。这只会在确认时上传至主服务器一次。
SetHeartbeatInterval
void SetHeartbeatInterval( int iHeartbeatInterval );
名称 | 类型 | 描述 |
iHeartbeatInterval | int | 发送检测信号之间间隔的毫秒数, 通常在 250 到 1000 之间。 设为 -1 以使用默认值。 |
改变传送检测信号至 Steam 主服务器的时间间隔。
一般不需要用到此函数。
另见: ISteamGameServer::EnableHeartbeats、
ISteamGameServer::ForceHeartbeatSetKeyValue
void SetKeyValue( const char *pKey, const char *pValue );
名称 | 类型 | 描述 |
pKey | const char * | |
pValue | const char * | |
添加或更新规则的键/值对。
另见: ISteamGameServer::ClearAllKeyValues、
ISteamMatchmakingServers::ServerRulesSetMapName
void SetMapName( const char *pszMapName );
设置要报告给服务器浏览器的地图名称。
SetMaxPlayerCount
void SetMaxPlayerCount( int cPlayersMax );
名称 | 类型 | 描述 |
cPlayersMax | int | 此服务器最多可容纳的玩家人数。 |
设置此服务器一次最多可容纳的玩家人数。
此值可随时改变。
SetModDir
void SetModDir( const char *pszModDir );
设置游戏路径。
应与游戏的安装路径相同。 仅需文件夹名称即可,不需要整个路径, 如:“Spacewar”。
注意: 所有游戏服务器均需要此设置。此函数必须在调用
ISteamGameServer::LogOn 或
ISteamGameServer::LogOnAnonymous 之前进行设置。
SetPasswordProtected
void SetPasswordProtected( bool bPasswordProtected );
名称 | 类型 | 描述 |
bPasswordProtected | bool | 启动(true)或禁用(false)密码保护。 |
设置用户尝试登录游戏服务器时是否需要密码。
SetProduct
void SetProduct( const char *pszProduct );
名称 | 类型 | 描述 |
pszProduct | const char * | 您游戏的唯一标识符。 必须不为 NULL 或空字符串("")。 |
设置游戏产品标识符。 目前由主服务器用于检查版本。
建议将游戏的 App ID 转换成字符串后填入。
注意: 所有游戏服务器均需要此设置。此函数必须在调用
ISteamGameServer::LogOn 或
ISteamGameServer::LogOnAnonymous 之前进行设置。
SetRegion
void SetRegion( const char *pszRegion );
名称 | 类型 | 描述 |
pszRegion | const char * | |
地区标识符。 此为可选字段,默认值为空字符串,表示地区为“全球”。
SetServerName
void SetServerName( const char *pszServerName );
设置要在服务器浏览器中显示的服务器名称。
SetSpectatorPort
void SetSpectatorPort( uint16 unSpectatorPort );
名称 | 类型 | 描述 |
unSpectatorPort | uint16 | 让旁观者加入的端口。 |
设置游戏服务器是否允许旁观者,及他们应该连接至哪个端口。 默认值为零,代表此服务未使用。
SetSpectatorServerName
void SetSpectatorServerName( const char *pszSpectatorServerName );
设置旁观者服务器的名称。 只在旁观者端口非零的情况下使用。
UserHasLicenseForApp
EUserHasLicenseForAppResult UserHasLicenseForApp( CSteamID steamID, AppId_t appID );
名称 | 类型 | 描述 |
steamID | CSteamID | 发送验证票证的用户的 Steam ID。 |
appID | AppId_t | 查看用户是否拥有此 DLC App ID。 |
查看用户是否拥有特定的
可下载内容(DLC)。
只有在将用户验证票证发送至
ISteamGameServer::BeginAuthSession 之后,才能调用。
返回: EUserHasLicenseForAppResult另见: 用户验证与所有权WasRestartRequested
bool WasRestartRequested();
检查主服务器是否警告过我们版本过旧。
调用此函数后,将还原为
false。
返回: bool
true 表示主服务器要游戏服务器更新并重启;否则返回
false。
回调
以下是可以通过调用
SteamAPI_RunCallbacks 触发的回调。 其中许多将响应
ISteamGameServer
的成员函数直接触发。
AssociateWithClanResult_t
当游戏服务器尝试与 Steam 组进行关联时发送。
名称 | 类型 | 描述 |
m_eResult | EResult | 操作结果。 以下为可能值:
|
关联函数: ISteamGameServer::AssociateWithClanComputeNewPlayerCompatibilityResult_t
在游戏服务器根据敌友系统检查新玩家是否适合加入该服务器时发送。
名称 | 类型 | 描述 |
m_eResult | EResult | 操作结果。 以下为可能值:
|
m_cPlayersThatDontLikeCandidate | int | 不希望与指定玩家一同游玩的当前玩家的人数。 |
m_cPlayersThatCandidateDoesntLike | int | 指定玩家不希望一同游玩的服务器玩家的人数。 |
m_cClanPlayersThatDontLikeCandidate | int | Steam 关联组中不希望与此玩家一起游玩的人数。 |
m_SteamIDCandidate | CSteamID | 指定玩家的 Steam ID。 |
关联函数: ISteamGameServer::ComputeNewPlayerCompatibilityGSClientAchievementStatus_t
已弃用 - 请改用
ISteamGameServerStats。
名称 | 类型 | 描述 |
m_SteamID | uint64 | 已弃用。 |
m_pchAchievement | char[128] | 已弃用。 |
m_bUnlocked | bool | 已弃用。 |
GSClientApprove_t
客户端已获准连接至此游戏服务器。
名称 | 类型 | 描述 |
m_SteamID | CSteamID | 希望连接的用户的 Steam ID。 |
m_OwnerSteamID | CSteamID | 拥有游戏的 Steam ID,如果访问游戏时是通过 Steam 家庭共享进行,则与 m_SteamID 不同。 |
GSClientDeny_t
用户连接至此游戏服务器被拒时调用。
名称 | 类型 | 描述 |
m_SteamID | CSteamID | 尝试联机的用户的 Steam ID。 |
m_eDenyReason | EDenyReason | 玩家被拒的原因。 |
m_rgchOptionalText | char[128] | 解释拒绝原因的文本消息(可选)。 通常只用于日志记录。 |
GSClientGroupStatus_t
我们收到用户的组状态时调用。
名称 | 类型 | 描述 |
m_SteamIDUser | CSteamID | 我们查询其组状态的用户。 |
m_SteamIDGroup | CSteamID | 我们查询的组。 |
m_bMember | bool | 用户被官员踢出(true), 还是没有被踢出(false)? |
m_bOfficer | bool | 用户是组官员(true), 或不是(false)? 如果 m_bMember 为 false,此项始终不会为 true。 |
关联函数: ISteamGameServer::RequestUserGroupStatusGSClientKick_t
游戏服务器应踢出玩家时调用。
GSGameplayStats_t
已弃用 - 使用
ISteamGameServer::GetGameplayStats 查询游戏状态信息时调用。
名称 | 类型 | 描述 |
m_eResult | EResult | 操作结果。 |
m_nRank | int32 | 服务器的总排名(从 0 开始)。 |
m_unTotalConnects | uint32 | 所有曾连接至此服务器的客户端总数。 |
m_unTotalMinutesPlayed | uint32 | 在此服务器上游玩过的分钟总数。 |
关联函数: ISteamGameServer::GetGameplayStatsGSPolicyResponse_t
游戏服务器请求显示为安全(受 VAC 保护)时收到。
名称 | 类型 | 描述 |
m_bSecure | uint8 | 服务器当前为安全(true),或不安全(false)? |
GSReputation_t
已弃用 - 查询游戏服务器的信誉时调用。
由于主服务器封禁是按 IP 进行,所以如果另一个端口上有不良服务器,即便信誉分数良好,依然有遭封禁的可能。
此信息可用于判断不良服务器。
名称 | 类型 | 描述 |
m_eResult | EResult | 操作结果。 |
m_unReputationScore | uint32 | 游戏服务器的信誉分数。 |
m_bBanned | bool | 服务器被 Steam 主服务器封禁(true),或未被封禁(false)? |
m_unBannedIP | uint32 | 遭封禁的服务器 IP。 只在 m_bBanned 为 true 时设置。 |
m_usBannedPort | uint16 | 遭封禁的服务器的端口。 只在 m_bBanned 为 true 时设置。 |
m_ulBannedGameID | uint64 | 遭封禁的服务器所服务的游戏 ID。 只在 m_bBanned 为 true 时设置。 |
m_unBanExpires | uint32 | 封禁结束的时间,以 Unix 时间戳表示(自 1970 年 1 月 1 日起的秒数)。 只在 m_bBanned 为 true 时设置。 |
关联函数: ISteamGameServer::GetServerReputation常量
以下是为定义来与 ISteamGameServer 一起使用的常量。
名称 | 类型 | 值 | 描述 |
k_unServerFlagActive | uint32 | 0x01 | 此游戏服务器有用户正在游玩。 |
k_unServerFlagDedicated | uint32 | 0x04 | 此游戏服务器为专用服务器。 |
k_unServerFlagLinux | uint32 | 0x08 | 此游戏服务器在 Linux 上运行。 |
k_unServerFlagNone | uint32 | 0x00 | 此游戏服务器没有标志。 |
k_unServerFlagPassworded | uint32 | 0x10 | 此游戏服务器有密码保护。 |
k_unServerFlagPrivate | uint32 | 0x20 | 此游戏服务器不应列在主服务器上,也不强制连至此服务器的用户进行验证。 在您所运行的服务器上的客户端可能未接入互联网,但您依然想允许他们游戏时(即局域网)有用。 |
k_unServerFlagSecure | uint32 | 0x02 | 此游戏服务器希望受 VAC 保护。 |
MASTERSERVERUPDATERPORT_USEGAMESOCKETSHARE | int | ((uint16)-1) | 与 steam _gameserver::SteamGameServer_Init 一起使用,以启动 GameSocketShare 模式。 |
STEAMGAMESERVER_INTERFACE_VERSION | const char * | "SteamGameServer012" | |