Multithreading 关于游戏循环、勾号和实时编程的一些问题
首先,我想为我的近似英语道歉,因为我是法国人。我目前正在用java制作一个实时游戏,使用LWJGL。 我有一些关于游戏循环的问题:Multithreading 关于游戏循环、勾号和实时编程的一些问题,multithreading,real-time,game-loop,Multithreading,Real Time,Game Loop,首先,我想为我的近似英语道歉,因为我是法国人。我目前正在用java制作一个实时游戏,使用LWJGL。 我有一些关于游戏循环的问题: 我正在线程中运行渲染例程。这是个好主意吗?通常,渲染例程相当慢,不应该减慢世界更新(tick)例程的速度,这一点更为重要。所以我想在这里使用线程似乎是个好主意(减去使用线程带来的复杂性) 在world update例程中,我正在用当前时间更新实体列表。然后,每个实体都可以计算它们自己的deltaTime,对应于它们上次更新的时间。这与通常的更新循环不同,后者使用相
- 我正在线程中运行渲染例程。这是个好主意吗?通常,渲染例程相当慢,不应该减慢世界更新(tick)例程的速度,这一点更为重要。所以我想在这里使用线程似乎是个好主意(减去使用线程带来的复杂性)
- 在world update例程中,我正在用当前时间更新实体列表。然后,每个实体都可以计算它们自己的deltaTime,对应于它们上次更新的时间。这与通常的更新循环不同,后者使用相同的deltaTime更新列表中的每个实体。这似乎是合适的,因为线程渲染。这是个好主意吗?我应该使用第二种方法吗?如果是,是否仍需要线程渲染?如果是,我是否必须添加最大增量时间
- 总的来说,有一个最大的deltaTime是一个好主意吗
虽然这个问题已经问了几年了 阿福 渲染通常在分离的处理器GPU中完成,因此它们已经是一个分离的线程。但是,绘图命令在发送到GPU之前必须由图形驱动程序(在CPU中运行)进行处理,并且这种处理可以通过多线程的方式保存。无论如何,在这种情况下,您负责管理逻辑和渲染线程之间的同步 一般来说,游戏都是关于对象之间的交互,很难将状态图划分为完全分开的分区。因此,整个游戏状态通常变成单个图形,并且在渲染时无法更新该图形。在这种情况下,多线程对您没有好处 若您可以为渲染保留一个分离的不可变数据,那个么您可能会从在分离线程中渲染中获得一些好处。但除此之外,我不推荐它
此外,如果你真的想要一个实时游戏,你应该考虑GC。与GC相关的性能问题通常是制作实时内容的最大障碍。
如果不保持时间步长正确,您将获得随帧速率变化的物理效果。