[游戏开发]关于手游客户端网络带宽压力的一点思考

## 关于手游客户端网络压力的一些思考

### 场景背景

毫无疑问,策划都喜欢多人同屏战斗。什么万人大地图,这肯定是策划的最爱了。可是对于游戏来说,这并不是什么非常好的设计。即使解决了服务端计算的性能压力,客户端显示的性能压力。万万没想到的是我们游戏在客户端网络带宽上面遇到了压力。

假设1000人同屏,那么要同时同步1000个人的位置,移动方向,速度,释放技能,伤害,血量,buff等信息。这n*2的网络带宽复杂度,对于服务端来说,其实只要申请大些的带宽,买贵点其实就可以解决了。但是对于时常处于不稳定和低网速网络环境(电梯、地铁、偏远山区等环境)下的手机,特别是还处于2g,3g的网络环境下的手机,那么小的带宽承载能力其实根本无法应付这么大的网络消息同步的。造成后果,游戏会有明显的收包卡顿,有些会出现好几秒,出现非常不好的游戏体验。
另外,即使手机可以承受,在当下手机网络流量并没有那么廉价的情况下,如此耗费网络流量,很难的得到玩家的承受。

以上,对于实时同步信息的模式,在大规模多人对战手游中,并不是一种非常合适的方案。

### 解决预想

问题在于客户端的网络带宽,如果减少客户端接收的网络带宽才是重点。不去同步那么多的信息,那么就需要客户端和服务端尽量约定规则。使用客户端先行,服务端演练计算的方式来实现。貌似业界已经有这种方案了,传闻lol、dota2就是这么实现的(这方便并没进行查阅,只是有个印象)。
到战斗开始的时候,先同步必要的信息,譬如场景内的怪物、位置、AI、血量、技能等信息和一个随机数。AI的行为通过随机触发。那么需要同步的信息就只剩下那些无法确定的因素。譬如玩家,什么时候释放什么技能、如何移动,我们是无法确定的,但只要在外面服务端的演练中同步上,那么同样可以演练出客户端的整个战斗过程出来。
对比可以发现,使用这种方法,我们只需要同步玩家的技能、移动就可以了。省去了很多其它可以直接演练出来的信息。为了避免演练的偏差,可以定期同步一些内容。这样既可以保证战斗的一致性,也大幅度减少了带宽流量。

当然使用这种方式,对客户端和服务端的约定要求非常高,相比也复杂了许多,对于研发人员的要求同样要高许多。

不过业界已经有成型的方案,自然可以解决。对比玩家体验,这方面的优化还是很有必要的。

时间: 2024-12-24 15:33:36

[游戏开发]关于手游客户端网络带宽压力的一点思考的相关文章

手游客户端框架的思考

新的公司新项目的手游客户端框架我并不是十分赞同,虽然最终我妥协了,并且为自己竟然做出质疑上司这样的幼稚行为而后悔.但是就最近写的一些代码来看,我更加坚定我自己的思路和想法.当然我的习惯和思路不一定适合其他人,所以我并不会说其他人的思路或者习惯不对或者不好,只要能用清晰的思路写出清晰的代码就好了. 一.3D.Unity意味着更长的项目周期? 很多人都会有这样的看法,因为Unity比cocos2d-x功能更多,坑更多,所以会加长项目的开发周期.也有一些技术向的人会认为,Unity优化不到位,所以性能

Cocos2d-x手机游戏开发视频教程 手游入门到精通视频教程

Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的.Cocos2d-X发展的重点是围绕Cocos2d跨平台,Cocos2d-x提供的框架. 手机游戏,可以写在C++或者Lua中,使用API是Cocos2d-iPhone完全兼容.Cocos2d-x项目可以很容易地建立和运行在iOS,Android,黑莓Blackberry等操作系统中. Cocos2d-x还支持Windows.Mac和Linux等桌面操作系统,因此,开发者编写的源代码很容易在桌面操作系统中编辑和调试. 当前3G技

开发一个手游需要的工种

