1

你最讨厌现代游戏循环的什么?游戏循环是否可以改进,或者是否有更好的替代方案,例如事件驱动架构?

4

4 回答 4

2

看来这真的应该是CW...

我现在正在学习研究生级别的游戏引擎编程课程,他们坚持使用游戏循环方法。当然,这并不意味着它是唯一/最好的解决方案,但它肯定是合乎逻辑的。使用循环可以确保所有游戏系统都可以运行,而无需请求它们自己的定时中断或其他东西。可以集中控制:在我当前的项目中,我有一个GameManager类,它在每一帧Update(float deltaTime)中依次循环遍历每个注册对象的函数。我不必调试事件系统或设置定时信号,我只需使用循环来调用一系列函数。没有混乱,没有大惊小怪。

为了回答您关于我最讨厌什么的问题,循环方法在逻辑上确实有助于自由使用继承和多态性,这可能会使对象的大小/复杂性膨胀。如果你不小心,这可能是一个轻微到可怕的陷阱。如果你小心,它可能根本不是问题。

于 2011-02-19T11:55:18.093 回答
0

通常,事件驱动架构最适合游戏(仅在用户想要完成某事时才做某事)。但是,你仍然需要有一个线程不断地重绘世界。

于 2011-02-19T05:11:19.253 回答
0

要完全基于事件,您可以生成一个额外的线程,该线程除了每 x 毫秒将 CPUTick 事件放入您的事件队列之外什么都不做。

在 JavaScript 中,这通常是更自然的路线,因为您可以轻松创建一个额外的“线程”,使用 setInterval() 向您发送事件。

或者,如果您在包含游戏的框架中已经有一个循环——比如浏览器中有 JS,或者 python 有twisted——你可以告诉循环器以固定的时间间隔给你回电。例如:

function gameLoop() {
   // update, draw...
}
window.setInterval(gameLoop, 1000/fps);
于 2011-02-21T16:04:13.443 回答
0

无论游戏中是否有任何事件,游戏都应该绘制自己并以固定速率更新它,所以我认为放弃游戏循环是不可能的。我仍然想知道是否有人能想到任何其他的游戏循环替代方案。

于 2011-02-19T04:49:58.523 回答