2022-12-04周总结

这周事情比较杂

足球微信小程序

同步UI框架直接修改异步加载问题

我们找的是一个同步的UI框架,因为小程序的需要所以要对资源加载改成异步,改的方式是直接在资源加载上面做了异步化的修改,导致的问题就是,我们在打开A界面之后,如果在A没加载成功就关闭会关闭不成功,因为管理A的数据结构是在A加载完成才创建的,关的时候还没到内存中,所以关失败了。

能想到的解决方案就是:

  1. 先创建A的临时的数据结构到内存中,资源加载成功之后在根据A的状态判断是否显示
  2. 把整个UI操作改成一个队列,每个操作都需要等待异步完成之后才算完成再进行下一个操作

第二个在用户体验上可能会不是特别好,要完美的解决可能需要1这种方式。

找的第三方UI框架用起来坑点还是比较多的,包括之前找的滚动组件,在改成异步加载item的图片之后导致一些图片加载不正确问题。后续希望能够有一套自己能完美支持异步的UI框架,以及对应的一些UI组件。

内存问题

这周内存问题主要处理了两个:

  1. 把动态图片合成了大图
  2. 代码分包

合成大图做了以后能够正确的被小程序转换工具压缩贴图了,但感觉内存占用没有优化特别多

代码分包按照官方文档主要为了解决启动时候内存过大及CPU过高问题,我们总共有9W+函数,跑了下只用到了2W+函数,效果没有对比过,应该是有一些帮助,至少之前本来IOS15.4启动白屏问题解决了

算力问题

目前想一次性解决比较困难,所以把计算比较繁忙的地方都改成async方式,让他不要在一帧内算完,改成多帧去算,并增加了等待UI,交互体验上更友好了点。

这周发布了优化后的小程序1.0.6版本

爆炸足球

发布了1.1.0版本

另外出现了一个成就会一直发奖励的BUG:

这个BUG原因是判断有没有发奖励是通过当前完成数量和配置需要的数量的比较来完成的,但是比较坑爹的是外面有地方会清除这个当前完成数量,也就是可以重复完成。

这个BUG之前也出现过一次,让写成就的人改成给每个成就增加一个状态,如果状态已经完成了,后续所有操作该成就进度的地方都应该被return掉,做的时候还需要考虑到线上已经完成的成就数据的兼容性问题。

同事提出增加一个报警机制,客户端如果有异常没捕获的异常,就把该异常信息发送到钉钉,这个挺好的,能帮助我们监控线上客户端的一些问题,后续其他项目也推广下

3D项目

美术要调模型展示的效果,但是我们提供的Shader功能实在太少了(只有个漫反射),所以这周主要还是在整理这块的Shader,但感觉还是会有点问题。后续整理完了会有一个相关的总结文档: Unity Shader光照研究(一)

另外因为技能重做,和同事讨论了下回合制的战斗流程上的一些概念:

  1. 每场战斗
  2. 每回合(所有人出手一轮算一回合)
  3. 每出手(轮到某个人出手)
  4. 每轮(每次出手不一定只有一个人行动,比如攻击方打完之后出发了连击、反击等等,该次出手里面,每个人的行动算一轮)
  5. 每次(技能可能会释放多次,比如对某一排敌人释放两次技能功能)
  6. 每段(每次的技能会触发多段伤害)

整体结构还是比较清晰,后续程序结构上可以按照这个结构做,战斗控制的状态机节点也可以按照这个流程去设计

这个项目整体客户端还是偏弱了些,导致项目到了中期客户端一直会遇到各种问题,包括进度、技术研究、文件夹不规范、代码不规范、美术配合问题等等,都需要一一去解决,好在后面重点会回到这个项目,慢慢去攻克每个问题吧。

其他吐槽

  1. 健身了也大半年了,结果周六体检的时候说我还是轻度脂肪肝,看来我的佛系健身不太行
  2. 周六起来黄码了,家附近这一片都需要三天三检,但核酸点又少,天气又冷又下雨,排队人都很多。本来周日想带娃逛逛超市,结果因为核酸人太多没做成。甚至楼下星巴克想买个咖啡,也因为黄码不给买,感觉这个黄码已经比较影响我的生活了。但是午睡一觉,起来又莫名绿码了,就一脸懵逼。刚刚在写这博客的时候又看到杭州不再开始强制核算检测了,这感觉是疫情以来的一个转折点了,改成让每个人对自己的健康负责了。以往疫情早点过去吧。