今天跟同事聊聊优化帧率的思路,然而这个话题的具体方案是非常多的,且因情景而异,但是思路还是可以汇总下,利用中午睡觉时间在一个同事的协助下做了简要罗列,具体如下:

  (出发点:cpu,io,内存,资源,gpu,网络策略、协议结构,ds...and so on)
  逻辑科学化,找出耗时点或短板,过滤无用功。比如帧率分级,共享内存代替协议交互。
  将同步阻塞的逻辑调整成异步回调。比资源加载。
  区分优先的、重要的数据,比如资源优先级队列,aoi。
  聚合思想,比如面板依赖多条小协议,可以将将这几条协议独立到另一条只为面板打开做的应答协议中去;统一udpate减少管理对象的访问。
  重复创建的对象可以通过对象池(减少重复创建)缓存或改为常驻内存。
  使用内存池,减少内存碎片,减少触发拓容频率。
  摊帧,比如lua的config加载。
  错帧,比如置脏标记(T7属性同步)。
  保证一些效果合格的情况下做一些抛弃,比如飘字和协议包阻塞情景。
  根据引擎特性做优化,比如合并dc的方法。
  预加载。
  效果分级,比如不同设备标记不同的等级,根据等级开/关/增强/减弱部分效果。
  策略分级,根据不同的玩法情景、设备等级去控制对象数量或缓存时间。
  资源优化:模型自身优化或做分级,比如协议结构的优化、模型顶点的减少,lod。
  延迟初始化,用到的时候才初始化。