FIFA游戏感觉某些时候操控没有以前容易操控了可能是为什么总感觉有人控制我原因导致的?

相信每个男生的童年都有那么几款让人难以忘怀的游戏,伴随着一代代男孩的成长,游戏产业不断的繁荣发展,如今已是“门派”众多,纷繁多样。今天我就给大家梳理下当今主流的游戏类别!

游戏可以从很多维度去分类,比如视角类型、游戏内容、技术方案、载体平台等等,今天我们着重分析以下两类:

ACT游戏是RPG游戏与FTG游戏的结合的产物。玩家控制游戏人物用各种武器消灭敌人以过关的游戏,不追求故事情节,如熟悉的《超级玛里》、可爱的《星之卡比》、华丽的《波斯王子》等等。电脑上的动作游戏大多脱胎于早期的街机游戏和动作游戏如《魂斗罗》、《三国志》等,设计主旨是面向普通玩家,以纯粹的娱乐休闲为目的,一般有少部分简单的解谜成份,操作简单,易于上手,紧张刺激,属于“大众化”游戏。
代表作品:《古墓丽影》、《黑暗之魂》、《波斯王子》等。

由玩家控制游戏人物进行虚拟冒险的游戏。与RPG不同的是,AVG的特色是故事情节往往是以完成一个任务或解开某些迷题的形式出现的,而且在游戏过程中刻意强调谜题的重要性。AVG也可再细分为动作类和解迷类两种,动作类AVG可以包含一些格斗或射击成分如《生化危机》系列、《古墓丽影》系列、《恐龙危机》等;而解迷类AVG则纯粹依靠解谜拉动剧情的发展,难度系数较大,代表是超经典的《神秘岛》系列。
代表作品:《刺客信条》、《生化危机》、《鬼泣》等。

由玩家操纵各种角色与电脑或另一玩家所控制的角色进行格斗的游戏。按呈画技术可再分为2D和3D两种,2D格斗游戏有著名的《街霸》系列、《侍魂》系列、《拳皇》系列等;3D格斗游戏如《铁拳》、《高达格斗》等。此类游戏谈不上什么剧情,最多有个简单的场景设定,或背景展示,场景、人物、操控等也比较单一,但操作难度较大,主要依靠玩家迅速的判断和微操作取胜。
代表作品:《拳皇》、《铁拳》、《街霸》、《死或生》、《真人快打》等。

严格来说它是属于动作游戏的一个分支,但和RTS一样,由于其在世界上的迅速风靡,使之展成了一个单独的类型,典型的有DOOM系列、QUAKE系列、《虚幻》、《半条命》、《CS》……不胜枚举。
代表作品:《使命召唤》、《战地》、《CS》等。

由玩家扮演游戏中的一个或数个角色,有完整的故事情节的游戏。玩家可能会与冒险类游戏混淆,其实区分很简单,RPG游戏更强调的是剧情发展和个人体验,一般来说,RPG可分为日式和美式两种,主要区别在于文化背景和战斗方式。日式RPG多采用回合制或半即时制战斗,如《最终幻想》系列,大多国产中文 RPG也可归为日式RPG之列,如大家熟悉的《仙剑》、《剑侠》等;美式RPG如《暗黑破坏神》系列。
代表作品:《仙剑奇侠传》、《诛仙》、《古剑奇谭》、《轩辕剑》等。

本来属于策略游戏SLG的一个分支,但由于其在世界上的迅速风靡,使之慢慢发展成了一个单独的类型,知名度甚至超过了SLG,有点像现在国际足联和国际奥委会的关系。代表作有《魔兽争霸》系列、《帝国时代》系列、《星际争霸》等等。后来,从其上又衍生出了所谓“即时战术游戏”,多以控制一个小队完成任务的方式,突出战术的作用,以《盟军敢死队》为代表。现在比较流行的MOBA游戏也可算在RTS游戏行列。MOBA是Multiplayer Online Battle Arena的缩写,中文译为多人在“线战术竞技游戏”。
代表作品:《星际争霸》、《红色警戒》、《命令与征服》、《王者荣耀》、《DOTA》、《英雄联盟》等。

玩家运用策略与电脑或其它玩家较量,以取得各种形式胜利的游戏,或统一全国,或开拓外星殖民地。策略游戏可分为回合制和即时制两种,回合制策略游戏如大家喜欢的《三国志》系列、《樱花大战》系列;即时制策略游戏如《命令与征服》系列、《帝国》系列、《沙丘》等;后来有些媒体将模拟经营,即SIM (simulation)类游戏,如《模拟人生》、《模拟城市》、《过山车大亨》、《主题公园》等也归为了策略游戏。。
代表作品:《三国志》、《文明》、《英雄无敌》、《模拟人生》等。

由玩家扮演管理者的角色,对游戏中虚拟的现实世界进行经营管理。模拟经营游戏按游戏载体分,主要包括模拟店铺、城市、人等。
代表作品:《夏日课程》、《临时女友》

严格来说,称之为“体育竞技”更为恰当。由玩家扮演一名体育运动员,完成各项跟此体育项目有关的比赛,以获得更高的排名与奖励为目的。
代表作品:《NBA2Kxx》、《实况足球》、《FIFA》等。

Puzzle的原意是指以前用来培养儿童智力的拼图游戏,引申为各类有趣的益智游戏,总的来说适合休闲,最经典的嘛~就是大家耳熟能详的《俄罗斯方块》。
代表作品:《俄罗斯方块》、《找茬》等。

在电脑上模拟各类赛车运动的游戏,通常是在比赛场景下进行,非常讲究图像音效技术,往往是代表电脑游戏的尖端技术。惊险刺激,真实感强,深受车迷喜爱,代表作有《极品飞车》、《山脊赛车》、《摩托英豪》等。另一种说法称之为“Driving Game”。目前,RCG内涵越来越丰富,出现了另一些其他模式的竞速游戏,如赛艇的,赛马等。
代表作品:《极品飞车》、《山脊赛车》、《世界摩托大奖赛》等。

玩家操纵角色通过卡片战斗模式来进行的游戏。丰富的卡片种类使得游戏富于多变化性,给玩家无限的乐趣,代表作有著名的《阴阳师》《炉石传说》《信长的野望》系列、《游戏王》系列,包括卡片网游《武侠Online》,从广意上说《王国之心》也可以归于此类。
代表作品:《阴阳师》、《炉石传说》、《游戏王》等。

顾名思义,是从以前的桌面游戏脱胎到电脑上的游戏,如各类强手棋(即掷骰子决定移动格数的游戏),经典的如《大富翁》系列;棋牌类游戏也属于TAB,如《拖拉机》、《红心大战》、《麻将》等等。
代表作品:《大富翁》、《红心大战》等。

培养玩家音乐敏感性,增强音乐感知的游戏。伴随美妙的音乐,有的要求玩家翩翩起舞,有的要求玩家手指体操,例如大家都熟悉的跳舞机,就是个典型。
代表作品:《劲乐团》、《吉他英雄》、《节奏大师》等。

视角:即玩家在进行游戏时,在玩家眼中呈现的视觉效果状态。这个视角通常是在游戏立项时确定的,根据游戏引擎摄像机的位置、高度、角度确认游戏主视角。

定义:2D游戏是指二维交互式动画·也就是我们通常所说的“2D动画”。只不过在游戏方面,这种动画可以根据用户的需求而进行互动。
a) 贴图:传统的2D游戏中的美术资源(人物行走、人物状态、地图等等)都是以png或jpg的图形文件渲染而成.而3d游戏中的美术资源多数是以模型为主。
b) 视角:2D游戏是没办法完成视角转换的.因为2d游戏的美术资源是平面图.即某种美术资源的前、后、左、右不能够同时出现在游戏里.但3d游戏却可以完成视角转换。
c) 渲染:2D游戏的所有美术资源可以不经过引擎的渲染就能使用,但3d游戏的任何美术资源都必须经过引擎的渲染才能使用。
代表作品:《问道》、《大话西游》、《地下城勇士》等。

定义:2.5D又俗称伪3D,是一种结合了3D与2D的图形技术,通常被用于游戏图形渲染中,也就是我们所说的游戏画面。大多数2.5D游戏都会采用2D场景+3D人物+3D特效方式来实现。2.5D的游戏概念,解决了2D画面表现不足,3D画面有很多人晕的情况,在画面表现与受众中找到了一个完美的平衡。一般2.5D游戏,视角是不可以左右、上下旋转的,只能够将游戏摄像机,推远、拉近。
代表作品:《奇迹MU》、《倩女幽魂》、《梦想世界》等。

定义:3D中的D是Dimension(维)的缩写。三维游戏中的点的位置由三个坐标决定的(x,y,z)。客观存在的现实空间就是三维空间,具有长、宽、高三种度量。三维游戏(3D游戏又称立体游戏)是相对于二维游戏(2D游戏又称平面游戏)而言的,因其采用了立体空间坐标的概念,所以更显真实,而且对空间操作的随意性也较强。也更容易吸引人。
代表作品:《生化危机》、《侠盗飞车》、《CS》等。

4. 第一人称视角游戏
定义:第一人称游戏因为是以主角的视野进行观看,所以对于一些游戏中细节的东西看的更清楚,而且第一人称游戏的代入感也很强。通常这类游戏为FPS系列的。
代表作品:《战地》、《使命召唤》、《半条命》、《狙击手》等。

5. 第三人称视角游戏
定义:是最原始的游戏类型,这种游戏是玩家以旁观者的视角观察场景与主角的动作的。而这种视角因为通常处于玩家所控制的游戏单位的上方,所以第三人称游戏也被称为“上帝视角”。
因为第三人称游戏不仅能看到玩家所控制的单位,还能看到很广阔的单位周围的环境,所以第三人称游戏可以使玩家对单位的操控进行更早的安排。因此第三人称游戏模式通常被战略游戏(RTS)所采用。
同样流行于FPS系列游戏,以及大部分3D角色扮演游戏。 狭义的TPS是指第三人称射击游戏,与第一人称射击游戏的区别在于第一人称射击游戏里屏幕上显示的只有主角的视野,而第三人称射击游戏中主角在游戏屏幕上是可见的。
代表作品:《死亡空间》、《幽灵行动》、《全境封锁》等。

定义:平面视角,可以看到角色所有行为,根据行动,拉动地图。也是最早的一种游戏表现形式。
代表作品:《魂斗罗》、《超级玛丽》、《QQ三国》、《冒险岛》等。

本次文章码字仓促,有一些游戏类别并没有包含在文章内,以后有时间继续补足!希望通过这篇文章,让大家对游戏的“门派”有更深一步的概念,可以更好的理解游戏,不只玩个“热闹”也能玩出个“门道”。

部分文章和图片来自网络,如有侵权,请告知删除。

  • 游戏产业发展至今,市面上各类游戏层出不穷,可能你最爱玩的游戏你都分不清到底是什么类型的。 这篇文章,带你多唯独去解...

  • 电子游戏类型大多数是在发展过程中约定俗成,并没有一个非常明确的标准。一般电子游戏可以从载体上分为五种:家用游戏机(...

  • 枣红色 上面布满斑驳的皱纹 四十开头的年纪 竟然拥有一双八十岁的手 你是洗了多少次的衣服 做了多少次的饭 受到了多...

  • 很早以前,看到到一个故事,第一次我就满满的感动。 想象着它的画面,就十分美好。今天小白的我,就用简笔画,画出我脑海...

}

  育碧公布了一款全新的极限运动游戏《STEEP》,在这款游戏中,玩家可以进行滑雪、跳伞、滑翔等多种极限运动,在游戏中体验不一样的人生。该游戏将于今年12月与大家见面,登陆PC/Xbox One/PS4平台。

