网络游戏中的协议选择
在网络游戏开发中,通讯协议是一个无法被避免的问题,无论对于客户端开发中还是服务器开发程序猿而言,制定一个合适的通讯协议是很有必要的
游戏联网需求有弱联网游戏,即时互动类游戏
选择通讯协议的时候主要关注于延迟低,易用,低成本等
下面对比TCP,UDP,HTTP,WebSocket 四种协议优缺点、特性
TCP:
优点: 可靠性 、全双工协议、开源支持多、应用较广泛、面向连接、研发成本低、报文内容不限制(IP层自动分包,重传,不大于1452bytes)
缺点: 操作系统:较耗内存,支持连接数有限、设计:协议较复杂,自定义应用层协议、网络:网络差情况下延迟较高、传输:效率低于UDP协议
特性: 面向连接、可靠性、全双工协议、基于IP层、OSI参考模型位于传输层、适用于二进制传输
UDP
优点: 操作系统:并发高,内存消耗较低、传输:效率高,网络延迟低、传输模型简单,研发成本低
缺点: 协议不可靠、单向协议、开源支持少、报文内容有限,不能大于1464bytes、设计:协议设计较复杂、网络:网络差,而且丢数据报文
特性:无连接,不可靠,基于IP协议层,OSI参考模型位于传输层,最大努力交付,适用于二进制传输
HTTP:
优点: 协议较成熟,应用广泛、基于TCP/IP,拥有TCP优点、研发成本很低,开发快速、开源软件较多,nginx,apache,tomact等
缺点: 无状态无连接、只有PULL模式,不支持PUSH、数据报文较大
特性: 基于TCP/IP应用层协议、无状态,无连接、支持C/S模式、适用于文本传输
WebSocket
优点:协议较成熟、基于TCP/IP,拥有TCP优点、数据报文较小,包头非常小、面向连接,有状态协议、开源较多,开发较快
缺点:没发现啥缺点
特性:有状态,面向连接、数据报头较小、适用于WEB3.0,以及其他即时联网通讯
协议选择
通过以上对协议特性分析,我想大家心里已经有低儿了。建议:
1、对于弱联网类游戏,必须消除类的,卡牌类的,可以直接HTTP协议,考虑安全的话直接HTTPS,或者对内容体做对称加密;
2、对于实时性,交互性要求较高,且team有过相关经验,可以优先选择websocket,其次TCP协议;
3、对于实时性要求极高,且可达性要求一般可以选择UDP协议;
4、局域网对战类,赛车类,直接来UDP协议吧(公网对战,P2P的UDP还得“打洞”处理)
---------------------
转载自:https://blog.csdn.net/honey199396/article/details/54603860
网络游戏中的协议选择相关推荐
- 网游同步技术:实时动作游戏同步方式和传输协议选择
http://www.gameres.com/478430.html 6 天前 上传 下载附件 (88.33 KB) GameRes游资网授权发布 文 / 韦易笑 实时动作游戏在近年来得到迅猛的发展 ...
- 没有mssqlserver的协议_LoadRunner是什么 LoadRunner协议选择原则介绍【图文】
LoadRunner对不同协议的选择 以前使用Loadrunner只选择过web(Http/Html),但其实协议多种多样.在B/S结构的网站多种业务的特点需要选择不同的协议,耿电在给我们就介绍了用过 ...
- timerpickerview使用_详解iOS App中UIPickerView滚动选择栏的添加方法
1.UIPickerView的宽度和高度是固定的,纵向是320216,横向是568162 2.属性: @property(nonatomic,readonly)NSInteger numberOfCo ...
- 再谈网游同步技术:实时动作游戏同步方式和传输协议选择
如今十年过去,网上越来越多的人开始讨论游戏同步技术了,然而很多文章往往只针对某种特定的游戏情况,而观点又经常以偏概全.很多人并没有真正开发过实时动作游戏,更别说了解同步技术的前世今生了.转载别人的观点 ...
- loadrunner之协议选择
loadrunner 用LoadRunner测试c/s架构的软件,怎样去选择协议,困扰了我很久,看到这篇文章,感觉有点收获,所以特意转了过来,希望对大家有用. 首先,什么是协议? 协议无非就是一个约 ...
- 物联网应用层协议选择和分析--MQTT、CoAP 、HTTP、XMPP、SoAP
物联网应用层协议选择和分析--MQTT.CoAP .HTTP.XMPP.SoAP MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)最早 ...
- 直播网络 的协议选择
转自:http://www.cnblogs.com/ningskyer/articles/5534512.html 上篇我们讲述了如何让直播内容以"最短"路径从主播到观众上,传输层 ...
- 状态同步的mmo网络游戏中的帧率
疑问: mmo网络游戏中, 玩家操作自己A角色在游戏客户端放了1个技能, 游戏服务器收到这个"A放了技能"的指令, 游戏服务器计算这个技能的结果(比如B受到了攻击掉血,A减少魔法值 ...
- 使用udp协议实现服务器端程序时,uIP中UDP协议实现的改进
摘 要: uIP作为一种广泛使用的轻量级嵌入式TCP/IP协议栈,其UDP协议的实现还不够完善,目前最新的1.0版本中仅实现了UDP客户端,尚没有实现UDP服务端.为此,对其进行了以下三方面的改进: ...
最新文章
- 意外终止_美国留学本科意外终止怎么办?
- python模块-random
- Qt Designer下的一些基础操作
- Android移动开发之【Android实战项目】漂亮Button样式
- iptables学习笔记
- 银河麒麟V10入选2020中国十大科技新闻
- apache poi使用例_POI 与 JXL 054
- Transformer10个重要问题
- 关于apppium启动微信,每次都要重新登录的解决方法
- python图片x轴数据过多_一个操作证明python数据可视化比excel强百倍:X轴刻度间隔显示...
- SVN 错误中文对照
- Eclipse版本控制插件Subclipse与Subversive的区别
- matlab圆形数据集,Matlab处理SPEI全球数据集
- 深度学习开源数据集整理
- Codeforces 1016C Vasya And The Mushrooms(动态规划)
- linux startx错误,Linux startx命令错误:
- 什么耳机适合跑步、分享五款公认最好的跑步耳机
- jenkins接入企业微信提醒
- java dna框架_DNA - IOC依赖注入 - 组件类库 - JAVA开源项目 - 开源吧
- 测井计算机使用的总线,测井数据处理开始步入工作站时代