Jar*_*arx 10 c++ networking multiplayer
我的游戏引擎现在包含一个可操作的单人游戏部分.我现在开始考虑如何进行多人游戏.
我发现许多游戏实际上没有真正的单人游戏模式,但是当你独自玩游戏时,你实际上也是在托管一个本地服务器,而且几乎所有游戏都像在多人游戏中一样运行(除了数据包可以通过)通过替代路线以获得更好的性能)
我的引擎需要进行大量重构才能适应这种模式.将有三种可能的模式:专用客户端,专用服务器和客户端服务器(监听模式)
shm*_*eps 30
我会看看能否尽我所能回答这个问题:
在游戏行业中使用的监听服务器模型多久一次?
对于大多数在线游戏,您会发现绝大多数游戏都使用客户端 - 服务器架构,但并不总是像您想象的那样.比如,任何Source游戏.大多数人将使用具有主服务器架构的标准客户端服务器(列出可用的游戏),因为一个人将托管专用服务器,任何拥有客户端的人都可以加入它.
但是,你有一些游戏和服务,例如Left 4 Dead,League of Legends和一些XBox Live游戏,采用略有不同的方法.这些都使用客户端 - 服务器架构和控制服务器.这里的主要想法是有人创建一个不"运行"任何游戏的专用服务器.控制服务器将创建各种各样的"大厅",并且当游戏开始时,控制服务器将它们添加到队列中,并且当它是大厅的转弯时,它将选择匹配的专用服务器(就位置而言/速度,可用性,众多因素),并将玩家分配给该服务器.只有这样,服务器才会真正"运行"游戏.这是一个相同的想法,但有点简化,因为客户端不需要"选择"服务器,只加入游戏并让控制服务器完成工作.
当然,最大的客户端 - 服务器模型是MMO模型,其中一个或多个服务器运行一个处理几乎所有数据和逻辑的持久世界.使用这个模型的一些比较着名的游戏是"魔兽世界","无尽的任务"等等.
那么监听服务器在哪里适合?说实话,不是那么好,但是,你仍会发现许多游戏使用它.例如,大多数源游戏允许创建监听服务器,并且许多XBox Live游戏都会这样做(它已经有一段时间了,但我相信反恐精英会做,以及Quake 4等等).但总的来说,由于客户端 - 服务器模型的优势,它们似乎不受欢迎,这使我们接下来的观点.
它的(dis)优势是什么?
首要的是:表现.在客户端 - 服务器模型中,客户端将在游戏的每个周期处理本地更改(例如输入,图形,声音等).在周期结束时,它会打包相关数据(例如,玩家是否移动?如果是这样,在哪里?他/他现在在哪里看?速度?他们拍摄了吗?如果有的话,关于子弹的信息.等)并将其发送到服务器进行处理.服务器将获取这些数据并确定每件事物是否有效,例如,用户是否以指示黑客行为的方式移动(稍后会更多),移动是否有效(任何方式?),玩家的子弹1击中玩家2?等等.然后服务器将其打包,并将其发送给客户端,然后客户端更新所需的任何内容,例如在玩家被枪杀时调整健康状况,如果确定他们是黑客攻击则踢球员等等.
但是,监听服务器必须同时处理所有这些问题.由于我假设您熟悉编程,您可能会意识到游戏可以从计算机中抢夺多少功率,尤其是设计不佳的计算机.添加网络处理,安全处理等以及客户端游戏,您可以看到性能会受到严重打击,至少就标准处理而言.此外,大多数服务器运行在快速网络上,并且是旨在承受网络流量的服务器.如果监听服务器的网络速度很慢,整个游戏都会受到影响.
如前所述,第二个安全性,服务器将要做的主要事情之一是确定玩家是否在利用游戏.您可能已经将这些视为Punkbuster,VAC等.有一组非常复杂的规则可以运行这些程序,例如,确定黑客和非常好的玩家之间的区别.如果你不能抓住黑客,那对你的游戏来说会非常糟糕,但如果你对一个被诬告的人采取行动则会更糟.
监听服务器通常无法处理客户端的游戏,服务器处理和黑客检测,在大多数情况下,像Punkbuster这样的检测器很难(如果不是不可能)在监听服务器上运行,因为它是如果没有必要的处理能力,它很难正常运行,因为通常游戏逻辑优先于安全性,如果不允许探测器处理一帧,它可能会丢失定罪某人所需的数据.
最后,游戏.关于服务器最大的问题是它们是持久的,这意味着即使每个人都离开,服务器也会继续运行.如果您有一个在夜间没有太多活动的流行服务器,人们仍然可以在他们准备好玩的时候加入而不必等待它重新上线,这非常有用.
在监听服务器中,主要的缺点是,一旦托管监听服务器的客户端离开,游戏必须被转移到另一个玩家(在某些情况下在游戏中创建一个可以持续几分钟的lul),或者必须完全结束.这在大型服务器上不是优选的,因为主机必须保持在线(在服务器中浪费一个插槽,以及他/她的计算机电源,这也可能使游戏变慢),或者为每个人结束游戏.
然而,尽管存在这些问题,但是监听服务器确实具有一些优点.
易于设置:大多数收听服务器只不过是打"新游戏"并让人们加入.对于那些只想和朋友一起玩,不想尝试寻找空的专用服务器或与其他人一起玩的人来说,这很容易.
适合测试:如果拥有专用服务器并希望更改其配置,通常最好先测试配置.用户要么必须创建专用服务器的备份并盲目地进行更改,唯一的选择是在出现问题时回滚,创建一个新的专用服务器来测试它们,只需创建一个简单的监听服务器即可测试他们.在第1点中,这些通常更容易启动和配置.尤其如此,因为大多数专用服务器不在管理员的即时访问范围内(大多数专用服务器都是从远程位置租用的).将配置更改以及重新启动命令等推送到远程位置所需的时间要长于管理员当前所在的计算机.
更少的资源:在大多数专用服务器中,具有相同IP的用户无法连接到专用服务器(意味着,客户端必须要么托管服务器,要么玩,他们不能同时执行这两者).如果客户希望在他/她自己的服务器上玩,他们通常需要第二台机器来托管服务器,或者购买或租用专用服务器以便他们可以实际使用它.监听服务器只需要一台计算机,这可能是客户端唯一可以使用的计算机.
在任何一种情况下,两者都有优点和缺点,您需要权衡它们您愿意设计和实施的内容.根据我的经验,我相信如果你要实现一个监听服务器,它将被使用,如果只是为了一些用户希望与朋友一起玩或测试设置.
最后:
我还有其他选择吗?
这是一种工业蠕虫病毒.实际上,任何类型的网络架构都可以应用于视频游戏.然而,从我所看到的,像大多数互联网通信,大多数归结为某种形式的客户端 - 服务器模型.
如果我没有回答你的问题,或者如果你需要扩展的东西,请告诉我,我会看到我能做些什么.