Steamworks 文献库
Steam 网络
我们有几个不同的网络 API 可用于玩家间发送消息。

默认情况下,我们最新的 API 通过 Valve 网络中继数据包,以确保玩家与游戏服务器受到保护。 此 API 性能更佳,且使用更高质量的可靠性层, 它还支持普通 UDP 连接。 开源版本可在 github 获得。
  • ISteamNetworkingMessages 是用以向随机对等点发送消息的高级别接口。 从不使用连接句柄这点来说,它很像 UDP。 每次发送消息时都要指明接收者,与 sendto() 套接字函数类似。 您无需选择一个对等点作为“客户端”并发起连接,服务器也不需要“侦听”或“接受”客户端连接。 两个对等端都可以立即发送消息。 因为与 UDP 极其相似,它可能是传输现有 UDP 代码最简单的 API。 不过,和原始 UDP 不同,此 API 支持大于单个数据包的消息,以及可靠的消息传达。 流量由 Valve 主干网进行中继,或可能会在适当时建立直接连接。
  • ISteamNetworkingSockets] 为面向连接句柄的低级别接口,用于发送与接收消息。
  • ISteamNetworkingUtils 为杂项实用程序,包括用于估计任意互联网主机之间的 ping 时间的工具。
  • steamnetworkingtypes 是拥有许多常见类型和实用程序的表头。
  • Steam 数据报中继为通过 Valve 骨干网中继您游戏流量的服务。 这可以使 IP 地址不被暴露,且在很多情况下,会提升 ping 时间和连接质量。 所有的 P2P 连接都将在适当时通过 Valve 主干网自动中继。 如果您想要为专用服务器游戏使用 SDR 来优化 ping 时间并保护服务器不受 Dos 攻击,此文档为您应当如何操作提供了说明。

ISteamNetworking 是较早的 API,且已弃用。 如果您在使用这一 API,请考虑尽快迁移至新的 API,因为我们可能会在将来的发布中将此 API 从 SDK 中移除。

此 API 与Steam 匹配与大厅一起使用时效果最好,根据数据包的不同类型,您可以通过一个充当主机(通常为大厅所有者)或游戏服务器的玩家传送,或直接向每个玩家传送所有消息。

鉴于网上已有很多关于各种网络话题的文章, 我们在此作出以下推荐:

您可以查看 Steamworks API 示例应用程序(SpaceWar),其中提供了关于使用 ISteamNetworkingSockets 进行客户端-服务器连接的示例。