更新时间: 大小:16GB

十码大战(世界版)橄榄球大赛,一款经典的街机游戏~

更新时间: 大小:21MB

野蛮踏板车竞速赛2006游戏,新一代Invictus引擎再加上全新实时物理模块,将使玩家感受前所未有的高速驾车的极品快感。野蛮踏板车竞速赛2006里面包含了一般路面及越野路面的竞赛,拥有足以让玩家沈浸在体验赛车乐趣的先进物理系统及细致图形表现,游戏中有六个不同的关卡环境和超过60条以上的赛道,从冰山地区到沙漠地带,从山间小路到海滩,玩家可以自行设计及调校车子的性能,利用结合实时物理模型的新一代Invictus引擎,可以使玩家感受在开阔地区的骤加速、骤减速的颤抖,车辆遭受到撞击时,也会呈现出真实的损坏情形,同时也使用到许多图形技术,例如凹凸贴图、动态反射、高动态范围成像等技术;玩家可选择非线性的单人生涯竞赛模式或是从众多的多人竞赛模式里挑一种比赛方式来挑战。

更新时间: 大小:136MB

  <劲爆极限滑雪>是由Infogrames为迎接千禧年而推出的一款极限运动模拟游戏,她不仅是世界上第一款极限滑雪模拟游戏,同时也是目前唯一的一款极限滑雪模拟游戏.该游戏融合了曾经在PS上销售达300万的极限滑雪模拟游戏系列的游戏性,和同样在N64上销售达150万的极限滑雪模拟游戏<1080°>的操控性,同时还具备了这两款游戏所不可能具备的PC游戏的特性,如真实高清晰的画面,眼花缭乱的光影效果,动感的音乐,最新的3维技术等等.该游戏还未推出,便被国外一些知名游戏网站评为99年E3首席体育游戏提名.   游戏的制作组Housemarque多年来一直致力于街机游戏的设计,因而他们把街机游戏刺激、兴奋、简捷等特点带入到这款PC游戏中.如果你追求那种风驰电掣般的速度感,那么游戏的速度赛将最大限度地满足你.不知你是否想象得到,在阿尔卑斯山脉那充满了急速下降、危险悬崖和突如其来的急转弯的狭窄雪道中翘首前行时,在丛林里那覆盖着薄冰的地面上穿过密布的树桩和黑洞洞的隧道时,在村镇中铺满着厚厚积雪的屋顶上掠过,滑上台阶边的扶手,把横在路边阻挡你前进的卡车远远地抛在后面时,那种无时无刻不洋溢在你身边的兴奋和刺激的感觉.   如果你不适应速度赛时的紧张心情,更向往一些轻松的、更具观赏性的比赛项目,那么空中花样赛和极限滑雪特有的半管赛将会把这项运动的全部魅力展现给你.当你从一个又陡又长的雪坡上急速滑下,掌握好时机利用最后的跳台,在飞跃那深不见底的悬崖的一瞬间,舒展自己的四肢,做出让人眼花缭乱的1080°旋转和各种不可思议的抓板动作(结合起来共有16大类具有具际命名的动作组合),用自己的身体语言去表现对大自然的热爱时,你会有什么感受?当你在半管赛道那类似切成了一半的大管道的底部,以钟摆似的运动方式前进,并利用管道两边的坡度跳跃到空中,吹着口哨做出各种花哨时髦的动作时,我相信你的热血一定在沸腾, 你的运动神经一定在跳动.   现在,如果你开始怀疑这款游戏可能会和那些赛车游戏一样,需要半个键盘的键位才能控制好的话,请不要忘记街机的操作简单、上手容易同样是这款游戏的最大特点之一.事实上只需要4个方向键和3个控制键,你就可以做出你所能想象的全部特技滑雪动作.也正是因为这款游戏具备了PS上销量达3000000的"Coolboar ders"系列的游戏性,和N64上销量达1500000的<1080°>的操控性,SEGA公司才同意这款游戏与一起成为目前DreamCast上仅有的两款极限滑雪游戏之一.   游戏的乐趣只能在亲身玩过之后才能充分体会到,而游戏第一眼能让你感受到的则是它惊人的画面效果.虽然游戏需要PⅡ233和3D加速卡才能表现出那种漂亮的画面,但这种配置要求是完全值得的.游戏提供了包括白天、黄昏、夜晚和阴 天在内的4种光影效果和包括晴天、雾天、雪天在内的3种天气效果.如果你没有在晴空万里下运动的习惯,那么在夕阳西下的黄昏和寂静的夜晚也是相当不错的选择.在这时,你感受到的将不仅仅是运动的喜悦,更多的则是对那些在夕阳时分朦胧的光晕下,或者是深夜里蓝色、白色、红色等各种灯火交织中,所能看到的独特、美丽的自然风景的惊叹.而这些完全是由电脑即时演算出来的光影效果.   漂亮的效果需要以真实的画面为衬托,令人欣慰的是<劲爆极限滑雪>做到了这一点.每屏400000个多边形把游戏中的所有物体都表现得栩栩如生.不仅是所有的物体,包括滑雪板滑过后的滑痕和后面扬起的一层雪雾都清晰可见.而且游戏中所有可供选择的角色都采用了人物骨骼模型,如果你观察仔细,可以看到当他们滑行时,无论是蹲下、跳跃、转弯还是作空中花样、甚至于不慎摔倒时,动作都十分和谐自然.说到这里,我想插着介绍一下游戏中可供选择的六个人物.他们当中有身体轻盈、动作灵活的日本女性Akiko;技术一流的瑞典女性Ulrika;下坡时具 有魔鬼般速度的英国男子Keith;曾经是体操运动员的法国男子Vincent;同时爱好极限滑冰和极限滑雪的美国小孩Mike;以及极限滑雪运动的元老级人物——德国的Karl.由于他们的身高、体重和力量个不相同,擅长的技术也不尽相同,所以在进行不同的比赛时,适当的选取人物,再配合游戏提供的十余种在转弯、速度和弹性上完全不同的真正的国际名牌滑雪板,你就能获得意想不到的效果.   <劲爆极限滑雪>另外一个可圈可点的地方则是它的音效和音乐.首先说一说游戏的音效,大家都知道,物体在雪面上摩擦与冰面上摩擦所发出的声音是完全不同的,而且一般来说雪的形态还有两种,一种雪花大,堆积在地面十分松软; 另一种状似小颗粒,落在地面如同粉尘一般.滑雪板在这些地面上滑行时发出的声音是完全不同的.而且即使在同样的地面,滑行速度的不同,发出的声音也不会相同.游戏中把这些声音都真实地表现了出来,如果你是一名真正的高手,只需要听声音便可以知道自己的速度如何.   同真实的音效相对应的是更加出色的音乐,极限滑雪运动是一项年轻人的运动,如果你经常看体育台的电视节目,就会发现所有这类运动的表演都配的是动感、刺激的音乐,<劲爆极限滑雪>同样如此.包括电子乐、说唱乐和非主流摇滚在内的多首节奏快、现代感强的音乐,将把这种刺激、激烈的运动气氛烘托至极至.   我还想说的是游戏的人工智能.同我熟悉的那些赛车类游戏完全不同,< 劲爆极限滑雪>中的电脑对手聪明、有技术,但也会犯错,同时绝对不会作弊,那种一人遥遥领先,其他人故意同你纠缠在一起的情况是肯定看不到的.<劲爆极限滑雪>中每一条赛道都超过两英里长,滑雪场面超过4000000平方米,与现实情况一样的是,游戏中每条赛道都有无数的路径可以通向终点,那些电脑对手都会选取各自喜爱的道路,分道扬镳.同样,你甚至可以从赛道的围栏外滑向终点,唯一的限制是必须滑行在地上有雪的地方.我在这可以告诉大家一个小秘密,如果你滑的时间长了,很可能会发现一些连电脑都不知道的捷径.   说了这么多,我差点忘了提游戏提供的比赛模式.<劲爆极限滑雪>提供了包括街机模拟、锦标赛模式、表演赛模式和训练赛模式在内的4种游戏模式.在这里最重要的是锦标赛模式,因为只有在这里晋升到相当的水平,所有难度列为最难,但却是最好玩的赛道才会出现,当然要想让所有漂亮的滑雪板都出现的话,这也是唯一的方法.   游戏的表演赛模式是专门进行空中花样赛和半管赛地方(当然在街机模式 中也有).这两种比赛都是要被评分的,其中空中花样赛要根据你跳跃的高度和所做出的花样动作的难度进行评分,笔者所得的最高分是18.98分,所做的动作是"10 80°Double flick Frontside Shifty".   半管赛要相对复杂一些,评分的标准有4项,包括非转动部分得分、转动部分得分、跳跃高度分和技巧分,笔者这项比赛不甚擅长,得分么,就不说了.另外,该游戏支持最多8个人进行速度赛.   总的来说,这款游戏无论从画面、声音还是游戏性来看,都是相当值得一玩的游戏.实际上,它也是目前PC上第一款,也是目前唯一的一款极限滑雪模拟游戏.如果你想体验一下什么是已经列入了冬季奥运会比赛项目的极限滑雪运动,那么这款游戏将是你最佳的选择.

更新时间: 大小:175MB

由足球巨星C罗代言的《FIFA2018》正式发售,本作是足球体育游戏《FIFA》系列的最新作品,将登陆PC、PS4、Xbox One、Switch等平台。游戏采用寒霜3引擎制作,除了保留该系列的特色玩法,还加入许多新特性,包括新的终极团队、故事模式、小队对战等,玩家可以体验到球星的不同时期生涯,可以参加单人竞技,和其他玩家对战,并且可以获得丰厚的奖励。

《FIFA2018》将会引入“传奇球星”作为多平台的招牌(Icons),根据EA的信息,招牌将会在各平台推出,首个巴西传奇球星将为罗纳尔多。更多FUT终极队伍招牌还会在今年夏季推出。

游戏将分成三个版本,标准版、罗纳尔多版、以及招牌版。罗纳尔多版将包含提前3天享受游戏的福利,而招牌版将会提供一些附加的FUT内容(以租借球员的形式),该版本也可以享受提前三天游戏。

在“旅途:亨特归来”中的主角依然是去年故事模式的亚历克斯·亨特,在新的赛季中,他面临着一系列艰难的抉择。拜仁、马竞和大巴黎都抢着要他。亨特必须做一个他职业生涯中最重要的决定来作为他最新故事的开篇。

而在这个模式中,还有不少足坛大腕参演,比如C罗、格里兹曼、穆勒、亨利大帝和里奥·费迪南德等人。而且NBA全明星后卫詹姆斯·哈登也将跨界演出。

DRI :盘带 PAC/SPD:步速/速度 SHO:射门 DEF:防守 PAS:传球 PHY:体能 DIV:扑救能力(属性越高扑救范围越广) REF:反应能力 HAN:手控球能力(属性越高越不会脱手) KIC:大脚开球能力:影响门将开球的力量和准度以及反击中寻找前场球员的能力。 POS:站位能力:属性越高,门将越不容易失去位置。

在《FIFA2018》中,玩家可使用的球场名单增加了四座新授权球场。看看马德里竞技可容纳60,000人的新主场万达大都会球场。前往洛杉矶银河的出色主场家得宝中心球场。感受一下刚升上英超的哈德斯菲尔德和布莱顿,他们各自的主场约翰·史密斯体育场和美国运通社区球场的气氛。上述的球场都是首次在FIFA中登场。

