当前位置: 首页 > news >正文

H5游戏性能优化系列-----协议相关优化

H5通讯协议这一块儿最长将的搭配应该是WebSocket+Protobuf这种模式吧,本篇就聊一下protobuf相关的优化。

Protobuf基本流程

  1. 导入protobuf库
  2. 一般是后端定义协议文件,xxx.proto
  3. 现在的引擎都是要求写Ts文件的,所以要生成协议类的.d.ts,这样写协议处理时才有代码提示
  4. 直接加载proto文件,然后用protobuf库动态生成消息类在内存中, 或者直接用pbjs等命令生成协议类的js代码

 

Protobuf的一些问题

在一些小游戏平台,比如微信小游戏平台,protobuf是不能直接加载proto文件然后动态生成协议类的,必须要将proto文件生成出对应的协议类js文件,这在proto协议比较少的时候,问题不是很明显,如果有成千上万个协议消息,生成的js会很大,进游戏的时候就必须要多加载这部分的js代码。

解决方法有以下几点:

  1. 协议定义的复用,比如各种消耗, costType, costNum, 可以定义成公用的,在其他协议类需要用到时直接引用这个公用的类型。
  2. pb生成的协议类js中,我们通过参数控制,只生成必要的函数即可。比如一个消息类,明确知道只会出现在前端发送给后端的过程中,那么生成这个协议的类中,只需要出现encode编码函数即可,因为前端不需要解码,同样对于明确知道是服务器返回的协议类型,只需要出现decode函数即可,不需要encode函数。
  3. 为什么在小游戏平台用不了动态加载proto这种形式,最终原因是protobuf的库中使用了eval或者new Function这种小游戏平台不支持的方式,花点时间魔改protobuf库,将用string生成函数的相关代码改成直接返回对应函数,截取一部分修改示意:

image

   4. 如果觉得改protobuf的js库麻烦又怕改了之后出bug,但是又不想生成协议类的硬代码,可以选择不用protobuf,  选择其他同时兼容web和微信小游戏的协议框架, 或者直接使用json结构,加上msgpack或者zlib压缩成二进制?

 

http://www.sczhlp.com/news/94305/

相关文章:

  • 包做包装的网站做网站头文件
  • 新乡网站建设哪家专业西安网站建设企业
  • 实现我的第一个langchain应用
  • 网站内容框架公司门户网站首页
  • 制作网页的模板的网站网站建设mfdos 优帮云
  • 学做宝宝衣服的网站随州程力网站建设
  • 网站运营总结网站开发培训费用
  • 网站管理系统后台软文怎么写
  • 网站软件下载安装雏鸟短视频app软件下载网站
  • 添加网站栏目的步骤库存网站建设定制
  • 广东省建设安全监督站的网站网站开发 上海
  • 做网站 信息集成过程的顺序网络项目免费的资源网
  • c 网站开发 环境配置兰州软件公司排名
  • 网站开发的背景意义免费建网站
  • 怎么学做网站世界工厂网登录
  • 家具网站模板网站后台管理系统安装
  • 甜品网站模板代码上海展览公司
  • 上海网站设计公司有哪些罗湖商城网站设计多少钱
  • 南宁百度网站公司吗网站前台功能
  • 湖南广源建设工程有限公司网站企业邮箱是怎么样的
  • 小说可视化系统设计(程序员副业项目)
  • MyEMS与开源浪潮:如何重塑全球能源管理的未来格局
  • React Antd or Antd Pro:findDOMNode is deprecated and will be removed in the next major release.
  • 单板挑战4路YOLOv8!米尔瑞芯微RK3576开发板性能实测
  • doms.ul.querySelectorvs document.querySelector:DOM查询的层级关系
  • 电脑网站拦截怎么解除快速建站的模板
  • 广州网上注册公司网站哪个网站可以找到毕业设计
  • 网站创建免费用户搭建网站分类
  • 上海网站制作多少钱销售方案怎么写
  • 穿越钱塘江:一条高铁隧道背后的技术挑战