Steamworks 文献库
steam_gameserver.h
提供初始化和访问 Steam GameServer API 的核心基础框架。

函数


以下是不需要设置接口的全局函数。 您可以在 Steamworks API 概览 - Steam 游戏服务器中,对这些函数了解更多。

SteamGameServer_Init

inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString );
名称类型描述
unIPuint32您要绑定的 IP 地址。 (应使用主机序,即 127.0.0.1 == 0x7f000001)。 您可以使用 INADDR_ANY 绑定所有本地 IPv4 地址。
usSteamPortuint16用于与 Steam 服务器通信的本地端口。
usGamePortuint16客户端进行游戏将连接至的端口。
usQueryPortuint16将管理服务器浏览器相关任务以及来自客户端的 info ping 的端口。
eServerModeEServerMode设置服务器的验证方法。
pchVersionStringconst char *版本字符串格式通常为 x.x.x.x,主服务器用它来检测服务器何时过期。 (只列出最新版的服务器)。

初始化 ISteamGameServer 接口对象,并设置不能更改的服务器属性。

调用此函数后,您应该设置任何额外的服务器参数,然后调用 ISteamGameServer::LogOnAnonymousISteamGameServer::LogOn

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

返回: bool


另见: SteamAPI_Init

SteamGameServer_ReleaseCurrentThreadMemory

inline void SteamGameServer_ReleaseCurrentThreadMemory();
将与调用线程相关联的内部 Steamworks API 内存释放出。

多数 Steamworks API 函数分配少量的线程本地内存,供存储参数。调用此函数将手动释放这些存储。 此函数由 SteamGameServer_RunCallbacks 自动调用,因此始终只通过单线程访问 Steamworks API 的程序完全不需要显式调用此函数。

另见: SteamAPI_ReleaseCurrentThreadMemory

SteamGameServer_RunCallbacks

S_API void SteamGameServer_RunCallbacks();
调度使用 STEAM_GAMESERVER_CALLBACK 创建的回调,并将结果调用至所有注册侦听器。

最好以大于 10Hz 的频率调用此函数,调用间隔时间越长,从 Steamworks API 接收事件或结果越有可能出现延迟。
大部分游戏每渲染一帧调用一次。 所有注册侦听器函数将在此项调用期间,在调用方线程上下文中调用。

SteamGameServer_RunCallbacks 可同时从多线程安全调用,但是如果您选择这样做,回调代码可以在任何线程上执行。 一种替代方案是只在主线程调用 SteamGameServer_RunCallbacks,并在其他线程上定期调用 SteamGameServer_ReleaseCurrentThreadMemory

另见: SteamGameServer_RunCallbacks

SteamGameServer_Shutdown

S_API void SteamGameServer_Shutdown();
关闭 Steamworks GameServer API,释放指针和内存。

另见: SteamAPI_Shutdown

枚举

以下是经过定义来与 steam_gameserver 一起使用的枚举。

EServerMode

在使用 SteamGameServer_Init 初始化时,用于设置一个游戏服务器的验证与 VAC 状态。

名称描述
eServerModeInvalid0已弃用 - 切勿使用!
eServerModeNoAuthentication1不验证用户登录,且不在服务器列表中列出。
eServerModeAuthentication2验证用户,在服务器列表中列出,但不在连接的客户端上运行 VAC。
eServerModeAuthenticationAndSecure3验证用户,在服务器列表中列出,并对客户端使用 VAC。