2、使用Win 7系统的玩家若运行游戏后出现“黑屏闪退”的状况,请安装游戏根目录下的“Windows6.1-KB.msu”补丁!

  《实况足球2010》由Konami东京,也就是前身为KCET的工作室进行开发,算是正宗嫡传,系列一直以来的制作人高冢新吾现在就在那里供职。而之前的实况足球2008和实况足球2009,大部分工作都是由Konami上海来完成的,至于说为什么这一作会改由东京本部“亲自”进行制作,说法有很多种,有一种说法就是“这本来就是在计划当中的”,前几作的引擎并不是“次世代级别的”,仅仅只是PS2版的HD化而已,现在新的游戏引擎已经准备就绪,当然就要由主力部队再对系列进行一次革新了。就目前看来,这个系列的确需要一些新的刺激来完成次世代足球游戏的革命,而这一切发生在2010这个世界杯年,就实在是再适合不过了――我们都知道,世界杯年的足球游戏的销量向来都是非常之好的。   1.可玩性:   增强对抗真实性,持续考验玩家;更智能的区域防守会覆盖所有空档,玩家需要不断寻找新的进攻方式;守门员的能力会更强,具备当今一流门神的能力;裁判也进行了重新加工,AI更高,在比赛中会做出更平衡的判罚。   2.动作:   停球、带球和射门无缝衔接、一气呵成;引入更多个性化控球动作,包括新的假动作;球员在站立传球和跑动传球之间有明显的节奏区别。   3.现场氛围:   球迷反映方式更加多种多样,包括全新的欢呼声;主客场比赛气氛明显不同;球迷会根据比赛具体情况做出不同的回应;解说更简单明了。   4.球员:   球员独特的进攻和防守属性将成为其踢球方式的一部分,每位球员都会根据各自能力拥有独特的AI,并在团队配合中反应出来,比如假如某位球员传球精准,那么会有更多队友跑到对方禁区内等待接应,类似地,如果某球员贴身控球技术非常好,对方后卫会更注意其擅长突破方向。   5.策略:   新的球员能力衡量系统,使玩家可以在赛前更快、更宽泛地制定平衡策略;传球精度、带球动作、后防线、中场控制范围、锋线位置等元素都可以更改,以匹配特定俱乐部,比如尤文图斯防守反击非常犀利,巴塞罗那会充分利用场地宽度发起进攻,这些都可以随时更改,并会受到主客场环境的影响。

更新时间: 大小:4GB

旋转台球 这是一个第一流的台球游戏。 旋转台球你可以和一位朋友进行台球对抗或和计算机进行8-球,9-球等台球比赛。 旋转台球游戏可以使用反转撞球等高级台球技巧, 游戏包括9种模式,足够满足玩家的游戏需求。

更新时间: 大小:7MB

《FIFA13》为EA主打的系列足球游戏《FIFA》的延续之作。相较于前作《FIFA12》又有了诸多改进。完善了球员碰撞系统,停球和战术任意球也进行了改善。本作将拥有完整的运球盘带系统和更具攻击性的AI。除此以外,《FIFA13》还将具备超过500家授权俱乐部与15000多名球员,从而保证了游戏的真实性。

更新时间: 大小:6.4GB

  在最新一集的《实况足球 5(Pro Evolution Soccer 5)》中,制作者为我们展示了更加贴近真实的足球游戏,完美的触球设计,更多的细节表现是制作人Takaska和他的团队津津乐道的话题,一直称霸足球游戏领域的实况系列又有了新鲜的血液。   《WE》系列首次使用双代言人,分别是日本国家队教练 Zico以及日本球员 中村俊辅.英格兰国家队队员,切尔西足球俱乐部队长,PFA(职业球员协会)2005年度英超最佳球员约翰特里已经确定成为该作的欧洲代言人。   新追加的游戏要素:   1,增加了下雪天气,可以清楚的看见严寒下球员的呼气动作,这让游戏更贴近现实~   2,新增的 “日本Challenge: Go for 2006”“日本挑战赛~Go for 2006~”是为日本玩家准备的游戏模式,目标是率领日本队获得世界杯冠军。首先是率领日本代表队参加亚洲杯挑战赛获得进入世界杯的资格,玩家可以选择的选手合计为18人。   3,Konami改良了网络引擎使得对战更加流畅,玩家可以对战 Master League 模式。对于大多数玩家来说这无疑是最大的好消息.   4,新位置wing back 以及 second top增加,前者是侧重于放手的边路球员,性质属于边锋和边前卫之间的那种~后者就是大家常说的9号半~比如巴乔那样的球员~   5本次美版对意大利、西班牙和丹麦的俱乐部队的资料有更大的完善,切尔西、阿森纳、格拉斯哥流浪者、凯尔特人、FC哥本哈根、基辅迪那摩等球队都重新制作了球员的资料。   6,Master League球队的完全名单实现.7,PS2版本的训练模式中追加了可以升级的生长系统,对战比赛的结果可以保存到“比赛记忆”中,累计战绩、胜出率等记录可以保存20人份。

更新时间: 大小:825MB

【基本介绍】 《FIFA15》是由EA Sports制作并发行的一款类体育游戏。作为经典的足球系列巨头之一几年来《FIFA》所赢得的玩家市场已经渐渐的超越了曾经的王者实况系列。本作是该系列的第15部作品,PC版将拥有与次世代家用主机PS4与XBOX ONE完全相同的游戏功能,玩家们终于不用在忍受阉割版游戏和落后与时代的引擎体验一场全新的次世代狂潮。 PC版《FIFA 15》将会拥有与PS4和Xbox One版本完全一样的功能。这意味着PC玩家们将不再需要忍受上世代的画面,可以享受和次世代一样的游戏体验!游戏组大的亮点就是球员的情绪设定,并且会受到误判、传球失误、射偏球门等一系列的糟糕表现的影响。游戏也大幅提升,甚至连球员高速跑动时,脚底蹭出来的星碎草皮也能够看得非常清楚。在游戏的操作性上,球员的控制、球路的选择、战术的都有了相应的调整。

更新时间: 大小:17.6GB

《实况足球2015》是经典足球游戏实况足球系列的最新最新作,Konami在本届E3上给我们带来了《实况足球2015》的一个前瞻预告。现在《实况足球2015》正式公开,官方表示游戏将登陆PC、PS4、Xbox One、PS3和Xbox 360五大平台。

早在今年年初Konami就表示新一代的《实况足球2015》将会迎来全面改革,负责人真嗣平野当时称:“我们知道之前的错误,我们正在改正这些错误。下一个版本将会完全不同。2014年是系列改变的重要一年,所以敬请广大玩家期待下一部作品。”

本作采用了与《合金装备5:幻痛》相同的FOX引擎制作,画面出色。

采用全新的射门系统,更多的传球选项,更丰富的球员动作模式,更新的动画。

加强的观众人群动画和最佳的比赛环境,还有微交易系统。

win8/8.1用户无法进入游戏的请使用修正破解补丁

若玩家运行游戏时出现如图所示的错误提示,那是因为电脑显卡未达到游戏开启高画质的要求,但仍可使用中画质或低画质进行游戏,请直接点击“忽略”即可正常游戏。

《实况足球2014:决战世界杯》中文版:整合了全新的“国际杯(International Cup)”赛事,玩家在这个模式中可以带领自己的队伍或者球员去冲击最高的荣耀。

《实况足球2014》中文版:游戏首次更换为小岛工作室出品的Fox引擎改良版,会让现代和次世代《实况足球》游戏都得到画质的改善和“重心物理”效果的提升,这一效果会给玩家提供“更真实的平衡重心”和更棒的物理效果。同时在比赛战术管理方面新一代《实况足球》也将做出诸多改进。

《实况足球2011》中文解说版:本作集成了詹俊中文解说补丁以及wecn1.0大补,汉化各方面已经算得上完美,尤其是对于解说员这方面,相信它绝对是实况迷所期待的。

《实况足球2015》终于回归了以前的操作手感,游戏的AI也有相当的提高,游戏性可以说非常出色,不过画面有些缩水,多少有些美中不足。对于实况足球系列的老玩家来说本作不容错过。

更新时间: 大小:5.91MB

DS&#8482;、PSP&reg;和行动装置多种版本。 《FIFA 11》藉由全新的「个性+」机制,让游戏中的每位球员以及每个攻守位置更佳逼真,无论在有无持球的情况下。 「个性+」将使每位球员的能力充分反映在比赛之中,让每位球员的差异性有更清楚的分野。《FIFA 11》的创新『个性+』机制,大幅提升了球员之间的差异性,透过把现实球员在场上的能力忠实地反映在我们的游戏之中,创造出每位球员的独特个性,」执行制作人卡兹.马其塔(Kaz Makita)表示:「我们的游戏引擎已达十分精细复杂的水准,令我们游戏中的虚拟球员的行为和表现与本尊无异。

更新时间: 大小:5.4GB

一款很老的街机足球游戏。

更新时间: 大小:11MB

  《赛道狂飙 国家永恒》(TrackMania Nations Forever)是由Nadeo公司制作的享誉全球的赛车类游戏赛道狂飙的2008年的最新成员。游戏除了有精美的画面、简单优秀的操作和高度自由极富激情的急速体验之外,还允许玩家使用自己喜欢的音乐、标签,甚至支持玩家自己制作的车辆模型。   同时游戏提供了强大的赛道编辑器,视频编辑器,让玩家可以随心所欲创造自己的赛道,游戏视频,免费和全球91个国家不同肤色的朋友们一起通过互联网分享与众不同的乐趣,单独房间在线人数就达到了上百人,是目前唯一做到世界91个国家同场竞技的赛车游戏。而且,除了游戏本身所提供的赛道之外,连上互联网的玩家,将会拥有一个完全不同的游戏体验。那里有数以千万计的自制赛道,还有各式各样的赛车模型,当然少不了个性化的图案标签。TMNF继承了TM系列所有的优点,在图像和操作上为比赛做了更多的优化。   由于是为比赛专门制作的游戏版本,因此游戏着重于让玩家在互联网上体验对战的乐趣,在本地游戏方面做了一定程度的精简。TMN在本地游戏时仅仅提供了简单的训练模式让玩家适应游戏的操作和赛道,为联网游戏打下基础。可喜的是,作为游戏最吸引人的赛道编辑器和赛车涂装部分并没有被精简掉。玩家依然可以自己创作赛道,又或者像《极品飞车》一样将赛车涂装得更炫更酷。当玩家连入互联网的时候,就可以呈现给其他玩家一个完全不同的自己。甚至而且此游戏还支持红蓝3D立体眼镜,在网上花几块钱就可以买到这种眼镜.

更新时间: 大小:472MB

篮球题材的游戏相信绝大多数人都会感兴趣,那么就不要错失了这款由2K公司带来的《NBA2K欢乐竞技场2(NBA 2K Playgrounds 2)》,该作具备十分精致的场景设计,玩家们将操控各个知名的球星在球场上进行热血地竞技,灵活地操作将决定着最终的胜利归属,同时流畅的动作设计以及酷炫的特技动作绝对不会让诸位失望,所以感兴趣的朋友们抓紧时间下载吧!

