为你的朋友创建游戏,无需任何端口转发或防火墙配置

0 点赞
Sven Co-op
转载

了解如何快速轻松地为你的朋友创建私人游戏。这无需端口转发、特殊路由器配置、防火墙规则以及其他你不关心的网络相关繁琐设置。 本文将介绍《 Sven Co-op 》5.19版本(2019年4月1日发布)中新增的「NAT穿透」功能,并解答关于该功能的常见问题。 简明版步骤: 1. 由一人作为主机,通过主菜单中的「创建游戏」选项创建游戏。 2. 主机记录自己的Steam ID(例如:STEAM_0:1:12345678)并分享给朋友。—— 如果你是主机且无法在游戏控制台中看到自己的Steam ID,可以借助相关工具查询。他们的朋友可以通过在控制台中输入以下内容加入主机的游戏: connect STEAM_0:1:12345678 显然,需要将STEAM_0:1:12345678替换为主机真实的Steam ID。输入时无需添加引号。 开始游戏吧。 简介 大家好, 自2019年4月1日发布的5.19版本起(这不是玩笑),《 Sven Co-op》现在可以使用Steam的NAT穿透服务来主持游戏。(这也被称为“对等连接”或“客户端直接连接”。) 这意味着包括你在内的任何人都可以从主菜单快速创建游戏,你的朋友无需你在路由器上配置端口转发、防火墙规则、VPN(如Hamachi等)或任何其他普通用户不熟悉的网络设置,就能加入游戏。使用此功能完全无需用户进行任何特殊的网络设置。使用VPN解决方案可能会比直接连接降低性能,在某些情况下,由于VPN解决方案所需的额外开销,甚至可能完全破坏游戏连接(引擎对过度分片的数据包处理效果不佳)。 此连接功能也比Hamachi等VPN解决方案更快,因为连接尽可能直接。当绝对需要回退到Steam的中继服务器时,需要注意这些服务器是专为游戏应用程序连接玩家而构建的,而非通用网络。 RCON是否可用? 不可用。 RCON仍依赖于UDP/IP可直接连接。不过这可能不太需要,因为真正的玩家会一直运行游戏,他们可以随时使用自己的游戏控制台来管理游戏情况。 这是否适用于专用服务器? 不适用于。 专用服务器不绑定任何Steam账户,因此无法将Steam ID与其关联。即使这是可能的,也需要你拥有一个单独的Steam账户,因为同一个Steam账户不能同时在两个实例中登录并积极使用Steam服务(如玩游戏/主持游戏、使用SteamCmd等)。 专用服务器仍需要直接UDP/IP连接。你可以直接感谢我们的引擎程序员GeckonCZ实现了此功能。 这是如何运作的呢? 当你通过主菜单中的【创建游戏】选项启动游戏来创建本地服务器时,Sven Co-op将利用Steam的NAT穿透服务,确保本地服务器与任何连接的玩家之间即使存在防火墙和NAT配置等障碍也能建立连接。托管本地服务器的用户不再需要进行特殊的网络配置来开放入站路由。 这解决了一个常见问题,即家庭用户无法让自己的游戏与世界各地的玩家建立连接,尤其是与朋友一起游戏时。这也应该能消除玩家占用公共服务器的情况,即一小群朋友通过投票踢出任何加入的其他玩家来接管公共游戏服务器,以便他们自己能继续玩。这最近成了个大问题,我们希望此功能能解决该问题。我们理解一群朋友通常喜欢不受打扰地游玩。 创建游戏 只要关闭局域网模式,此功能就会默认启用。一旦你创建游戏并开始玩地图,任何知道你Steam ID的人都能连接到你的游戏。如果你不想要此功能,必须通过带“-nop2p”参数启动《 Sven Co-op》来明确关闭它。开始游戏后,获取你的Steam ID会很有用,这样你可以将其告知朋友,他们需要知道你的Steam ID才能加入你的游戏。你可以通过在控制台输入“status”命令来查看,或者查找以下行: 初始化IP网络 本地IP地址:192.168.56.1,服务器端口:27015,客户端端口:27005 初始化Steam P2P网络 本地SteamID:STEAM_0:1:12345678 请注意,UDP/IP连接仍像以前一样启用,所以如果你之前一直可以正常使用,其他人仍然可以加入你的游戏,因为它会出现在服务器浏览器中。因此,你仍必须设置加入密码,才能让你的游戏真正私密。如果您仅通过局域网进行游戏,则不需要此功能,可以在开始前通过创建游戏选项界面开启局域网模式(控制台变量“sv_lan”=1)。 加入好友的游戏 由于此类游戏不会出现在服务器浏览器中(即使在“好友”标签页中也不会),因此您首先必须知道主持游戏的玩家的Steam ID。 要查找您Steam好友的Steam ID,只需访问相关网站并输入他们个人资料的完整网址,例如“https://steamcommunity.com/id/AdamR/”。然后您可以复制标记为“steamID”的条目,该条目将以“STEAM_......”开头,例如“STEAM_0:1:12345678”。找到Steam ID后,你可以在《 Sven Co-op》控制台中使用“connect”命令加入他们的游戏,例如: connect STEAM_0:1:12345678 其他格式的Steam ID,如“steamID3”和“steamID64”将无法使用。不要在Steam ID前后添加引号。 常见问题 这是真正的点对点连接吗? 是也不是。 初始连接通过Steam的NAT穿透服务建立,该服务将主机和加入的玩家视为两个平等的对等体。然后Steam的服务会尝试协商让这两名玩家建立直接的UDP/IP连接。但如果无法建立直接路由,Steam将使用其自己的中继服务器来桥接这两名玩家。不过,一旦初始连接建立,加入的玩家和主机玩家之间仍然存在经典的客户端-服务器关系。单独连接的玩家除了与主机玩家外,不会与其他任何人有直接通信,因此如果主机玩家关闭游戏、离开游戏或失去网络连接,所有加入的玩家也会掉线。(不支持主机切换/迁移。) 这比直接连接更慢/延迟更高吗? 不,大多数情况下不会。原则上,当使用Steam的中继服务器时,由于需要额外的路由/跳转来桥接两个玩家的连接,几乎总会有轻微的性能损失。尽管如此,Steam的NAT穿透服务和中继服务器通常被认为性能非常好且可靠,因此玩家连接应该不会有明显的质量损失(尤其是《 Sven Co-op》并非竞技游戏)。当必须使用Steam中继服务器时,需要更多的基准测试才能确定地回答这个问题。 如果NAT穿透服务能够在两个玩家之间建立直接连接,则上述情况不适用。从性能角度而言,这与传统的直接UDP/IP连接效果一样好。这会隐藏我的公网IP地址吗? 不会。 如果使用Steam的中继服务器,连接建立后你的IP地址不会立即被看到,但由于NAT穿透会先尝试建立直接连接,之后才会退而使用中继服务器,这一过程会暴露你的公网IP地址。 目前没有仅使用中继服务器的选项,尝试通过阻碍NAT穿透的直接连接来强制使用中继服务器也无济于事。 这对主机玩家和加入的玩家都适用。 我可以禁止玩家加入吗? 可以。 和以前一样,你可以使用“banid”命令来封禁Steam ID,例如“banid 0 STEAM_0:1:12345678”。 我们还需要像Hamachi这样的VPN工具吗? 不需要。