zoukankan      html  css  js  c++  java
  • [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突然掉了,就能大概知道是什么地方出了问题。

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

  • 相关阅读:
    POJ 1142 Smith Numbers
    POJ 1171 Letter Game 解题思路
    人人德克萨斯牌出手规则整理
    OpenMP相关知识索引
    如何进行有效的沟通
    台哥算法练习:一个for循环打印九九乘法表
    啊哈,381654729!
    发牌的小窍门
    判断数abcdef能否被k整除(k属于[2,9])
    如何在数轴上找到一个数的倒数
  • 原文地址:https://www.cnblogs.com/timy/p/10176616.html
Copyright © 2011-2022 走看看