《NBA 2K欢乐竞技场2》的封面星光熠熠,由名人堂Julius “Dr. J” Erving,NBA总决赛冠军成员Kevin Garnett,NBA全明星球员Karl-Anthony Towns和凯尔特人新星Jayson Tatum一起为大家呈现。本作进一步丰富了全新的球星阵容,竞技场地和标志性动作。在上市时,NBA 2K欢乐竞技场2会推出超过300名球星,包括新加入的传奇球星Michael Jordan, Kobe Bryant, 和Kareem Abdul-Jabbar,其中将近200多名新加入的球员将会在后续的更新中推出。本作将发布全球范围内10个全新的竞技场地,地点包括华盛顿,圣路易斯,首尔和澳大利亚。发售后,还会有额外的场地将会在后续更新中发布。

《NBA 2K欢乐竞技场2》发售日公布 登陆PC,PS4,XB1,Switch 此外,本作将推出超过100个标志性动作,包括Michael Jordan的罚球线起跳灌篮,George Gervin的冰人挑篮和LeBron James的单人空中接力。同时,本作将会提供众多全新的自定义物品,包括夹克,衬衣,裤子,短裤和球鞋。此外,NBA

《NBA 2K欢乐竞技场2》还推出了各种各种的游玩方式,诸如单机模式,和朋友畅玩模式,以及挑战全世界模式。欢乐竞技场冠军赛模式将带来一个全球排位的联赛,其中包括单人竞技和合作竞技。全新单人赛季模式将会让您领导一个团队去征战常规赛和季后赛。同时,本作提升了服务器的质量,并带来4人在线对战模式,合作对抗电脑模式,三分球大赛,自定义比赛以及更多其他好玩的模式等待您来发现!

刺激的游戏模式 全新赛季与竞技场冠军模式等功能火爆登场,带来史无前例的街头篮球体验!在本地2对2比赛中与好友激战,或在优化配对的在线比赛中4人酣战,三分斗牛更是必不可少。

庞大的球员阵容 本作囊括400多位NBA球员,从迈克尔·乔丹、科比·布莱恩特和朱利叶斯·欧文等名宿到卡尔·安东尼·唐斯、杰森·塔图姆和本·西蒙斯这样的当红球星,可谓应有尽有。全新球员建模与招牌球员动画将为玩家带来别具一格的感受。

全新的竞技场 舞动步伐,在全世界10座全新竞技球场中崭露头角。 在加利福尼亚的阳光沙滩中飞身灌篮,在首尔的绚丽霓虹下秀出技巧,亦或是前往澳洲内陆一决高下。

整体操作和2k传统游戏比较类似,画面卡通风格,还有各种大招释放,和之前的一款EA街头足球风格类似。缺点的话暂时和第一代一样,就是线上对战几乎是一个不存在的功能,可以当作单机游戏玩。推荐!

《NBA游乐场》:游戏由NBA官方授权,收录了大量现役和退役球星,比如保罗、詹姆斯、奥尼尔、张伯伦等,玩家可以为每个球员学习不同的投篮姿势。

更新时间: 大小:5.37MB

  《台球国度》可谓是当年台球游戏中王者般的存在,富有趣味性的射击以及强悍的画面表现绝对是台球游戏爱好者的不二选择。

更新时间: 大小:2.9GB

这个游戏是由赛车爱好者自行开发的,游戏的专业程度很高,不论是驾驶的感觉,游戏的设定和功能,还是对车辆的调教选项,以至于网络都做的非常出色。游戏的画面效果也很突出,做的非常细腻,同时还可以轻松更换/制作自己喜欢的车身贴图。

更新时间: 大小:117MB

取材自美国着名“HotImportNights改装车展”的《极品醉车2激情之夜》,将在系列前作基础上增加新的漂移驾驶特性、全新赛道和以及数量超乎想象的丰富车辆改装选项,改装用的零部件的种类和数量都将比前作有大幅度提高。另外值得一提的是,本作还设有一个特殊的赛手DNA系统,游戏可以自动记录玩家在比赛中的驾驶习惯和特点,创建虚拟的赛车手档案并用以在网络上交流和分享。2004年,THQ在与包括EA、Take-Two和Namco在内的多家大型游戏开发商的竞争后,终于收购了《极品醉车》系列的开发商JuiceGames公司并最终获得了游戏的开发和发行权,而本作则是THQ在获得该系列开发权后的第二款续作。

更新时间: 大小:3.4GB

随着几代游戏的发展,作为足球游戏巨头之一的FIFA系列越来越受欢迎,可以说其人气已经在实况之上了,现在PC版《FIFA 15》也来了,并且PC版《FIFA 15》将会拥有与PS4和Xbox One版本完全一样的功能。这意味着PC玩家们将不再需要忍受上世代的画面,可以享受和次世代一样的游戏体验!

《FIFA 15》是一款EA出品的足球运动游戏,这是该系列的第15部作品。游戏使用了《UFC》所使用的EA的Ignite引擎。FIFA画面迎来了真正革新,球员的全身细节、动作以及物理破坏效果都相当到位。

这次的《FIFA 15》依然把拟真作为主体,拥有最真实的球员,真实的动作最真实的球场。在游戏中,雨天铲球会留下痕迹,击中角旗旗子会晃动,击中横梁整个球门也会颤动,真实的设计才能给玩家带来最纯粹的足球体验!

本游戏是Ultimate Team版本,包含以下内容:

S:高传、横传、头槌。

鼠标左键:射门、凌空抽射、头槌。

鼠标右键:短传、头槌。

左Shift键:球员跑动调整按钮。

鼠标移动:速度控制、冲刺、队友状态。

从之前的试玩版中我们也可得知,《FIFA 15》游戏的画面和细节的表现要比前作更加好,光影效果更佳出色,操作感觉也有一定的提升。但是球员的动作依旧有些僵硬,改善有限。虽然是使用次世代的引擎,但似乎没有想象的给力。虽然整体上仍有不足,但还是不会妨碍《FIFA 15》在玩家心目中的地位。

EA给玩家们带来了《FIFA》系列的最新作品《FIFA 19》。游戏把大家带到了热血澎湃的足球场上,同时来到现场的还有欧冠的奖杯。游戏中的生涯模式和终极球队都可以玩到冠军联赛,前作的终极球队模式回归,同时玩家可以组建自己的梦之队。有兴趣的小伙伴快来游迅网下载体验吧。

相比《FIFA18》,《FIFA19》更强调精确控球与紧密的传接配合。你的传球不再像前作那样快速而精准,就算摇杆按对了方向,根据球员的能力大小以及赛场状况,传球结果也会有很大的变数。尤其当局面胶着和拼抢激烈时,传球成功率便会大打折扣,而非像曾经那样可以屡屡上演“巴萨式”地面捣脚,然后将球送进对方大门。

本作加强了足球惯性,停球也比前几作困难不少。除非你面对被完全碾压的球队,不然正对拿球永远不是什么明智的选择。选择合理安全的出球线路,可以让皮球在你脚下待得更久。由于本作的传接球没有《FIFA18》那样精确制导,面对密集防守以及人盯人这种情况,你更多只能选择高速地滚球以及高球来帮助自己的球员突围。

《FIFA 19》在它惯有的优势上稳扎稳打,并且不断将更真实更完美的赛事体验带给屏幕前的各位。本作做出了大量改动,有不少肉眼可见且意义非凡。整体而言,《FIFA19》可以说是近年来的集大成之作,在赛事直播上的代入感足以让人痴迷与沉浸。

《FIFA 15》中文版:随着几代游戏的发展,作为足球游戏巨头之一的FIFA系列越来越受欢迎,可以说其人气已经在实况之上了,现在PC版《FIFA 15》也来了,并且PC版《FIFA 15》将会拥有与PS4和Xbox One版本完全一样的功能。

《FIFA 16》中文版:作为年度大作,EA的FIFA系列一直都具备了极高的人气,是球迷们非常喜爱的作品。现在,最新作《FIFA 16》也将要来了,游戏的基础技术和内容并不会有核心的改变。

《FIFA 17》中文版:游戏在个性化、代入感和竞技性方面都有了很大的提升,同时还加入了许多全新的元素。同时全新的故事模式,玩家能体验到更加精彩的剧情。

《FIFA 18》中文版:这是由EA Sports开发的系列足球游戏的最新作品。作为一年一度的足球大作,《FIFA 18》继承前作的基础技术和核心内容,加入更多的俱乐部和球星,在细节方面进行更好的优化,并且还会有故事。

}

其实后来看了一下,原作者也是摘自《2018腾讯移动游戏技术评审标准与实践案例》

    游戏中存在跨服战等需求,将一些队伍组成固定规模战团,然后战团之间战斗,战团匹配过程应当尽量高效、快速,同时实现战力均衡。为了实现尽可能公平均衡的战团匹配,直观的做法当然是搜索所有队伍组成固定规模的战团,然而其时间复杂度为指数级,以极高的计算代价换取最优匹配显然是不现实的,因此,战团匹配问题也成为制约服务器性能瓶颈问题。
  为此,本文利用压桶法实现了快速组成固定规模为K的战团,在尽量保证匹配战团的战力均衡前提下,将战团匹配的时间复杂度降为O(n)。具体上,当有玩家或队伍(实际中,队伍人数为1到5)申请组成战团时,将其加入队列尾部。然后在游戏的心跳中遍历队列,如果当前遍历的玩家或队伍的人数加上桶里的人数小于等于K,则将当前玩家或队伍加入桶,并从队列中删除;否则新建一个桶,将玩家或队伍加入新桶中。在战团匹配时,找出所有人数为K的桶,将桶里所有玩家的战力值的和设为对应桶的权重值,并以此对所有的满的桶进行排序,每次选择战力值最接近的两个战团进行战力均衡的调整,然后传送到战斗服务器进行战斗。
然而,由于压桶法是为了节省时间而选择的贪心算法,可能会遗漏能组成战团的玩家或队伍,因此在压桶法后,本文采用查表法对剩余的玩家和队伍再次尝试组成固定规模的战团。首先在服务器启动时做些预处理,群举所有能组成两个固定规模战团的组合(队伍人数为一的队伍数目,队伍人数为二的队伍数目,...,队伍人数为五的队伍数目),并存在set里,该步骤是全局唯一的,并且只需要做一次。然后统计剩下的玩家和队伍,计算人数为一、二、...、五的队伍数目。如果剩下的玩家或队伍队伍人数为一到五的队伍数目均大于set中某个元素,则set中该元素表示能组成两个固定规模战团的组合,并从剩下的玩家或队伍中删除。此步骤重复进行,直到剩下的玩家或队伍无法组成两个固定规模的战团。
通过上述方法,本文实现尽可能合理的战团组成,在此之后,为了尽可能实现两个战团战力均衡,本文进一步设计战团玩家调整方法。当两个固定规模的战团组成后,通过查询预先生成的表,调整两个战团里的玩家,使得两个战团的战力尽可能相等,增强战斗刺激性。具体上,首先群举所有的能组成两个固定规模战团的可能,并存在map里,map的key为字符串,key唯一标识战团的构成(队伍人数为一的队伍数目,队伍人数为二的队伍数目,...,队伍人数为五的队伍数目),map的value为一个vector容器,vector中存储当前key拆分成两个固定规模战团的所有可能。当调整两个战团的战力时,通过map查询当前两个战团能重组成的所有两个战团的可能,然后遍历所有的可能,找出两个战团战力最接近的组合。

   原文中介绍的算法很精彩,考虑的情况也比较复杂。我自己想了下fifaol3这款游戏的匹配对战方式,应该是比较简单的,尝试分析一下。

