允许人们在没有端口转发的情况下托管自己的多人游戏?

时间:2015-02-06 16:28:01

标签: c++ port multiplayer

现在Steam上有很多游戏(桌面模拟器,SpeedRunners),允许人们在不需要端口转发的情况下主持他们自己的在线多人比赛/游戏。

我想到的一件事就是他们只是有一台服务器将所有匹配作为单独的线程处理。

然后我开始怀疑是否会收缩瓶颈。

然后我听到这些游戏只是以某种方式允许TCP通过他们的NAT打孔,超越了端口转发的需要。

但是,怎么说,C ++使用winsock,会这样做吗?还是GameMaker:Studio?或者只是一般的游戏?如何让人们在没有端口转发的情况下玩游戏?这个过程是什么?

我在Steam上看到这么多游戏,现在它一定不会太复杂。

2 个答案:

答案 0 :(得分:1)

由于这个问题与蒸汽明显相关,我认为值得一提的是Steamworks API,尤其是SteamNetworking。它允许通过Steam服务器中继对等连接:

https://partner.steamgames.com/doc/api/ISteamNetworking

bool AllowP2PPacketRelay( bool bAllow );

允许或禁止P2P连接回落到中继状态 通过Steam服务器进行直接连接或NAT遍历 无法建立。

答案 1 :(得分:0)

可以使用UPnP自动配置路由器进行端口转发。在http://pupnp.sourceforge.net/

中有一个库

另一种方法是让外部服务器管理所有流量,以便每个人都连接到那里,从而避免nat问题。