steam吧 关注:4,730,073贴子:73,391,255
  • 2回复贴,共1

解释一下优化的原理以及和引擎的关系

只看楼主收藏回复

需要详细知识的自己去问AI,也比自己道听途说和脑部好,我这里只从我自己的工作经验简单说下。
首先明确,优化不是具体的某一项或者几项方法,优化是从始至终贯彻在游戏过程中的思想,是抽象的概念,既是架构,也是工作流程,还是代码逻辑,和任何公司或者引擎或者语言都不是绑定的。
常见的几种原理。
常见的做开放世界的方法可以说是拆东墙补西墙,远处的资源精度随距离降低,附近的精度最高,不在视野内的剔除,从四叉树到LOD到nanite都是基于这个原理,这种判断是动态的,本身判断的运算就很多,需要结合多线程和GPU进行优化。
静态处理,静态和动态的区别不是看动不动,而是参不参与实时计算,游戏的逻辑是每帧运行的,不参与计算的计算一次放着就行了,比如灯光烘焙和场景初始化,烘焙本质是用硬盘空间换运算性能,反过来用运算节省硬盘也是一种方法,比如资源复用和实时生成。
合批处理,需要理解渲染管线的流程,CPU要把模型贴图传递给GPU渲染,这样的一次流程叫一次drawcall,这个次数是根据场景里每有一个单独的物体就要进行一次drawcall,drawcall多了会带来很大的性能损耗,所以减少drawcall是重点,结合前面的静态处理,就是把多个不用单独处理的物体合并成一个,一次性发送给GPU,相当于把几十次drawcall合并为一次,是重要的优化方法。
合批处理进一步,处理大量的重复物体,类似与草地和树,和风吹的效果,其实传一个就行了,到GPU流程里再进行复制和差分。
再进一步,脱离CPU直接在GPU计算?这个也是常见的优化方法,还有现在的新显卡的AI补帧和插像素,因为很多像素其实是可以预见的不需要特地计算,减少性能损耗何乐不为?
还可以GPU缓存数据避免GPU端的重复计算,和静态处理原理类似,都是最大化减少重复计算。
多线程处理,绝大多数游戏都是用一个主线程运行逻辑的,多线程辅助运算数据,游戏天然就不方便用多线程,所以一般用来处理特别复杂的计算,或者不参与主要逻辑的运算。
还有非常多的方法,可能写几万字也说不完,优化是贯彻到所有流程所有细节里的,大多数优化方法都是必要措施,不做直接运行不动,因为现在的硬件的性能还是非常优先,对游戏制作来说仍然是捉襟见肘,不存在不做优化的可能性,只有好坏的区别。


IP属地:浙江1楼2025-09-15 01:40回复
    还有对象池,fps游戏的子弹需要频繁创建和销毁,创建和销毁都是昂贵的操作,所以一般创建出来不销毁,子弹击中后就隐藏起来,放到池子里,下次开枪再拿出来用,当然这种优化属于当年电脑配置差比较有效,现在的优化效果很有限


    IP属地:浙江来自iPhone客户端2楼2025-09-15 09:12
    回复
      2025-10-17 22:32:39
      广告
      不感兴趣
      开通SVIP免广告
      真科普又不看,就爱靠自己脑补


      IP属地:浙江来自iPhone客户端3楼2025-09-16 09:22
      回复