玩家点击“排位赛”或者“友谊赛”按钮后会进入对战房间,在房间中可以邀请好友加入,因此在发起对战匹配请求前,我方阵容的情况只有三种:1人、2人、3人。实际上我们可以在服务器维护3个桶分别记录玩家数是1、2、3人的队伍,其中key为队伍中玩家的昵称组合,value为队长的战力(即前场中场后场的能力值,只需要队长的数据是因为对战时使用的是队长的球员阵容)。当玩家发起对战请求时,就在对应的桶里找到战力均衡的两支队伍发起对战。(当然还需要对玩家的排位等级做一些加权影响,因为传奇级的玩家和业余级的玩家对战的话会索然无味,影响游戏体验)。

    上面介绍的是最简单的情况,即玩家只进行与自己队伍人数相同的匹配。比较复杂的是房间中只有1人,但是他选择的是2v2或者3v3对战的情况等,这就涉及到不同人数的队伍之间进行临时组队再进行匹配的算法。思考如下:

同样维护3个桶队列,分别表示选择1v1、2v2、3v3的房间,那么这三种房间的人数上限分别为2、4、6。例如当1个单独玩家选择参加3v3时,遍历3v3的桶队列,若发现有一个房间的人数已经为5(为什么会出现5,看下一句话),就直接凑成6人加入,若没有就将此玩家加入桶队列。在每次遍历时,可以将一些零散的房间内的玩家拼在一个房间内,供下一次别人匹配来使用,如将1、1、2人的房间拼凑成一个4人的房间。当然这是一种贪心策略,可能会造成有的玩家等了好久都匹配不上的情况,但是游戏中确实存在等了2分钟都没匹配上的情况-_-。(当然房间中还允许有4个观战者,这种情况先不考虑啦)

    在对内存优化之前,需要先确定程序每个模块的内存分配。程序的性能有perf、gprof等分析工具,但内存没有较好的分析工具,因此需要自行统计。在linux下/proc/self(pid)/statm有当前进程的内存占用情况,共有七项:指标vsize虚拟内存页数、resident物理内存页数、share 共享内存页数、text 代码段内存页数,lib 引用库内存页数、data_stack 数据/堆栈段内存页数、dt 脏页数,七项指标的数字是内存的页数,因此需要乘以getpagesize()转换为byte。在每个模块结束后统计vsize的增加,即可知该模块占用的内存大小。

    在面向对象开发中,内存的消耗由对象的消耗组成,因此需要统计每个类的成员变量的占用内存大小。使用CLion或者visual studio都可以导出类中定义的所有成员变量,然后在gdb使用命令:

内存泄露是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,导致内存一直增长。虽然有valgrind等工具可以检查内存泄露,但valgrind虚拟出一个CPU环境,在该环境上运行,会导致内存增大、效率降低,对于大规模程序,基本无法在valgrind上运行。因此需要自行检查内存泄露,glibc提供的内存管理器的钩子函数可以监控内存的分配、释放。如图2.2.2、2.2.3所示,分别为钩子函数的分配内存和释放内存。因为服务器启动时需要预先分配很多内存,比如内存池,这些内存是在服务器停止时才释放,因此为了避免这些内存的干扰,在服务器启动之后才能开始内存泄露的统计。

首先申请固定大小的vec_stack,记录所有分配的内存,如果有释放,则从vec_stack中删除,最后vec_stack中的元素即为泄露的内存,vec_stack必须为固定大小,否则vector扩容中会有内存分配,也不可以用map,map的红黑树旋转也会有内存分配,会造成干扰;然后通过图2.2.1所示的my_back_hook记录原有的malloc、free;并通过图2.2.2所示的my_init_hook将malloc、free换成自定义的钩子函数。

每次分配内存时,都会进入自定义钩子函数my_malloc_hook中,如图2.2.2所示。在my_malloc_hook中首先通过my_recover_hook将malloc恢复成默认的,否则会造成死递归,然后通过默认的malloc分配大小为size的空间,为了分线程统计内存泄露,还需要对线程号做判断,在stTrace.m_pAttr记录内存分配的地址,m_nSize记录大小,m_szCallTrace记录调用栈,如果vec_stack已满,需要根据m_nSize从大到小排序,如果当前分配内存大于vec_stack记录的最小的分配内存,则替换;如果未满,则直接加入vec_stack,在my_malloc_hook结束时,将malloc替换成自定义的malloc。


   摘自《2018腾讯移动游戏技术评审与实践案例》

到底是用tcp还是udp见

    游戏对网络有实时性要求高,带宽要求小的特点。TCP 虽然提供了可靠传输,但是内置的复杂拥塞控制算法并不是专为实时性优化的,也没有提供较好的方法让业务定制化。CF 手游实现了自定义的RUDP 协议方案,使用UDP 保证协议实时性,同时通过自定义重传策略兼顾可靠性,取得了很好效果,主要技术要点包括:

    CF 手游中并非所有数据都要求可靠,按游戏逻辑需要,只有不到50%的协议有可靠性需求,RUDP 中只对这部分协议提供可靠性保证。而非可靠包则保证尽快到达,以满足游戏的实时性需求。对玩家移动状态等信息,由业务层定时冗余重传。

客户端与服务的的交互时序如下:

发送方不维护发送窗口,不等待前面包是否ack,有数据需要发送时立即发送。

CF 手游使用比TCP 更高精度,响应速度更快的重传策略以保证实时性。

主要思路是有损服务和降低不必要开销。CFM 持续进行了多轮流量优化,包括:
1.MTU 设计为500+字节,应用逻辑保证数据包大小不超过MTU,避免拆包。
2.减小包头,8 字节。
3.小包合并。同一帧发往同一个目标的多个小数据包合并为大包,减少包数量。
4.降低服务端帧率和位置精度,但不影响玩家体验。

摘自《2018腾讯移动游戏技术评审与实践案例》,作者:腾讯互娱专家工程师-樊华恒

1.移动状态网络信号不稳定,高时延、易抖动丢包、通道狭窄

2.移动状态网络接入类型和接入点变化频繁

3.移动状态用户高频化、碎片化、非wifi流量敏感

    第一、直观印象是通讯链路长而复杂,从(移动)终端设备到应用服务器之间,相较有线互联网,要多经过基站、核心网、WAP 网关(好消息是WAP 网关正在被依法取缔)等环节,这就像送快递,中间环节越多就越慢,每个中转站的服务质量和服务效率不一,每次传递都要重新交接入库和分派调度,一不小心还能把包裹给弄丢了;

    第二、这是个资源受限网络,移动设备接入基站空中信道数量非常有限,信道调度更是相当复杂,如何复杂就不展开了,莫文蔚那首歌词用在这里正合适:“我讲又讲不清,你听又听不懂......”,最最重要的是分配的业务信道单元如果1 秒钟不传数据就会立马被释放回收,六亲不认童叟无欺;

    第三、这个链条前端(无线端)是高时延(除某些WIFI 场景外)、低带宽(除某些WIFI 场景外)、易抖动的网络,无线各种制式网络带宽上限都比较低而传输时延比较大(参见【表一 运营商移动信号制式带宽标准】),并且,没事就能丢个包裹玩玩,最最重要的是,距离基站的远近,把玩手机的角度、地下室的深度等等都能影响无线信号的质量,让包裹在空中飞一会,再飞一会。这些因素也造成了移动互联网网络质量稳定性差、接入变化频繁,与有线互联网对比更是天上人间的差别,从【图二 有线互联网和移动互联网网络质量差异】中可以有更直观的感受;

    第四、这是个局部封闭网络,空中信道接入后要做鉴权、计费等预处理,WAP 网络甚至还要做数据过滤后再转发,在业务数据有效流动前太多中间代理人求参与,效率可想而知。产品研发为什么又慢又乱,广大程序猿心里明镜似的;最最重要的是,不同运营商之间跨网传输既贵且慢又有诸多限制,聪明的运营商便也用上了缓存技术,催生了所谓网络“劫持”的现象。如果我们再结合用户在移动状态下2G/3G/4G/WIFI 的基站/AP 之间,或者不同网络制式之间频繁的切换,情况就更加复杂了。

    除了这些物理上的约束,还有上层的约束:

    1 DNS 解析,这个在有线互联网上司空见惯的服务,在移动互联网上变成了一种负担,一个往复最少1s,还别提遇到移动运营商DNS 故障时的尴尬;
    2 链路建立成本暨TCP 三次握手,在一个高时延易抖动的网络环境,并且大部分业务数据交互限于一个HTTP 的往返,建链成本尤其显著;
    3 TCP 协议层慢启动、拥塞控制、超时重传等机制在移动网络下参数设定的不适宜;
    4 不好的产品需求规定或粗放的技术方案实现,使得不受控的大数据包、频繁的数据网络交互等,在移动网络侧TCP 链路上传输引起的负荷;
    5 不好的协议格式和数据结构设计,使得协议封装和解析计算耗时、耗内存、耗带宽,甚至协议格式臃肿冗余,使得网络传输效能低下;
    6 不好的缓存设计,使得数据的加载和渲染计算耗时、耗内存、耗带宽;

整体来说有四个方面:快链路、轻往复、强监控、多异步

    a.控制传输包的大小:即令传输层的MSS为1460字节以下(受限于数据链路层的MTU大小),避免ip包被分片,导致一个ip包片丢失会要求整个ip包重传(因为ip层没有确认机制)(MSS在三次握手中协商)

    b.放大TCP拥塞窗口:如将慢启动窗口cwnd设置为10*MSS。这是因为对于移动APP来说,大部分的网络交互都是HTTP并发短链接小数据量传输的形式,若服务端有10KB+的数据返回,采用过去的慢启动机制时,大概会需要2~3个RTT(Round Trip Time,网络往返时间)才能完成数据传输,反映到用户体验层面就是慢,而把拥塞窗口初始值提升到10后,大多数情况下都能在1个RTT的周期内完成应用数据的传输。

    d.调大RTO(Retransmission TimeOut)的初始值:将超时重传的初始值设为3s(TCP协议栈会根据RTT动态重新计算此值,以适应当前的网络状况),因为在移动网络高时延的情景下,若RTO值过小,很容易造成TCP协议栈的过激反应,即拥塞控制闪亮登场。

    e.开启TCP_NODELAY,移动APP的设计实现中,客户端请求大部分都很轻(数据大小不超过MSS),应该关闭Nagle算法

        1) 服务器如果直接在公网服务于客户端时,因为客户端有可能通过NAT 代理访问外部网络,故建议关闭TCP 快速回收选项;
        2) 服务器各层级在内网互联时,同时作为链接的主动发起方和链接的主动关闭方,建议开启TCP 快速回收。上述建议例外场景是:如服务器层级之间有4 层NAT,则需要考察层级靠前的服务器集群时钟同步的精度水平是否能到毫秒级,通常建议关闭TCP 快速回收选项;

(这些好像是客户端的相关知识...之前没有接触过,就大概摘录下)