1 策划类 =.= 包括数值,系统,感觉手游主要有这两个就欧克了. 2 程序类, 大体分客户端和服务器. 客户端主要负责处理人机交互和表现,细分可以分为引擎程序(性能调优,各种机器适配,写个shader表现啦什么的), 工具程序(为美术和策划减少各种体力活,提高生产效率), ui程序(熟悉项目的ui库,能实现变态各种ui需求和扩展控件), gameplay程序(逻辑程序,好吧,在国内手游来说就是自由人,全能打杂..,什么sdk接入啦,支付购买啦,什么的) 主程序(设计整体架构,把控方向,chec

从游戏发展史看手游折扣平台选择哪个好

先给出结论,手游折扣平台,判断是否优秀,第一是安全,第二还是安全,第三还是安全. 手游折扣中心 (官网下载),是游戏方集成充值代码,是游戏方自己认可的平台,帐号绝对安全,不会出现小平台的盗号,封号问题. 更重要的是,良心,首续冲都写出来了,而且力度是游戏圈最大的. 更更重要的是,这个平台不是小平台,不是新平台,是2004年就成立的大平台.玩家超过了1亿. 电子游戏的历史跨越了从第一款电子游戏发明到今天的一段时间,涵盖了一个漫长的发明和变化时期.电子游戏在上世纪70年代和80年代达到了主流,当时街

unity游戏开发之服务器与客户端或页面流转之自定义交互事件

引言: 1,游戏页面与页面的交互 (1)装备背包 (2)装备信息页面 在游戏开发中,2D页面之间,有时候少不了关联性,比如游戏的背包系统,玩家进入背包系统(见上图装备背包以及装备信息页面),点击装备,查看装备信息页面,一般卡牌类游戏这些信息页面都附带增加装备 属性值的功能,比如<放开那三国>里装备的强化功能,玩家花一定量的游戏货币强化了装备后,该装备信息页面里装备属性会随着刷新.但是关闭该装备信息页面后,背包系统 页面里对应的该装备描述也要随着改变,但是背包系统怎么知道装备信息页面里已经改变了

unity3D游戏之三消手游[陌陌熊熊消]发布8小时免费榜第3

狗刨学习网报道 / 陌陌旗下三消游戏<陌陌熊熊消>已于昨日(2月5日)开启公测,安卓和iOS双版同步登陆陌陌游戏中心.据官方透露,游戏发布仅8小时即飙升至App Store免费总榜第三,公测首日新增用户达50万. <陌陌熊熊消>上线8小时便升至中国区iPhone免费榜总榜第三名 陌陌瞄准细分市场 据业内媒体统计,现阶段我国活跃设备超过9亿,其中手游玩家超过5.5亿,其中大部分玩家都接触过轻游戏.截止2014年12月中旬,2014年国内轻游戏收入规模达70-80亿,相比2013年,增

手游客户端数据表接入随笔

手游在接入数据库表时需要考虑几个问题: 1.unity使用C#语言,数据表读取接口也需要使用C#语言: 2.基础组件库提供了excel到bin格式的转表工具,tdr组件支持将元数据格式转换为可读取bin格式数据的C#接口代码集,可以将数据表配表到读取的流程整理为 (1)程序建立excel表格和表格对应元数据结构xml文件: (2)策划在已经建立的excel表格中添加修改删除数据项: (3)程序配置convlist.xml文件,策划使用Resconv转表工具加载该配置文件对所选表格进行转表操作,生

运用starling开发的手游FlappyBird

最近想向游戏方面发展,于是用starling做了一个简易版的FlappyBird,纯AS3开发,权当是技术学习.在发布之后才明白要发布一个没有版权的app是有多困难,审核了N遍之后终于通过审核,下面发布下下载链接:http://apk.hiapk.com/html/2014/05/2633646.html.有时间的话写写这个游戏的开发过程

H5游戏开发的那些坑(一) 客户端

[客户端] 1.关于游戏引擎 在15年3月开始准备做h5游戏的时候,首先遇到的问题就是引擎选型的问题. 当时市面上的2d引擎主要有3个:白鹭egret,layabox和cocos2d-js. 一方面,是因为我以前用cocos2d-x(c++)做了一年多的手游客户端,所以,很自然就选择了cocos2d-js.另一方面,是因为当时市面上其他两个引擎的成功项目还不多. cocos引擎的每一次版本更新,我们都会第一时间在我们的游戏里面进行测试. 如果发现游戏在android手机上的性能有明显提升,我们就