gpt4 book ai didi

game-engine - 帮助游戏开发。渲染循环?

转载 作者:行者123 更新时间:2023-12-04 10:12:42 25 4
gpt4 key购买 nike

我正在开发一个简单的游戏,这是我的第一个游戏项目。

我发现的大多数示例都有一个渲染循环,其中所有的游戏逻辑也是如此,我只是不喜欢这样。
假设我有一个 X=0 的球,一个 X=10 的墙,在一台慢速机器中,第一个循环将球放置在 X=7 中,在第二个循环中,它将球放置在 X=14 中。只会让游戏崩溃!

这种“渲染循环”是制作游戏的正确方式吗?我应该编写代码在每一帧中检查这样的事情吗?例如,新帧 X=14,最后一帧 X=7,所以我应该检查是否有从 X=7 到 X=14 的任何内容??

我在想我应该为游戏逻辑和渲染循环设置一个单独的线程,我应该只是“拍摄”当前游戏逻辑的快照并显示出来,不是吗?

你们这些经验丰富的游戏开发者是如何解决这个问题的?

谢谢!

最佳答案

正如另一个答案所说,您看到的问题称为“隧道”这是“子弹穿过纸”的问题,子弹移动得很快,纸很薄,你怎么知道发生了碰撞?

如果你的世界边界很简单,这很容易。例如。在俄罗斯方 block 中,方 block 只允许左右移动,直到它们撞到侧面,并且很容易测试最底部的坐标是否撞到“地面”。这些测试很简单,因为您一次可以做一个轴,并且与侧面的碰撞意味着与坑底部的碰撞不同的东西。如果您有一个矩形房间,只需通过钳制其坐标来“停止”移动对象(如果其移动已将其置于房间之外)。 IE。如果房间宽度从 -3 到 +3,并且您的对象的 X 为 5,只需将其更改为 3 即可。

如果你想处理更复杂的世界,那就有点棘手了。您需要阅读“扫掠”几何碰撞。基本上,如果你有一个圆圈,你需要用一个胶囊来做碰撞测试,这个形状是通过从它的起点“扫过”圆圈到它的终点来形成的。它就像一个两端都有半圆的矩形。数学出奇地直截了当(恕我直言),但要正确理解并真正理解正在发生的事情可能会很棘手。不过还是值得的!

编辑:关于线程问题-无需使事情复杂化。一根线就好了。跳过更新帧也会变得困惑,并且非常先进,因为您实际上需要弄清楚“ future ”,然后对所有有趣的值进行插值直到那时。我自己并不称其为“渲染”循环,因为渲染循环只是该过程的一部分。

def GameLoop():
while True:
ReadInputs()
FigureOutWhatStuffDoes()
DrawItAll()

编辑 2:这似乎是一个有趣的讨论: http://www.gamedev.net/community/forums/topic.asp?topic_id=482397

关于game-engine - 帮助游戏开发。渲染循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2784171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com