客户端测速报告及服务质量监控报告,测速这个话题,稍微多探讨一下,在有线网络,实时测速并调整调度策略数据是非常普通的方案,但放在移动网络条件下,就有重新思考的必要。移动网络易抖动和移动应用大部分短链接轻量交互的特点,使得我们很难在一个短的时间内做出网络速度的有效判断,即便有初步的判断,也可能因为没有马上使用的时机而导致过期失效。因此,我们更倾向于把这些质量数据报告到后台,通过大量的数据归并分析,形成接入速度调度策略的判断依据;
    3) 客户端接入IP 库与接入服务器就快调度匹配库需要持续更新;

    DNS 不但需要1 个RTT 的时间消耗,而且移动网络下的DNS 还存在很多其它问题:
    1) 部分DNS 承载全网用户40%以上的查询请求,负载重,一旦故障,影响巨大,这样的案例在PC 互联网也有很多,Google 一下即可感受触目惊心的效果;
    4) 某些运营商DNS 有域名劫持问题,实际上有线ISP 也存在类似问题。域名劫持对安全危害极大,产品设计时要注意服务端返回数据的安全校验(如果协议已经建立在安全通道上时则不用考虑,安全通道可以基于HTTPS 或者私有安全体系)。对于劫持的判断需要客户端报告实际拉取服务数据的目标地址IP 等信息;
综上就是在前述就快接入小节中,接入调度FSM 会优先使用动态服务器列表的原因。

    在连接建立过程中如果出现连接失败的现象,而终端系统提供的网络状态接口反馈网络可用时,我们需要做网络可达性探测(即向预埋的URL 或者IP 地址发起连接尝试),以区别网络异常和接入服务异常的情况,为定位问题,优化后台接入调度做数据支持。
探测数据可以异步报告到服务器,至少应该包含以下字段:
    5) 本地调度的接入服务器IP(如使用域名接入,可忽略);

    我们在开篇讨论无线网络为什么慢的时候,提到了链接建立时三次握手的成本,在无线网络高时延、频抖动、窄带宽的环境下,用户使用趋于碎片化、高频度,且请求响应又一次性往返居多、较频繁发起等特征,建链成本显得尤其显著。因此,我们建议在链路创建后可以保持一段时间,比如HTTP 短链接可以通过HTTP Keep-Alive,私有协议可以通过心跳等方式来保持链路。

b.区分网络类型的超时管理

在不同的网络类型时,我们的链路超时管理要做精细化的区别对待。链路管理中共有三类超时,分别是连接超时、IO 超时和任务超时。我们有一些经验建议,提出来共同探讨:
    3) 任务超时:根据业务特征不同而差异化处理,总的原则是前端面向用户交互界面的任务超时要短一些(尽量控制在30 秒内并有及时的反馈),后台任务可以长一些,轻数据可以短一些,重数据可以长一些;
    4) 超时总是伴随着重试,我们要谨慎小心的重试,后面会讨论;超时时间宜短不宜长,在一个合理的时间内令当前链路因超时失效,从而驱动调度FSM 状态的快速变迁,效率要比痴痴的等待高得多,同时,在用户侧也能得到一个较好的正反馈。
各类超时参数最好能做到云端可配可控。

    轻重链路分离,也可以说是信令和数据分离,目的是隔离网络通讯的过程,避免重数据通讯延迟而阻塞了轻数据的交互。在用户角度看来就是信息在异步加载,控制指令响应反馈及时。移动端大部分都是HTTP 短链接模式工作,轻重数据的目标URL 本身就不同,比较天然的可以达到分离的要求,但是还是要特别做出强调,是因为实践中有些轻数据协议设计里面还会携带类似头像、验证码等的实体数据。

长链接对于提升应用网络交互的及时性大有裨益,一方面用户使用时,节省了三次握手的时间等待,响应快捷;另一方面服务器具备了实时推送能力,不但可以及时提示用户重要信息,而且能通过推拉结合的异步方案,更好的提升用户体验。长链接的维护包括链接管理、链接超时管理、任务队列管理等部分,设计实施复杂度相对高一些,尤其是在移动网络环境下。为了保持链路还需要做心跳机制(从另外一个角度看,这也是针对简单信息一个不错的PULL/PUSH 时机,,但需注意数据传输要够轻,比如控制在0.5KB 以内),而心跳机制是引入长链接方案复杂度的一个重要方面,移动网络链路环境复杂,国内网关五花八门,链路超时配置各有千秋,心跳时长选择学问比较大,不但要区分网络类型,还得区分不同运营商甚至不同省市,历史上曾经实践了2 分钟的心跳间隔,最近比较多的产品实践选择4.5 分钟的心跳间隔。而且长链接除了给移动网络尤其是空中信道带来负担外,移动设备自身的电量和流量也会有较大的消耗,同时还带来后端带宽和服务器投入增加。所以,除了一些粘性和活跃度很高、对信息到达实时性要求很高的通讯类APP 外,建议谨慎使用长链接。

    自动重试是导致后台雪崩的重要因素之一。在移动网络不稳定的条件下,大量及时的重试不但不能达到预期,反而无谓的消耗移动设备的电量甚至流量。因此,我们在重试前要有一些差异化的考虑:
    1) 当前移动设备的网络状况如何,如果没有网络,则不必重试;
    2) 重试设定必要的时间间隔,因为移动接入网络抖动到恢复可能需要一点时间,马上重试并非最佳策略,反而可能无谓的消耗电量。实践中,可以在一次连接或IO 失败(立即失败或超时)时,过3 ~ 5 秒后再试;
    3) 重试应设定必要的总时限,因为三个服务器列表比较长,每个服务器地址都要重试和等待若干次,最终可能导致接入调度FSM 和服务器列表调度FSM 流转耗时过长,此时用户侧体验表现为长时间等待无响应。总时限参数可以参考前述区分网络类型的超时管理中的任务超时值。一旦某次重试成功,重试总时限计时器要归零;
    4) 服务器下发特定错误码(比如服务器故障、过载或高负载)时,提示客户端停止重试并告知安抚用户,我们在强监控这个主题下有详细的讨论;每个目标服务器地址的重试次数、重试总时限和重试时间间隔最好能做到云端可
配可控。特别需要提出的一点是,移动APP 采用HTTP 短链接模式实现CS 交互时,广泛的使用了系统原生组件或者开源组件,这些友好的模块把超时和重试都封装起来,其缺省值是否适合自己的业务特点,需要多多关注。使用前,最好能知其然更知其所以然。

    透明和尊重,会带来信任和默契,家庭如此、团队如此、用户亦如此。欲盖弥彰和装傻充愣也许短暂取巧,拉长时间轴来看,肯定要付出惨重的代价。及时和真诚的告知状况,赢得谅解和信任,小付出,大回报,试过都知道。当发现因为网络不存在或者其它属于移动端设备链路的异常时,应该及时和显著的提示用户,让用户注意到当前有诸如网络不存在、FREE WIFI 接入认证页面需确认等等问题,使用户可以及时处理或理解问题状态。当发现是服务器问题时,应及时、显著和真诚的告知用户,争取用户的谅解。网络异常提示或服务器故障通告等信息的呈现要做到一目了然,无二义和二次交互。

    基于一个快速和高效管理的链路之上,做好IO 调度和控制,也是提升效能和改善用户体验的重要环节。要探讨的内容包括:

    异步化IO 的目的就是避免资源的集中竞争,导致关键任务响应缓慢。我们在后面差异服务个大的分类中会重点探讨。这里特别先提出来,是建议在程序架构顶层设计时,要在整体机制上支持异步化,设计必要的异步总线来联系各个层级模块,总线可能会涉及包括队列管理(优先级、超时、CRUD 等)、事件驱动、任务调度等。
    异步IO 除了网络方面外,对移动设备,我们还特别要考虑一下磁盘IO 的异步。因为频繁、大吞吐量的磁盘IO 会造成APP 的UI 卡顿,从用户体验上看就是交互响应迟钝或者滑动帧率下降。一般来说,磁盘IO 异步会选用空间换时间的方案,即缓存数据批量定时写入磁盘。

    有了异步IO,并发控制就显得尤为重要。把异步机制当作银弹任意使用,就如同我们给移动APP 设计了一个叫“发现”的地方一样,很可能各种膨胀的需求、不知道如何归类的需求就纷至沓来,期待有朝一日被“发现”。异步IO 提供了一个很好的发射后不用管的机制,这就会造成使用者的膨胀,无论是否必要、无论轻重缓急,把请求一股脑的丢给异步队列,自己潇洒的转身就走。这样不但会带来效率和交互响应性能的下降,也会造成资源的无谓消耗。在后面多异步这个大分类的讨论中会涉及到轻重缓急的话题,在前述异步IO 的磁盘IO 的时空效率转换话题中,还应该包括IO 并发的控制,我们即不能因为并发过多的链路造成网络带宽的独占消耗影响其它APP 的使用,也不可因快速、大量的异步数据造成缓写机制形同虚设或是占用过大的内存资源。

    PUSH 机制应该是苹果公司在移动设备上取得辉煌成就的最重要两个机制之一,另外一个是移动支付体系。我们这里的讨论不包括iOS 和APPLE 移动设备的拟人化交互体验,只侧重根基性的机制能力。APNS 解决了信息找人的问题,在过去,只有运营商的短信有这个能力,推送和拉取使得我们具备了实时获取重要信息的能力。为何要推拉结合。因为系统级的推送体系也必须维持一个自己的链路,而这个链路上要承载五花八门的APP 推送数据,如果太重,一方面会在设计上陷入个性化需求的繁琐细节中,另外一方面也会造成这条链路的拥堵和性能延迟。因此,通过PUSH 通知APP,再由APP 通过自己的链路去PULL 数据,即有效的利用了PUSH 机制,又能使得APP 能按需使用网络,不但简化了链路管理,而且节省了电量和流量。

    一方面,在讨论链路管理时,我们建议了优质网络下的并发链路来完成同一个重数据拉取任务。这就会涉及到任务的拆分和并行执行,基础是后台能支持断点续传。
    另外一方面,从客户端的角度而言,移动网络的不稳定特点,可能会造成某个重数据拉取任务突然失败,无论是自动重试还是用户驱动的重试,如果能从上次失效的上下文继续任务,会有省时间、省电量和省流量的效果,想想也会觉得十分美好。

    “技”止此尔。强调网络交互的“少”,更应强调网络交互的“简”。 我们在一条高时延易抖动的通道上取得效率优势的关键因素就是减少在其上的往复交互,最好是老死不相往来(过激),并且这些往复中交换的数据要尽量的简洁、轻巧,轻车简从。这个概念是不是有点像多干多错,少干少错,不干没错。把我们实践过的主要手段提出来探讨:

    二进制比较紧凑,但是可读性差,也因此形成可维护性和可扩展性差、调测不便的不良印象。这也造成了大量可见字符集协议的出现。计算机是0 和1 的世界,她们是程序猿的水和电,任何一个整不明白,就没法愉快的生活了。

     高效的协议可以从两个层面去理解,一是应用层标准协议框架,二是基于其上封装的业务层协议框架,有时候也可以根据需要直接在TCP 之上把这两个层面合并,形成纯粹的业务层私有协议框架。不过,为了简化网络模块的通讯机制和一些通用性、兼容性考虑,目前大多数情况下,我们都会选择基于HTTP 这个应用层标准协议框架之上承载业务层协议框架。下面我们针对上述个层面展开探讨。
    1) 链路复用能力,HTTP 协议最早设计时,选择了一问一答一连接的简单模式,这样对于有很多并发请求资源或连续交互的场景,链路建立的数量和时间成本就都增加了;
