尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

H5游戏性能优化系列-----配置相关优化

H5游戏性能优化系列-----配置相关优化
📅 发布时间:2026/6/20 13:58:28

配置文件这块儿还是有很多地方可以说道说道的,大部分前端同事可能进项目组的时候主程已经搞好了配置文件的全套流程,对于配置文件的一些细节可能了解的不多,这里就把我能想到的一些点列出来

H5游戏配置文件最常用的可能是从excel导出为json配置,这里就拿Excel表转json为例子, 假设excel每一列表示一个数据字段

配置文件打包工具相关

  • excel里面的众多字段,有些字段是后端字段,有些是策划做备注的,有些是前端使用的字段,这个时候导表工具必须支持按需导出,以减少最终json的大小
  • 假设道具表有itemId, desc, 导出的json每一行数据应该是{itemId: xxx, desc: "xxxx"}, 这个字段名是否是必须的呢?其实可以精简成[xxx, "xxx"]这种数据的紧凑形式,按照数组的方式去索引对应列的数据,而不是key-value形式,这样也能减少最终json的大小
  • 每一行数据如果导出成数组的形式,需要同步导出字段的enum,避免使用0,1,2这种魔法数字去索引对应字段
    1 const enum ItemField{
    2   itemId = 0,
    3   desc = 1,    
    4 }
    5 
    6 //在道具表某一行的数组获取对应字段就是
    7 array[ItemField.itemId]
    8 array[ItemField.desc]

     

  • 随着功能的开发,配置表越来越多,导出的json,最终应该合并成一个文件,避免进游戏的时候发起了N多个请求去加载配置文件
  • 配置文件最好能加上校验相关处理,比如A表的某个字段是B表的主键,这种加上校验避免策划只配置了A表,但是这个字段对应的信息在B表不存在

配置文件使用相关

  • 配置文件对于大多数游戏来说,是要在预加载阶段就必须要全部加载的,比如刚进游戏就要扫描红点,极大可能性就要使用对应的配置文件,所以配置文件一般放在预加载
  • 虽然配置文件在预加载时一次性加载,但是不一定加载完就立马全部展开成json, 全部展开会导致内存暴涨,我们可以对每个excel导出的json进行第一层的压缩成二进制,然后把这N多个二进制合并成一个大的二进制包作为最终的配置包,游戏预加载阶段加载到配置文件之后先进行最外层的二进制解包,实际后续用到某个具体的配置表时再解包第二层,得到某个表的具体配置,这样就防止在预加载阶段全部展开
    //假设我们用zlib处理压缩//导表工具处理示意
    item表 -> item.json -> zlib压缩-> item.obj
    equip表 -> equip.json -> zlib压缩 -> equip.obj
    ...//最终输出 config.obj这个就是我们的总配置
    item.obj  + equip.obj + ... -> zlib压缩 -> config.obj//实际使用
    预加载config.obj -> zlib解压缩得到一些利配置表的二进制 
    用到某个具体表的时候 ,找到对应表的二进制 -> zlib解压缩

     

  • 第一层的zlib解码,可以放在woker中处理,如果支持worker的话
  • 第二层如果觉得zlib耗时,可以用轻量级的库比如msgpack等等库
  • 预加载阶段加载到总配置的二进制包,进行zlib解压缩之后,原始的资源就可以立马释放了,避免占用双份内存

后话

自己写个导表工具无非是时间问题,主要是用到的excel的读写库。

市面上有成熟的导表工具可以参考:鲁班配表,很强大支持导出多种数据格式,地址:https://github.com/focus-creative-games/luban

相关新闻

  • Codeforces Round 1049 (Div. 2) E
  • 批量设置Excel样式格式(如:纸张大小,排版,字体等)+ 支持windows系统
  • 张瑜:牛市进程之十大观察指标 - Leone

最新新闻

  • Clawdbot本地AI网关:绿联NAS上的数字员工部署指南
  • SPI通信协议深度解析:时序、错误处理与实战配置
  • TradingAgents-CN:可审计的金融AI Agent工程化部署指南
  • 终极指南:如何用免费开源工具轻松抢到B站会员购热门门票
  • 无锡家电维修平台推荐:本地用户反馈较好的几家服务商深度实测对比——2026年6月最新发布 - 一步到家
  • Web自动化测试工具全解析:从Selenium到Playwright的实战选型指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号