网页游戏服务端端究竟解决了什么问题

游戏服务端究竟解决了什么问题?
  美国《洛杉矶时报》2月23日刊发了记者朱莉&马基嫩(Julie Makinen)的文章,题为《以乘坐时速180英里的中国子弹头列车迎接猴年》。马基嫩在文章中讲述了自己在中国农历春节乘坐高铁的经历。全文编译如下:
猴年第一天,&和谐&号缓缓驶出西客站,驶入白雪覆盖的清新的京郊。清晨的一轮红日高悬在2月的蓝天上,春节暂时将人们从呛人的煤烟与汽车尾气中解脱出来。整座城市静止了,出奇得沉静,就好像被数百万儿子女儿们的突然离去惊呆了一样。
我们这群乘坐高铁G609次列车的异乡人属于最后一批离开的人。在13号车厢第六排靠窗的位置上,一屁股坐下一位50多岁的民工,他自称为&老王&;他等了很久都没买着票,而且发现除夕当天的票都卖光了。
通道位置坐着两岁的露露(音)和她的母亲杨梅(音),母女俩的行程因杨梅丈夫在一家会计事务所的工作而耽搁。
几乎与车上的每个人一样,她们要赶回老家过年,这个节日承载着如此深刻的家庭责任以至于它引发了著名的地球上最大的年度移民潮。乘飞机,走公路,坐火车,预计中国人在今年1月24开始的整整40天中出行次数达到29.1亿次。其中约有3.32亿将乘坐火车,比去年几乎增加13%。
这中间几乎一半人将乘坐&和谐号&这样的火车。9年前,中国尚没有这样的子弹头列车投入运营。
列车上的电视屏幕上突然了一位卡通形象的妇女,开始列举一些数字。她以学校老师字正腔圆的音调说:&到2015年底,中国高铁营业里程达1.9万公里,居世界第一,占到全球运营高铁里程的60%以上&&&
在车厢前方一个橙色数字演示器上显示我们的速度在不断提升:290公里/小时,291公里/小时,297公里/小时。老王端直身子,边喝花生奶,边看手机。这是他第一次乘坐&和谐&号,只有两个数字对他很重要。他笑着宣布,&5小时到侯马,过去一般要16小时&,说话间他露出了几乎无牙的下牙床。
我的目的地是北京西南444英里的平遥古城,要比侯马早到一小时。我们一路上行,高度将提升2800英尺,我们穿行于河北省贫瘠的玉米地中,驶入臭名昭著的污染城市石家庄,攀上太行山,驶上位于中国腹地的煤炭大省山西省所处的黄土高原。
当我们驶离石家庄时,一名穿粉色制服的列车员推着售货车在过道上叫卖着牛肉方便面和快餐小食品。电视屏幕上的那位卡通妇女开始宣读乘车文明规则。&不要将食物残渣倒入厕所&&&
中国子弹头列车的票价不算贵,吸引到一些社会底层的乘客。它提供商务座,一等座和二等座,二等座的票价一般至少是&慢&车的两倍,但没有超出老王这样的打工仔的承受范围。
在春节出行高峰期中,从北京到平遥的单程标价约为28美元(约合183元人民币),行驶4小时。最慢、最便宜的火车要开15小时,票价为14美元(约合93元人民币)。
午后不久,露露打开了她上车后的第三块巧克力点心,一种德国产的蛋形巧克力的糕点。老王需要补充糖分来自我调整,他又开了一瓶花生牛奶,并从他的帆布背包中拿出一塑料袋的松饼。他客气地让道:&吃一块吗?&
出石家庄后不久,&和谐&号开始减速。橙色显示器上显示的速度在下降:297公里/小时,249公里/小时,218公里/小时,179公里/小时。这时地平线上出现了一座座黄土覆盖的浅褐色山包。
列车突然驶入隧道。电视上屏幕出现了宣传&核心社会主义价值观&的内容。老王斜倚在座位上闭目养神。黑暗似乎没有尽头。我们短暂地看见了阳光,但很快再次跌入黑暗。这次,我调一下我的秒表。一分钟过去了,随后两分钟,接着三分钟。
短暂的一道光后,我们再度回到地下,感觉黑暗没完没了。看着我的表,脑子里在重温我四年级数学课的内容。一列火车以每小时179公里的速度过隧道。列车过隧道耗时9分20秒。那么隧道有多长呢?
我又重新查看了秒表。我脑子里计算了一下。如果列车的行驶速度确实为每小时179公里,那就是每小时111英里。这就表明这条隧道长17.29英里,这要比走110号和105号高速路从洛杉矶闹市到洛杉矶国际机场还要远。
电视上正播放中国最近一次火箭发射的情况。露露和杨梅此时也睡着了。13号车厢内,似乎无人关注中国在太空或地下的壮举。
在中国高速发展的过程中,令人兴奋不已的成就很快就会因下一个的出现而被人淡忘。是的,太行山隧道目前是中国最长的铁路隧道,但是它的这一地位要不了多久就将被刷新。随着20.28英里长的青海省新关角隧道以及17.54英里长的甘肃西秦岭隧道的开始使用,它很快就将落到第三位。
当列车接近平遥时,我开始整理东西。老王也醒了。起身下车时,我提到那条隧道,&我们刚刚过的隧道真的很长,整整9分钟。&
老王耸耸肩说:&真的吗?我不知道。我只知道我回家快多了。&
好文,顶一下
文章真差,踩一下
------分隔线----------------------------
把开源带在你的身边-精美linux小纪念品
初级应用->
高级应用-> |
编程开发->游戏服务器端口被攻击了,怎么解决?_百度知道
游戏服务器端口被攻击了,怎么解决?
戏服务器被攻击首先可以更改端口,把默认的端口都更改成别人意想不到的。其次做游戏最好是选用高硬防服务器,高硬防服务器可以根据攻击的不同类型做出对攻击的不同应对方式。
海腾数据为你解答,希望能帮到你
来自团队:
其他类似问题
为您推荐:
游戏服务器的相关知识
其他5条回答
游戏开发商解决
把显示屏关了,就OK可
咳咳,开个玩笑,你可以重新换一个,端口或者去朋友的
换一个端口,做好安全设置
联系方式给我一个
你可以加我qq:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁游戏服务器端所完成的事(三)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
游戏服务器端所完成的事(三)
上传于||文档简介
&&游​戏​的​服​务​器​端​程​序​所​做​的​事​情
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
你可能喜欢游戏服务器:到底使用UDP还是TCP - 博客 - 伯乐在线
& 游戏服务器:到底使用UDP还是TCP
在编写网络游戏的时候,到底使用UDP还是TCP的问题迟早都要面对。
一般来说你会听到人们这样说:“除非你正在写一个动作类游戏,否则你就用TCP吧” 或者是 “你能够在MMO游戏中用TCP,因为魔兽世界就用的TCP!”
遗憾的是,这些观点都没有反映这个问题的复杂性。
首先,说明一下,我之前主要是用TCP进行网络编程。我曾为一个流行的在线纸牌游戏编写服务器了好几年,在高峰期我们的每台服务器能够承受个连接(同一台物理机器上有多个服务器进程在跑)都没有问题。在我来看,TCP是一种安全而且常见的选择。
尽管如此,我们最新的项目却是使用UDP协议,而且我们的项目无法通过任何方式在TCP下工作。事实上,项目一开始使用的TCP,但是后来发现我们使用TCP无法达到我们需求的连接数量时,我们只能换成UDP了。
在使用中TCP表现怎么样呢
从原理上,TCP的优势有:
简单直接的长连接
可靠的信息传输
数据包的大小没有限制
任何一个和TCP打过交道的人都知道,要实现一个稳定的TCP网络连接,需要处理各种隐藏的坑,比如断线检测、慢速客户端响应阻塞数据包,对开放连接的各种dos攻击,阻塞和非阻塞IO模型等等。
除了上面列出的这些问题外,一个好的TCP模块确实不好编码实现。
但是,TCP最糟糕的特性是它对阻塞的控制。一般来说,TCP假定丢包是由于网络带宽不够造成的,所以发生这种情况的时候,TCP就会减少发包速度。
在3G或WiFi下,一个数据包丢失了,你希望的是立马重发这个数据包,然而TCP的阻塞机制却完全是采用相反的方式来处理!
而且没有任何办法能够绕过这个机制,因为这是TCP协议构建的基础。这就是为什么在3G或者WiFi环境下,ping值能够上升到1000多毫秒的原因。
为什么不用UDP
UDP相对TCP来说既简单又困难。
举个例子来说,UDP是基于数据包构建,这意味着在某些方面需要你完全颠覆在TCP下的观念。UDP只使用一个socket进行通信,不像TCP需要为每一个客户端建立一个socket连接。这些都是UDP非常不错的地方。
但是,大多数情况下你需要的仅仅是一些连接的概念罢了,一些基本的包序功能,以及所谓的连接可靠性。可惜的是,这些功能UDP都没有办法简单的提供给你,而你使用TCP却都可以免费得到。
这也是人们为什么经常推荐TCP的原因。在用TCP的时候你可以不考虑这些问题,直到你需要同步连接的数量级达到500以上的时候。
所以,是的,UDP没有提供所有的解决方法,但是就像你看到的那样,这也正是UDP好用的地方。在某种意义上来说,TCP对UDP就好比是Hibernate和手写SQL的区别。
使用TCP失败的地方
人们经常给你建议,让你去使用TCP,比如“TCP跟UDP一样快”或者“游戏X用TCP如此成功,所以TCP当然是首选”,然而,他们完全没有理解为什么在那个特定的游戏中TCP是有效的,为什么UDP不按照顺序发送数据包呢?
那么为什么魔兽世界采用TCP呢?首先我们需要解释这个问题。这个问题其实是“为什么魔兽世界有的时候1000毫秒以上的延迟还能够运行?”这是TCP的性质决定的,在发生丢包的时候,会产生巨大的延迟,因为TCP首先会去检测哪些包发生了丢失,然后重发所有丢失的包,直到他们都被接收到。
可靠的UDP也是有延迟的,但是由于它是在UDP的基础之上建立的通信协议,所以可以通过多种方式来减少延迟,不像TCP,所有的东西都要依赖于TCP协议本身而无法被更改。
就这一点来讲,一些人要开始提到Nagle算法了,实际上它是你在实现任意一个对延迟敏感的TCP模型时首先需要禁止使用的。
那么魔兽世界以及其他的一些游戏是怎么处理延迟问题的呢?
方法也很简单,他们能够隐藏掉延迟带来的影响。
在魔兽世界中,玩家和玩家是无法碰撞的:因为这类碰撞是无法通过一些预测来处理的,但是玩家和环境之间的碰撞却是可以通过预测来处理的,所以这里使用TCP是没有问题的。
我们来看一下魔兽世界的战斗就会发现,玩家的攻击指令发送给服务器的操作是放在比如“attack_entity(entity_id)”或者”cast_spell(entity_id, spell_id)“的接口中来做的,换句话说,瞄准操作是独立于进行的。如此一来,一些类似发起攻击动作和释放技能特效就能够在没有收到服务器确认的情况下就直接执行,比如展现冰冻技能的效果就可以在服务器没有返回数据前在客户端就做出来。
客户端直接开始进行计算而不等待服务端确认是一种典型的隐藏延迟的技术。
几年前,我为一个叫“Five Card Jazz”的纸牌游戏编写过客户端。它使用的是http协议,它比直接的TCP协议连接的延迟更加严重。
我们用简单的纸牌绘制和抽牌的动画来掩盖延迟的问题,所以延迟的问题只在非常糟糕的连接下才会被看出来。这种方法也非常的典型:发送请求的同时开始播放牌桌的动画,一直播放翻动最后一张牌直到接收到了服务端传回来的数据为止。魔兽世界的战斗特效就是使用类似的原理。
这也意味着,我们到底是使用TCP还是UDP取决于我们能否隐藏延迟。
TCP在什么时候失效
一个采用TCP的游戏必须能够处理好突发的延迟问题(纸牌客户端就很典型,对突发性的一秒的延迟,玩家也不会产生什么抱怨)或者是拥有缓解延迟问题的好方法。
但是如果你运行的是一个无法使用任何减缓延迟措施的游戏呢?玩家对玩家的动作类游戏通常就属于这个范畴,但是这也不仅仅限于动作类游戏。
举个例子:
我目前正在写一个多人游戏(War Arcana)。
一种常见的操作是,你快速的移动你的角色通过一张充满战争迷雾的世界地图,但是一旦你探索过,迷雾就会被打开。
为了确保游戏的规则,防止玩家作弊,服务器只能显示玩家当前位置附近的信息。这意味着不像魔兽世界,玩家无法在没有得到服务器响应的情况下,做出完整的动作。和Five Card Jazz相比,我们即使允许500毫秒的延迟,也已经非常困难了。
在实现了游戏的原型后,在局域网内一切都进行的非常顺利,但当我们在WiFi环境下测试时,操作会间歇性的卡起来或者延迟高起来。写了一些测试程序之后发现,WiFi环境下偶尔会发生丢包行为,每当发生丢包的时候,服务器的响应速度就从100-150毫秒上升到毫秒。
没有任何办法可以绕过TCP的这个设置来避开这个问题。
我们替换了TCP的代码,用了自定义的可靠的UDP来实现,把大量的丢包产生的延迟降到了仅仅只有50毫秒,甚至比以前TCP不丢包的情况一个来回的延迟还要小。当然,这只可能建立在UDP之上,这样我们才对可靠性拥有完全的掌控力。
困惑:可靠的UDP只是TCP的一种简单的实现?
你有没有听过这种说法:“可靠的UDP就像TCP一样,所以还是用TCP吧”。
问题是这种说法是错误的。可靠的UDP一点也不像TCP,要去实现一个特殊的阻塞控制。事实上,这也是你使用可靠UDP代替TCP的最大的原因,避免TCP的阻塞控制。
另一个重点是可靠的UDP的可靠性是如何保证的。这里有很多种方法去实现。我非常喜欢Quake3网络库代码里的一些想法,它们也激发了我在War Arcana中使用UDP协议。
你也可以使用许多支持可靠通信的UDP库,当然,这样在可靠性方面,相比自己手动实现全部的代码而言,可能会更加通用而失去了一些性能优势。
那么到底是用UDP还是TCP呢?
如果是由客户端间歇性的发起无状态的查询,并且偶尔发生延迟是可以容忍,那么使用HTTP/HTTPS吧。
如果客户端和服务器都可以独立发包,但是偶尔发生延迟可以容忍(比如:在线的纸牌游戏,许多MMO类的游戏),那么使用TCP长连接吧。
如果客户端和服务器都可以独立发包,而且无法忍受延迟(比如:大多数的多人动作类游戏,一些MMO类游戏),那么使用UDP吧。
这些也应该考虑在内:你的MMO客户端也许首先使用HTTP去获取上一次的更新内容,然后使用UDP跟游戏服务器进行连接。
永远不要害怕去使用最佳的工具来解决问题。
关于作者:
可能感兴趣的话题
不同意作者的观点。tcp的连接数限制有很多方法可以解决。
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线博客团队正试图以我们微薄的力量,把优秀的原创/译文分享给读者,做一个小而精的精选博客,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2016 伯乐在线
赞助云主机 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
游戏服务器端所完成的事(一)
下载积分:800
内容提示:游戏服务器端所完成的事(一)
文档格式:DOC|
浏览次数:2|
上传日期: 06:16:48|
文档星级:
该用户还上传了这些文档
游戏服务器端所完成的事(一)
官方公共微信}

我要回帖

更多关于 游戏服务端下载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信