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

### 场景背景

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

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

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

### 解决预想(帧同步)

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

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

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

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

  1. 视频教程-H5入门-系列手机游戏开发-过河-手游开发

    H5入门-系列手机游戏开发-过河 20年软件项目开发管理经验 工信部人才交流中心特聘专家讲师 日本U-CAN在线教育特聘主任讲师 国家十二·五规划软件工程教材作者(书:清华大学出版社出版) 中国软件行 ...

  2. 视频教程-红孩儿网狐Cocos经典棋牌开发教程-手游开发

    红孩儿网狐Cocos经典棋牌开发教程 中国早期游戏程序员,2003年起从事游戏程序开发,负责开发过多款游戏项目,曾担任大型端游<无限世界>自研引擎技术负责人,2012年起关注Cocos引擎 ...

  3. 手游服务器ip文件夹,手游客户端服务器ip

    手游客户端服务器ip 内容精选 换一换 选择Windows开发环境下,安装Eclipse,安装JDK.JDK使用1.8版本,Eclipse使用4.3.2及以上版本.若使用IBM JDK,请确保Ecli ...

  4. 手游客户端开发招聘要求

    以下内容整理自网络,仅供参考学习 1 职位描述: 说明: 1. 负责手游前端的设计及开发 2. 根据需求实现游戏的战斗/场景/系统/界面等效果 3. 良好的理解策划需求,与策划人员进行良好的沟通 4. ...

  5. 《穿越火线:枪战王者》手游客户端技术方案: 实时同步与手感优化

    一.项目背景 CF手游的团队有着相当丰富的FPS游戏制作经验,但是移动端开发经验相对匮乏.团队面对的挑战很大,我们需要在手机端完美还原CF十多个游戏模式,上百把枪械手感. 虽然我们有实时对战FPS游戏 ...

  6. 手把手教你将H5游戏打包为手游

    H5游戏可以通过快应用的web组件快速打包成快游戏,打包上架后的快游戏,只要原H5游戏的url不发生变动,快游戏就不需要做更新,维护工作量小. 使用快应用IDE,打包快游戏的操作很简单. 访问官网安装 ...

  7. 开发一个手游需要的工种

    1 策划类 =.= 包括数值,系统,感觉手游主要有这两个就欧克了. 2 程序类, 大体分客户端和服务器. 客户端主要负责处理人机交互和表现,细分可以分为引擎程序(性能调优,各种机器适配,写个shade ...

  8. 虚幻4引擎开发的手游_虚幻引擎 4 手游《绝地求生:刺激战场》 开发经验分享...

    腾讯光子工作室群 的<绝地求生:刺激战场>在今年2月9日全平台开测以来,备受全球玩家喜爱.这款万众瞩目的UE4手游是如何在保证原汁原味玩法的同时做好资源的优化,执行效率的提升,移动平台操作 ...

  9. 虚幻4引擎开发的手游_虚幻4引擎开发 《神佑》手游首次公开

    [17173新闻报道,转载请注明出处] 1月25日,Joycity公司举办新作发布会,公开了正在开发中的旗下新作. 发布会上,Joycity介绍了<创世纪战:安塔利亚战争>.<炮艇战 ...

最新文章

  1. 银行的双重生物识别实验,是双重麻烦还是双重安全?
  2. AnalogClock的使用(一)
  3. 3DSlicer3:模块管理(一)颜色、DCM、数据、模型、注释
  4. MySQL数据库:存储引擎
  5. intellij中java文件都是灰色
  6. MYSQL性能查看(命中率,慢查询)
  7. Oracle字符拆分函数,Oracle拆分字符串函数有哪些呢?
  8. oracle+110个常用函数
  9. ASoC Machine驱动代码框架图
  10. Django SimpleCMDB API
  11. L1-025__032
  12. L019-老男孩Linux高端运维课程-linux用户管理手把手深入实战
  13. 学习BMFONT的感想
  14. endnote 参考文献加序号_EndNote插入文献序号排序混乱怎么破 | 科研动力
  15. pytorch的vgg19的预训练模型提取图片特征
  16. bugzilla dbd-mysql_如何在CentOS 7上安装Bugzilla 5.0.x
  17. 纽约州顶尖计算机科学类学院,美国顶尖高中盘点——纽约州篇
  18. 应届生如何轻松通过Java面试
  19. vue构建项目对接口的调用封装
  20. Docker原理及常见命令

热门文章

  1. python replace方法_Python str replace()方法
  2. 一刀工具箱 - 字数统计
  3. android之wifi开发(一)
  4. 当程序员没了互联网,该如何继续学习写代码
  5. fastlane for iOS 打包探索
  6. python文件名批量重命名脚本
  7. etcd defrag bug [3.1.4] 之前通病
  8. mysql --prompt详解_mysql5.6 prompt的用法详解
  9. 计算机视觉相关比赛,竞赛 | Kaggle上有哪些有趣又多金的计算机视觉类比赛?
  10. python进程管理工具 ci_推荐 10 个好用的 CI/CD 工具