网络游戏中对延迟要求比较高的两类游戏是:第一人称射击(FPS)和即时战略(RTS),在RTS类游戏中,延迟低于500ms是可以忍受的,在FPS类游戏中可以忍受的延迟在100ms到150ms之间。通常在实时网络游戏中会采用相应的算法来避免网络延迟对游戏可玩性的冲击。
1、实时网络游戏中存在的主要问题
在实时网络游戏中存在的主要问题有:全局时间问题、带宽问题、延迟问题,丢包问题、同步问题以及安全问题等。
(1)全局时间问题
这个问题在多线程和分布式系统中是众所周知的问题,在多人在线游戏中同样存在,这个问题可以引发一系列的问题比如:同步问题、可扩展问题、安全性问题等等
(2)网络延迟问题
网络延迟是指用户发出请求到远端系统对该请求做出响应传回给用户的这一段时间。一般路由处理、数据包的传输、服务器的计算都会导致延迟。
网游对延迟要求较高,通常要求低于500ms。一般可采用相应算法弥补延迟带来的冲击。目前解决延迟最好的方案是采用航位推测(Dead Reckoning)技术。该技术允许在客户端流畅无中断的运行,它采用预测的方法来处理未到达的移动消息,并通过相应的算法来平滑移动。
(3)丢包问题
一种解决丢包问题的方法是使用有保证消息协议如TCP/IP。不幸的是,TCP有一些行为特征使得对于实时性要求很高网络通信将是一个错误的选择。对于第一人称射击类游戏来说,对实时性要求高,因此在这类游戏中一般不使用TCP的方式,而采用UDP的方式进行网络通信。
(4)同步
以上问题都会导致同步问题,当前的措施都是采用一些同步算法来减少网络不同步带来的影响,这些同步算法都是从分布式军事仿真系统中借鉴过来的。
(5)安全问题
即外挂问题。
2、网络游戏的基本架构
主要分P2P,C/S两种结构。
(1)C/S结构
服务器性能本身会成为一个瓶颈,但是会有较高的安全性,因为服务器必须确认每个客户端的每个移动,所以它们有权否定某种请求。
(2)P2P结构
P2P游戏中存在大量的通信流,所以可能占用较大的网络带宽。但是这样的结构带来的好处是,系统较为稳定,如果一个节点崩溃,另外的节点仍然可以正常运行。在网络通信的服务形式上,一般采用浮动服务器的形式,即其中一个玩家即是客户端又扮演服务器的角色,一般由创建游戏局的玩家担任服务器。