类似)时,服务端无法区分客户端请求的优先级,会按照先入先出(FIFO)的模式对外提供服务,这样可能会阻塞客户端一些重要优先资源的加载,而在链路复用的通道上,则提供了异步并发多个资源获取请求指令的能力,并且可以指定资源加载的优先级,比如CSS 这样的关键资源可以比站点ICON 之类次要资源优先加载,从而提升速度体验;
    3) HTTP 包头字段压缩(注:特指字段的合并删减,并非压缩算法之意)精简,HTTP 协议中HEAD 中字段多,冗余大,每次请求响应都会带上,在不少业务场景中,传递的有效数据尺寸远远小于HEAD 的尺寸,带宽和时间成本都比较大,而且很浪费;
    4) 服务器端具备PUSH 能力,服务器可以主动向客户端发起通信向客户端推送数据;HTTP/2 由标准化组织来制定,是基于SPDY 的试验成果开展的HTTP 协议升级标准化工作,有兴趣了解详细情况可以参考HTTP/2 的DRAFT 文档。其次是业务层的协议框架优化,它可以从三个方面考察,一是协议处理性能和稳定性好,包括诸如协议紧凑占用空间小,编码和解码时内存占用少CPU 消耗小计算快等等,并且bad casae 非常少;二是可扩展性好,向下兼容自不必说,向上兼容也并非不能;三是可维护性强,在协议定义、接口定义上,做到可读性强,把二进制协议以可读字符的形式展示,再通过预处理转化为源码级文件参与工程
编译。可能会有同学强调协议调测时的可阅读、可理解,既然读懂01 世界应该是程序员的基本修养,这一项可能就没那么重要了。
    高效的业务层协议框架从分布式系统早期代表Corba 的年代就有很多不错的实践项目,目前最流行的开源组件应属ProtoBuf,可以学习借鉴。正所谓殊途同归、心有灵犀、不谋而合,英雄所见略同......,说来说去,高效协议的优化思路也都在链路复用、推拉结合、协议精简、包压缩等等奇技淫巧的范畴之内。

    协议精简的目的就是减少无谓的数据传输,提升网络效能。俗话说“千里不捎针”,古人诚不我欺也。我们实践总结以下三点供参考:
    1) 能不传的就不传。把需要的和希望有的数据都列出来,按照对待产品需求的态度,先砍掉一半,再精简一半,估计就差不多了。另外,高效协议提供了比较好的扩展性,预留字段越少越好,移动互联网演化非常快,经常会发现前瞻的预留总是赶不上实际的需求;
    2) 抽象公共数据。把各协议共性的属性数据抽象出来,封装在公共数据结构中,即所谓包头一次就传一份,这个想法不新鲜,TCP/IP 的设计者们早就身体力行了。除了带来数据冗余的降低外,还降低了维护和扩展的复杂度,一石二鸟,且抽且行;
    3) 多用整数少用字符,数字比文字单纯,即简洁又清晰,还不需要担心英文不好被后继者BS;
    4) 采用增量技术,通知变化的数据,让接收方处理差异,这是个很好的设计思想,实践中需要注意数据一致性的校验和保障机制,后面会有专门的细节讨论;

     协议合并的目标是通过将多条交互指令归并在一个网络请求中,减少链路创建和数据往复,提升网络效能。把实战总结的六点提出来供参考:
    2) 协议合并的基础是业务模型的分析,在分类的基础上去做聚合。首先得区分出来缓急,把实时和异步的协议分类出来分别去合并;其次得区分出来轻重,协议请求或协议响应的数据规模(指压缩后),尽量确保在一个数据报文中可完成推拉;
    3) 协议合并在包的封装上至少有两种选择,一是明文协议合并后统一打包(即压缩和解密);二是明文协议分别打包,最后汇总;前者效率高一些,在实战中用的也较普遍;后者为流式处理提供可能;
    4) 协议合并对服务器的异步处理架构和处理性能提出了更高的要求,特别需要权衡网络交互效率和用户对后台处理返回响应期待之间的取舍;
    5) 协议间有逻辑顺序关系时,要认真考虑设计是否合理或能否合并;

    增量技术准确分类应该算是协议精简的一个部分,它与业务特点结合的非常紧密,值得单独讨论一下。增量技术在CS 数据流交互比较大的时候有充分发挥的空间,因为这个技术会带来客户端和服务器计算、存储的架构复杂度,增加资源消耗,并且带来许多保障数据一致性的挑战,当然,我们可以设计的更轻巧,容许一些不一致。
    我们用一个案例来看看增量技术的运用。

在应用分发市场产品中,都有一个重要功能,叫更新提醒。它的实现原理很简单,以Android 设备为例,客户端把用户移动设备上安装的APP 包名、APP 名称、APP 签名、APP 版本号等信息发送到服务器,服务器根据这些信息在APP 库中查找相应APP 是否有更新并推送到客户端。这个过程非常简单,但如果用户手机上装了50 个APP,网络上交互的数据流就非常客观了,即浪费流量和电量,又造成用户体验的缓慢,显得很笨重。
    这个时候,增量技术就可以派上用场了,比如下面的方案:
    1) 每个自然日24 小时内,客户端选择一个时间(优先选择驻留在后台的时候)上报一次全量数据;
    2) 在该自然日24 小时的其它时间,客户端可以定时或在用户使用时发送增量数据,包括卸载、安装、更新升级等带来的变化;
    3) 作为弱一致性的保障手段,客户端在收到更新提示信息后,根据提醒的APP列表对移动设备上实际安装和版本情况做一次核对;
    4) 上述择机或定时的时间都可以由云端通过下发配置做到精细化控制;

    前面精打细算完毕,终于轮到压缩算法上场了。选择什么算法,中间有哪些实战的总结,下面提出来一起探讨:
    1) 压缩算法的选择,我们比较熟悉的压缩算法deflate、gzip、bzip2、LZO、Snappy、FastLZ 等等,选择时需要综合考虑压缩率、内存和CPU 的资源消耗、压缩速率、解压速率等多个纬度的指标,对于移动网络和移动设备而言,建议考虑使用gzip。另外需要注意的是,轻数据与重数据的压缩算法取舍有较大差异,不可一概而论;
    2) 压缩和加密的先后秩序,一般而言,加密后的二进制数据流压缩率会低一些,建议先压缩再加密;
    3) 注意一些协议组件、网络组件或数据本身是否已经做过压缩处理,要避免重复工作,不要造成性能和效率的下降。比如一些图片格式、视频或APK 文件都有自己的压缩算法。说到这,问题又来了,如果应用层标准协议框架做了压缩,那么基于其上封装的业务层协议框架还需要压缩吗,压缩技术到底哪家强?这个问题真不好回答,考虑到HTTP/2 这样的应用层标准协议框架定和普及尚需时日,建议在业务层协议框架中做压缩机制。或者追求完美,根据后端应用层标准协议框架响应是否支持压缩及在支持时的压缩算法如何等信息,动态安排,总的原则就是一个字:只选对的,不选贵的;


    可监方可控,我们在端云之间,要形成良好的关键运营数据的采集、汇总和分析机制,更需要设计云端可控的配置和指令下发机制。本篇重点讨论与主题网络方面相关关键指标的“监”和“控”。以就快接入为例来探讨一下强监控能力的构建和使用。
    1) 接入质量监控,客户端汇总接入调度FSM 执行过程元信息以及业务请求响应结果的元信息,并由此根据网络类型不同、运营商不同、网络接入国家和省市不同分析接入成功率、业务请求成功率(还可细化按业务类型分类统计)、前述二者失败的原因归类、接入302 重定向次数分布暨原因、接入和业务请求测速等;
    2) 建设云端可控的日志染色机制,便于快速有针对性的定点排查问题;
    3) 终端硬件、网络状态的相关参数采集汇总;
    4) 建设云端可控的接入调度(比如接入IP 列表等)和网络参数(比如连接超时、IO 超时、任务超时、并发链接数、重试间隔、重试次数等)配置下发能力;
    5) 服务器根据汇总数据,通过数据分析,结合服务器自身的监控机制,可以做
    a. 支持细粒度的接入调度和网络参数的优化云控;
    c. 发现移动运营商存在的一些差异化问题比如URL 劫持、网络设备超时配置不当等问题便于推动解决;
    d. 发现分省市服务器服务质量的异常情况,可以动态云端调度用户访问或者降级服务,严重时可以及时提示客户端发出异常安抚通告,避免加剧服务器的负载导致雪崩。安民告示的快速呈现能力,考验了一个团队对可“控”理解的深度,我们在实践中,提供了三级措施来保障:第一级是服务器端通过协议或跳转URL下发的动态通告,这在非IDC 公网故障且业务接入服务器正常可用时适用;第二级是预埋静态URL(可以是域名或IP 形式,优先IP)拉取动态通告,适用其它故障,静态URL 部署的IP 地址最好同本业务系统隔离,避免因为业务服务所在IDC 公网故障不可用时无法访问;第三级是客户端本地预埋的静态通告文案,内容会比较模糊和陈旧,仅作不时之需;
的下载时间、下载标的和下载条件约束(磁盘空间、移动设备电量、网络类型等)的差异化配置,通过错峰调度,达到削峰平谷并提升用户体验的效果;特别需要注意的是,客户端数据报告一定要有数据筛选控制和信息过滤机制,涉及用户隐私的敏感信息和使用记录必须杜绝采样上报。在我们的日志染色机制中要特别注意,为了排查问题极可能把关键、敏感信息记录报告到后端,引入安全风险。


    经过前面不懈的努力,初步打造了一个比较好的技术根基,好马配好鞍,好车配风帆,怎么就把领先优势拱手送与特斯拉了。
用户欲壑难平,资源供不应求,靠“术”并无法优雅的解决。跳出来从产品角度去观察,还有些什么能够触动我们思考的深度呢。根据不同的需求和使用场景,用有损服务的价值观去权衡取舍,用完美的精神追求不完美,此乃道的层面。所谓大道至简,完美之道,不在无可添加,而在无可删减。通过多异步和各类缓存机制,提供区分网络、区分业务场景下的差异化服务,是我们孜孜以求的大“道”。
    下面通过一些实践案例的总结,来探索简洁优雅的弱联网体验改善之道(开始肆无忌惮的吹嘘了)。

    微博客户端某个版本启动时,从闪屏加载到timeline 界面需要6 秒+。这样的体验是无法接受的,与用户2 秒以内的等待容忍度是背道而驰的。从技术角度去分析,很容易发现问题,诸如我们在启动时有10+个并发的网络请求(因为是HTTP 短链接,意味着10+个并发的网络链接)、闪屏加载、主UI 创建、本地配置加载、本地持久化数据加载至Cache 等等程序行为,优化的目标很自然就集中在网络请求和本地配置、持久化数据加载上。梳理并发网络请求,可以从以下三个方面考察:
    2) 哪些请求是可以异步拉取的,比如timeline、用户Profile、云端配置、双向收听列表、闪屏配置、timeline 分组列表、相册tag 列表等;
    此时,取舍就非常简单和清晰了,启动时1~2 个网络请求足够应对。所做的仅仅是把一些请求延后发起,这是一种异步机制。
