(FPS游戏服务器设计的问题.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(FPS游戏服务器设计的问题

FPS游戏服务器设计的问题 ?一、追溯去gameloft笔试,有一个题目是说:叫你去设计一个FPS(第一人称射击游戏),你是要用TCP呢还是要用UDP,说明理由 。二、学习这是两篇网上找到的文章,写非常不错。当时笔试的时候自己没想到这么全,但大概想法都是一致的,摘录下来再学习一下。?1.网络游戏程序员须知 UDP vs TCP?这篇教程让我们就从最基本的网络数据收发开始谈起吧。其实这部分才是网络程序员应该做的最基础最简单的部分,但是这部分如果想要做好相对来说还是很有技巧和困难的。而且如果这部分你没做好,在多人对战类游戏中它带来的影响是极其恶劣的。你可能听说过端口这个概念,也可能知道TCP和UDP这两个概念。在做网络开发的的时候,我们首先要做的就是选择合适的协议。到底是TCP,还是UDP,或者是两者混合来用呢?这是一个问题。其实来说,你的选择应该和你需要做的游戏类型相关。所以首先如果你是做网络游戏开发的,从现在起,我默认你对一些知名的网络游戏,比如COD,Quake, Unreal, CS已经很熟悉了。既然我们要谈网络游戏的协议选择,我们就先得对各种协议来个深入的了解,这样到底应该选择那种协议也就不言而喻了。TPC/IPTCPTCP解释为传输控制协议,IP解释为网络协议。他们合起来就完成了你日常网络的大部分工作,比如写email,看网页等。假如你曾经使用过TCP,那么你肯定知道TCP是可靠协议。即你先在两台机器间建立连接,然后你再在两台机器上开始传输数据,传输的过程和文件读写很像。你在一头写,在另外一头读而已。TCP协议是可靠而且有序的,这个意味着TCP负责保证你的数据可以完整而且有序的传输到另外一端。TCP是通过流的方式来传输数据的,这就意味这TCP会负责把你的数据切分,打包,然后具体传输。最后记住,TCP传输其实就和读写文件一样简单。 by relliktIPIP协议的抽象简单概念与IP协议底层传输的复杂真实实现形成鲜明对比。这里不需要任何连接的概念,数据包从一个电脑传输到另外一个电脑,就像你在上课的教室里面传纸条一样。你只要给出一个最终的目的地,包自然会传到那个终端,当然中间还会经过好多层的路由递送。你完全不能确定自己的包最终会不会到达目的地,只能希望它到达。如果你想知道包最终是否到达,那你就必须让接收者收到以后做出回复。事实上,整个过程可能还要更复杂一些,由于没有一台机器能够预知包可以最快到达的完整路由途径,所以有时候IP协议会将包复制多份发出,这些包会走不同的路由,因此他们一般也会在不同的时刻到达。你必须了解因特网路由问题的设计原则是自主组织路径,自主修复路径。所以当你思考问题的底层是如何实现时那是相当带劲的,当然你可以在相关的教科书上找到你想要的内容或者wiki。UDP我们已经有一种可以像写文件一样稳定传输数据的方法了,如果我们还想要一种可以自由的收发包的方法,我们可以怎么做呢?这里我们可以用到UDP。UDP解释为“user datagram protocol”(用户自定义数据协议)。它和TCP类似也是建立在IP协议上的,不过他相比起TCP来在IP协议上只做了薄薄的一层协议。我们可以使用UDP协议直接对指定的IP和端口发包,比如 27:21(本机的FTP端口)。这个包会从发送者自己路由到接收者手中,当然也有可能半路丢失掉。在接收端,我们只要侦听相关端口就可以了,当有包从任何电脑发来的时候(这里没有连接的概念),我们在得到包的数据的同时,也得到了包的发送者的IP和端口数据,发送包的大小。UDP是不稳定可靠的传输协议,事实上大部分的包是会被送达的,但是你一般会有1%到5%的丢包率。甚至你会发现有段时间,你连一个包都收不到。路由路径上的那些机器出了点啥问题,谁知道呢?有时候收包的顺序和发包的顺序也是不同的,可能你发包的时候是1,2,3,4,5的顺序发。收到的包就变成1,3,4,5,2的顺序了。当然大部分时候这个顺序是不会乱的。但是这个谁都不敢打保票。UDP只能保证你一件事,那就是包的完整性。你如果发一个256bytes的包,那么对方收到的肯定也是一个256bytes的包。他不会只收到半个包之类的。当然这其实也是UDP唯一能保证你的事情。其他事情都要靠你自己去订制。 by relliktTCP vs UDP我们现在要做一个选择了。开发游戏到底是用UDP好呢?还是用TCP好呢?首先我们连列一下他们的有缺点:TCP:1. 基于连接的协议。2. 可靠性和数据包的序列性是有保证的。3. 自动为你的数据封包。4. 确保包的流量不会超出你的网络链接的负载上限。5. 简单易用,你只需要像写文件一样去读写就万事大吉了。UDP:1. 没有连接的概念,如果你想要,自己去实现去。2. 没有关于可靠性和包序列性的保证,包可能会丢失,重复,乱序。3.

文档评论(0)

lisuf331 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档