如何理解游戏引擎中的逻辑帧?
希望答主能说说游戏引擎里面帧和逻辑帧的概念
- 165 个点赞 👍
定义:
1.游戏世界里所有的物体更新一次物理信息(速度,位置,碰撞消息.....)花费的时间称为一次逻辑帧时间。你可以理解为游戏世界刷新了一次。
2.一般把每次把物理信息绘制成图像信息显示到屏幕上的时间称为绘制(图像)帧,一般来说所谓的游戏帧率也指的是这个。你可以理解为画面刷新了一次
特点:
1.逻辑帧一般情况下是固定长度的,比如逻辑帧定义为20毫秒,那1秒内必定会更新50次逻辑帧。
2.图像帧可以是长度不固定的,和当前的计算机性能或其它玄学问题有关。
问题:
1.一定是逻辑帧内处理物理信息,图像帧处理图像信息么?
答:不对,粒子系统,动画计算,不影响游戏结果的物理计算都可以并应该放到图像帧中计算。准确来说逻辑帧只需要处理影响游戏结果的物理计算。
2.为什么要分逻辑帧和图形帧?
答:首先一般逻辑帧的帧率会远大于图形帧,以保证游戏世界的平稳连续运行,避免碰撞丢失,多人联机结果不同步的一系列问题。第二网络游戏中帧同步或状态同步,服务器只需要计算逻辑帧而不需要计算更加耗费运算资源的图像帧,极大提高了执行效率。第三部分游戏录像只需要保存逻辑帧数据即可,便于回放或拍摄游戏快照。除此之外还有很多不一一列举
3.除了逻辑帧图像帧还有别的么?
答:有!键盘,鼠标,触摸屏,网络.....等其它游戏输入都可能有其单独的同步速率(也可能和逻辑帧同步)。
4.如何加深对游戏这类概念的理解?
答:不要做云理论带师,一定要自己做一个游戏!
编辑于 2022-11-30 15:38・IP 属地福建查看全文>>
DBinary - 85 个点赞 👍
细细回味,从当初同样的疑惑,到现在的常识,蓦然回首,将近十年了,这里就趁着这个机会,好好回顾一下。
这个事情还得从电影说起,最开始人们发现视觉暂留效应,到制造出第一部实际意义的电影,这个中间经历了漫长的时间,而且经过长期的实践经验得出,只要不低于24帧/s人眼就几乎无法察觉出间断感。
后来当人们开发2D游戏的时候,也是用的这个原理,为了保证视觉观感的连续性,流畅性,也要求游戏呈现画面的帧率不低于24帧,当然这个由于人眼本身就是一个低通滤波器,对于过快的速度,还是能够感受出来些许变化。
后来由于游戏开发经验的积累,一些固定的品类游戏开发方案,慢慢地沉定和抽象成引擎了,刚开始主要是单线程模式,逻辑和渲染耦合还是比较大的,这个时期渲染和逻辑帧都几乎没有区分,随着渲染品质的提升,游戏体验越来越丰富,渲染和逻辑就彻底分开成不同的线程来负责了。
题主所说的逻辑帧想必不是这个意思,因为前面渲染帧(呈现画面)的速度跟实际逻辑处理相匹配(类似于电视中所说的同期声),才能保持画面和逻辑效果(如交互,逻辑,输入,网络同步,音频,物理等等)一致,不会出现多模态下的不协调,俗称手感或者观感(或者体验)吧。
引擎的逻辑帧就是将复杂的游戏运行逻辑从复杂的渲染过程中独立出来,使得视觉效果,逻辑数据等内容全部分离开,分工更加明确后,各司其职,逻辑和渲染就可以做到像流水线一样的加速或者减速。比如骨骼蒙皮动画的Pose计算,可以隔着一个渲染帧算一次,玩家的移动等操作输入,可以一秒钟处理10次,无需一秒钟执行30次,而对于高速行驶的赛车游戏,需要开启连续物理碰撞检测(CCD),物理更新的频率可能需要高于渲染帧的次数。总而言之,自从人们把逻辑和渲染区分开来后,游戏的开发方式就发生了大幅度的变化,越来越重度和专业化了,其中可能因为性能需求或者画面效果需求,抑或是表现的一致性物理模拟,不同的网络同步频率要求,玩家不同的交互体验,都可以单独分离,各自设置自身的更新频率了,这个就是引擎中逻辑帧的实际表现形式。
当然凡事都有两面性,虽然越是独立的东西,耦合性就越低,可独立性就越强,但是带来的问题也很明显,比如人们看电影时,如果声音快过于或者慢于口型,那就会太难受了(别扭),感知上出现了偏差。游戏引擎中也存在类似的问题,叫做FramePacing(长短帧),这个本质上是由于显示器的固定刷新率和不均匀的逻辑帧间隔导致(画面呈现频率固定)。
游戏引擎本身的渲染帧率信号由显示器的实际刷新率决定,如60HZ,如果一个游戏只有30FPS,咋整,就得每隔一个频率重新送显一次,这个就需要游戏引擎侦听屏幕刷新的时机点,触发引擎的渲染帧准备,而渲染帧是由逻辑帧准备好的数据结果表现,需要先等逻辑处理完成,逻辑有长有短,这就造成了引擎逻辑帧还没有准备好数据,显示器的刷新时机点已经到了,这个时候就会出现实际画面重复一帧,实际视觉上和交互感知上很容易出现割裂感,导致体验上的卡顿,这个就是逻辑帧,渲染帧,显示器刷新率和体验之间的关系,必须保持这三者在体验上具备的“同步性”,当然这个时钟同步工具是显示器发起的,离散信号,如果满足线性关系,是可以插值的,这个也是为什么有些条件下逻辑帧可以低于渲染帧的缘由。
最近还有苹果等设备上推出了Promotion技术,主要是屏幕刷新率是可变的。要想知道如何协调好逻辑帧,渲染帧,显示器刷新率和体验上的关系这个是另外的话题了,有兴趣的可以私下讨论,希望能够给题主带来些许帮助。
编辑于 2022-11-26 06:38・IP 属地广东查看全文>>
Agnostic - 5 个点赞 👍
逻辑帧是区别于渲染帧的,一般我们提到的“帧数”都是渲染帧
渲染帧一般都是根据设备尽可能拉满的,而处理输入以及数据运算的逻辑帧,则没有拉满的必要,可以用较低的频率以节约性能。确保渲染帧率3帧的机器和30帧的机器的一秒钟游戏里都是过了一秒钟。对联机游戏而言,较低的逻辑帧率也有助于同步。逻辑帧过低也会导致输入得到反馈的延迟比较大
很多引擎渲染帧和逻辑帧并不分家,比如gamemaker的每个step都进行运算和draw,不过对gamemaker游戏来说不会有太大的问题,有性能问题时可以手动优化,让不需要每帧都执行的运算若干帧执行一次,错开各种运算在不同的时间进行
把每帧做一次的事变成每秒做一次的事(在不影响表现的前提下)是优化的一个很基础的技巧
编辑于 2022-11-25 12:27・IP 属地浙江查看全文>>
匿名用户