在移动APP 里面还有大量类似的场景,比如用户更新了APP 的某个设置项或者自己Profile 的某个字段,是停在界面上转菊花等网络交互返回后再提示结果,亦或是把界面交互马上还给用户,延后异步向服务器提交用户请求,这里面的价值取向不同,“快”感也便不同。

    微博客户端在timeline 刷新时,用户向上快速滑屏,到达一个逻辑分页(比如30 条微博消息)时,有两个取舍,一是提前预加载下个分页内容并自动拼接,给用户无缝滑动的体验;二是等到用户滑动到达分页临界点时现场转菊花,卡不卡看当时的网络状况。实践中选择了方案一。用户在滑动浏览第一个逻辑分页时,APP 就利用这个时间窗主动预先拉取下一个逻辑分页的内容,使得用户能享受一个顺畅的“刷”的体验。所做的仅仅是把一个请求提前发起了,这也是一种异步机制。思考的要点是:
    1) 预先加载的内容是用户预期的吗,预先加载和自动下载之间,失之毫厘谬以千里;
    2) 预先加载的内容对用户移动设备的资源(比如流量、电量等)和后端服务器的资源(比如带宽、存储、CPU 等)消耗要做好估算和判断,体贴和恶意之间,也就一步之遥;
    3) 预先加载区分轻重数据,轻数据可以不区分网络状况,重数据考虑仅限优质网络下执行,最好这些策略云端可以控制;
    4) 预先通过网络拉取加载或存储的过程中,不要打搅用户的正常使用;在移动APP 中,预加载有大量的实践,比较典型的就是升级提醒,大家都采用了先下载好升级包,再提示用户有新版本的策略,让你顺畅到底。

    微博客户端在香港公共WIFI 下刷新timeline 总是失败,通过后台用户接入请求和响应日志分析,判断是香港IDC 到香港公共WIFI 的汇接口带宽窄、时延大,此时该如何应对。
    从前面探讨的TCP/IP 网络知识,可以知道,在一个窄带宽高时延网络中,吞吐量BDP 必然很小,也就是说单位大小的数据传输所需的时间会很长。如果按照通常一次下发一个逻辑分页timeline 数据的策略,那么从服务器到客户端传输,整个数据需要拆分成多个TCP 数据报文,在缓慢的传输过程中,可能一个数据报文还未传输完成,客户端的链路就已经超时了。如果在弱网络(需要在应用层有测速机制,类似TCP/IP 的RTT 机制,测速时机可以是拉取微博消息数字时)下,把逻辑分页的微博消息数由30 调整为5 会如何,如果方案成立,用户刷微博的体验是不是会下降,因为滑动一屏就要做一次网络交互,即便是配合预加载,也可能因为网络太慢,操控太快而又见菊花。外团在香港实测了这个版本,感叹,终于可以刷了。在饥渴难耐和美酒佳肴之间,似乎还有很多不同层级的体验。聊胜于无,这个词很精准的表述了服务分层,降级取舍的重要性。思考的要点是:
    1) 产品的核心体验是什么,即用户最在乎的是什么,在做宏观分层设计时要充分保障核心体验;
    2) 每个产品交互界面中,什么数据是无法容忍短时间不一致的,即什么是用户不能容忍的错误,在做微观分层设计时要充分考虑正确性;
    3) 在宏观和微观分层的基础上,开始设想在什么条件下,可以有什么样的降级取舍,来保障可用,保障爽快的体验;
    4) 分层不宜太多太细,大部分产品和场景,3 层足矣;在移动弱网络条件下,处处可见降级取舍的案例。比如网络条件不佳时,降低拉取缩略图的规格,甚至干脆不自动拉取缩略图等等,分层由心,降级有意。

    移动APP 时代,绝对的轻端重云或者轻云重端都是不可取的,只有端云有机的配合,才能在一个受限的网络通道上做出更好的用户体验。正所谓东家之子,胖瘦有致。
    比如移动网游APP,如取向选择轻端重云,那么玩家的战斗计算就会大量的通过网络递交给服务器处理并返回,卡顿家常便饭,操控感尽失。比如微博客户端,如果取向选择重端轻云,微博timeline 所有的消息都拉取元数据(比如微博正文包括文字、各类URL、话题、标签、@、消息的父子关系、消息中用户profile、关系链等等),由客户端实时计算拼装,不但客户端用户需
要消耗大量流量计算量,而且给后端服务器带来巨大的带宽成本和计算压力,如果过程中网络状况不佳,还会非常卡顿。通过实践总结,端和云孰轻孰重,取舍的关键是在数据计算规模可控和数据安全有保障的前提下:
    2) 减少网络流量,要轻;端云有机结合,可以很好的演绎机制与策略分离的设计思想,从而使系统具备足够的柔韧性。不得不再次特别提到的一点是,缓存技术是异步化的基础,它渗透在性能和体验提升的方方面面,从持久化的DB、文件,到短周期的内存数据结构,从业务逻辑数据,到TCP/IP 协议栈,它无所不在。缓存涉及到数据结构组织和算法效能(耗时、命中率、内存使用率等)、持久化和启动加载、更新、淘汰、清理方案等,有机会我们可以展开做专题的介绍。牢记一个字,缓存是让用户爽到极致的利器,但千万别留下垃圾。提倡多异步,实际上是要求团队认真审视产品的核心能力是什么,深入思考和发现什么是用户最关心的核心体验,把有限的资源聚焦在它们身上。通过考察用户使用产品时的心理模型,体验和还原用户使用场景,用追求完美的精神探索不完美之道。
    互联网服务核心价值观之一“不要我等”,在移动互联网时代仍应奉为圭臬,如何面对新的挑战,需要更多的学习、思考、实践和总结,这篇文章即是对过去实践的总结,亦作为面对未来挑战的思考基点。

    网络游戏同步,常用的两种方案是帧同步和状态同步。

    帧同步是同步玩家的指令,服务器负责转发客户端的操作,每个客户端以固定的逻辑帧执行所有客户端的操作指令,通过在严格一致的时间轴上执行同样的命令序列获得同样的结果。
    状态同步跟帧同步的最大区别是服务器不在进行切逻辑帧,而是同步玩家状态信息,比如位置、属性、跟玩法相关的数据。通常主逻辑在服务器运行,客户端只是作为一个显示。采用状态同步的游戏有CFM、LOL 等。
    帧同步的网络流量较小,但防外挂、断线重连的难度比较大。状态同步中服务器有所有玩家的状态,安全性较高,游戏运营更可控。是否选择状态同步,需要看同步的实体数量。在大场景中,同步的单位比较多时,往往会放弃状态同步。比如星际争霸中玩家可操作的实体多达上百个,如采用状态同步的话网络流量将非常大。

    2014 年底酷跑推出了实时同屏多人对战模式的玩法。玩家要努力战胜对手,将速度最大化,用最短的时间跑完全程。多人战分经典战和道具战两种,经典战比拼速度,道具战通过道具增加或减少各种效果,玩家可以利用各种功能各异的道具保护自己,干扰对手。
个玩家匹配到一起后即可开局。由于对战中玩家数不多,同时服务器需要做一些逻辑,这里选用了状态同步的同步方案。游戏过程中玩家上报自己的操作、位置和状态给服务器,服务器做一些逻辑处理,再把该玩家上报的包广播给其他玩家,其他玩家收到包后,知道该玩家的状态,做相应的逻辑。游戏过程中,根据游戏场景,动态调节同步频率,达到节省同步包量,降低服务器负载的目的。玩家在游戏中平均每秒1 次左右的同步。

因为最多游戏人数为3v3,所以可以使用状态同步,即所有玩家将当前的操作、状态、位置等发到服务器,服务器做一些逻辑处理后,广播给其余玩家,这样的好处是防外挂、断线重连比较容易实现。(游戏中我卡了,其他玩家看到我操控的球员是一直往一个方向跑的,即一直执行我的最后一次操作),针对不同的场景可以动态调整同步的频率如每15帧同步一次或者更多,达到节省同步包量,降低服务器负载的目的。

DOS:是Denial of Service的简称,即拒绝服务,不是DOS操作系统,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。

DDOS:分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。

DDoS攻击它的原理说白了就是群殴,用好多的机器对目标机器一起发动DoS攻击,但这不是很多黑客一起参与的,这种攻击只是由一名黑客来操作的。这名黑客不是拥有很多机器,他是通过他的机器在网络上占领很多的"肉鸡",并且控制这些"肉鸡"来发动DDoS攻击,要不然怎么叫做分布式呢。还是刚才的那个例子,你的机器每秒能发送10个攻击数据包,而被攻击的机器每秒能够接受100的数据包,这样你的攻击肯定不会起作用,而你再用10台或更多的机器来对被攻击目标的机器进行攻击的话,那结果就可想而知了。

 事实上DOS的攻击方式有很多种,比如下面的常见的:

DDoS究竟如何攻击?目前最流行也是最好用的攻击方法就是使用SYN-Flood进行攻击,SYN-Flood也就是SYN洪水攻击。SYN-Flood不会完成TCP三次握手的第三步,也就是不发送确认连接的信息给服务器。这样,服务器无法完成第三次握手,但服务器不会立即放弃,服务器会不停的重试并等待一定的时间后放弃这个未完成的连接,这段时间叫做SYN timeout,这段时间大约30秒-2分钟左右。若是一个用户在连接时出现问题导致服务器的一个线程等待1分钟并不是什么大不了的问题,但是若有人用特殊的软件大量模拟这种情况,那后果就可想而知了。一个服务器若是处理这些大量的半连接信息而消耗大量的系统资源和网络带宽,这样服务器就不会再有空余去处理普通用户的正常请求(因为客户的正常请求比率很小)。这样这个服务器就无法工作了,这种攻击就叫做:SYN-Flood攻击。

  这种攻击利用RST位来实现。假设现在有一个合法用户(1.1.1.1)已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP为1.1.1.1,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从1.1.1.1发送的连接有错误,就会清空缓冲区中建立好的连接。这时,如果合法用户1.1.1.1再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。 
  攻击时,伪造大量的IP地址,向目标发送RST数据,使服务器不对合法用户服务。 

  如果你的连接带宽足够大而服务器又不是很大,你可以发送请求,来消耗服务器的缓冲区消耗服务器的带宽。这种攻击就是人多力量大了,配合上SYN一起实施DOS,威力巨大。不过是初级DOS攻击。 

  •  4.自身消耗的DOS攻击

  这是一种老式的攻击手法。说老式,是因为老式的系统有这样的自身BUG。比如Win95 (winsock v1), Cisco IOS v.10.x, 和其他过时的系统。
  这种DOS攻击就是把请求客户端IP和端口弄成主机的IP端口相同,发送给主机。使得主机给自己发送TCP请求和连接。这种主机的漏洞会很快把资源消耗光。直接导致当机。这中伪装对一些身份认证系统还是威胁巨大的。 
  上面这些实施DOS攻击的手段最主要的就是构造需要的TCP数据,充分利用TCP协议。这些攻击方法都是建立在TCP基础上的。还有其他的DOS攻击手段。 

  •  5.塞满服务器的硬盘

  通常,如果服务器可以没有限制地执行写操作,那么都能成为塞满硬盘造成DOS攻击的途径,比如: 
  发送垃圾邮件。一般公司的服务器可能把邮件服务器和WEB服务器都放在一起。破坏者可以发送大量的垃圾邮件,这些邮件可能都塞在一个邮件队列中或者就是坏邮件队列中,直到邮箱被撑破或者把硬盘塞满。 
  让日志记录满。入侵者可以构造大量的错误信息发送出来,服务器记录这些错误,可能就造成日志文件非常庞大,甚至会塞满硬盘。同时会让管理员痛苦地面对大量的日志,甚至就不能发现入侵者真正的入侵途径。
  向匿名FTP塞垃圾文件。这样也可以塞满硬盘空间。 

《后台开发核心技术与实践》一书中给出了一般解决方案:

    在发送的数据前面加上固定4字节,用来存放数据包长度。接收方先接收4字节,解析出数据的长度,再进行收包。

客户端代码,注意点见代码中2处注释

服务端代码:注意点见代码中2处注释

}

我要回帖

更多关于 为什么总感觉有人控制我 的文章

更多推荐

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

点击添加站长微信