[UE4]游戏主循环

游戏的运行模型

  理解游戏的运行模型,对处理很多游戏错误有非常大的帮助。

  游戏是有一个主循环的。那么游戏主循环做了什么事情呢?

  

   游戏主循环一次就表示一帧,游戏主循环包括:接受输入、处理游戏逻辑、渲染、Sleep。

  帧的英文是Frame,帧率英文是Frame Per Second(简称FPS)。

  一般游戏的帧率是60FPS,也就是一秒渲染60帧。60帧的情况下,游戏会非常流畅,不会感觉到卡顿。

  60FPS的游戏中,一帧是1/60=0.0166666666666667秒,大约是17毫秒。

  电影的帧率是24帧,电影比游戏慢多了,为什么电影是24帧呢,这个是有历史原因的,早期的电影是使用胶卷制作的,帧数越多使用的胶卷越高,成本也就越高。

  如果电影中晃动镜头特别多的时候,就会感觉画面糊成一片,看得很不清晰。为什么游戏的帧率普遍要求要比电影高呢?这是因为游戏是有操作的,尤其是动作游戏,玩家每操作一次都要在画面上体现出来,如果帧率过低,就感觉到有延迟。

 Sleep的作用

  主循环的最后一步的Sleep的作用是稳定帧率。在60FPS的游戏中,一帧是17毫秒:

  一、如果游戏主循环的前三个步骤(接受输入、处理游戏逻辑、渲染)的执行时间小于17毫秒,假设8毫秒就完成了前三个步骤,那么就Sleep等待9毫秒;如果不进行Sleep,游戏的速度就会加快。

  二、如果游戏主循环的前三个步骤执行时间超过了17毫秒,比如30毫秒才完成前三个步骤,最后一个步骤Sleep就不会被执行,玩家就会感觉到画面卡了一下。

 

如果知道游戏的帧率

  有一个选项在开发游戏的时候很重要,一定要打开并一直关注。

  

  如图所示:37.42FPS表示帧率是37.42,26.72MS表示运行一帧要26.72毫秒。

  在游戏开发过程中,应该一直关注FPS,如果发现FPS突然掉了,就能大概知道是什么地方出了问题。

 

  理解游戏主循环模型,就能理解很多游戏错误是怎么产生的。

 

posted on 2018-12-25 21:34  一粒沙  阅读(1775)  评论(0编辑  收藏  举报