问题标签 [game-loop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
12 回答
4268 浏览

winapi - 双核 Windows 游戏循环 50% CPU

仅游戏循环就使用了 50% 的 CPU 使用率,我还没有做任何渲染工作。我在这里做什么?

0 投票
11 回答
12742 浏览

game-loop - 为什么开发游戏需要“主”游戏循环?

我发现大多数游戏开发都需要一个主游戏循环,但我不知道为什么它是必要的。难道我们不能实现一个事件监听器并响应每个用户操作吗?然后可以在事件发生时播放动画(等)。

主游戏循环的目的是什么?

0 投票
1 回答
4333 浏览

c# - 游戏循环和时间跟踪

也许我只是个白痴,但我整天都在尝试实现一个游戏循环,但它只是没有点击。我从字面上阅读了我在 Google 上可以找到的每一篇文章,但问题是它们都使用不同的计时机制,这使得它们难以应用于我的特定情况(有些使用毫秒,其他使用刻度等)。

基本上,我有一个Clock每次游戏循环执行时都会更新的对象。

我的大部分内容都基于 XNA GameClock,但它被大大简化了。然后,我有一个Time类,其中包含UpdateDraw方法需要知道的各种时间。

我的主类保留了 的单个实例Time,它应该在游戏循环期间不断更新。到目前为止,我有这个:

时间类的实时属性非常好。现在我想要一个正确的更新/绘制循环工作,以便每帧更新状态可变次数,但在固定的时间步长。同时,Time.TotalVirtualTimeTime.ElapsedVirtualTime应相应更新。此外,我打算在未来支持多人游戏,以防对游戏循环的设计产生任何影响。

关于如何实现这一点的任何提示或示例(除了文章链接)?

0 投票
4 回答
901 浏览

performance - 游戏循环性能和组件方法

我有一个组织游戏循环的想法。我对性能有些怀疑。可能有更好的做事方式。

假设您有一系列游戏组件。他们都被要求在每次游戏循环迭代中做一些事情。例如:

好处:

  1. 良好的基于​​组件的应用程序,无依赖关系,良好的模块化
  2. 我们可以动态激活/停用、注册/注销组件
  3. 一些组件可以透明地删除或替换,系统仍然可以正常工作,因为没有发生任何事情(将 2d 更改为 3d)(团队合作:每个程序员都创建他/她自己的组件,并且不需要其他组件来编译代码)

疑点:

  1. 游戏循环中的内部循环,对 Component::run() 进行虚拟调用
  2. 我希望 Component::run() 返回 bool 值并检查该值。如果返回 false,则必须停用组件。所以内循环变得更加昂贵。

那么,这个解决方案有多好?你在实际项目中使用过它吗?

0 投票
9 回答
12175 浏览

c++ - Lua,游戏状态和游戏循环

  1. 在每次游戏循环迭代时调用 main.lua 脚本——这是好的还是坏的设计?它如何影响性能(相对)?

  2. .维护游戏状态。C++ 主机程序或b。来自 Lua 脚本或c。从两者同步它们?

(关于该主题的上一个问题:Lua 和 C++:职责分离

(我投票给每个答案。最好的答案将被接受。)

0 投票
3 回答
2227 浏览

directx - DirectX:游戏循环顺序,先绘制再处理输入?

我刚刚阅读了 DirectX 文档,并在IDirect3DDevice9::BeginScene的页面中遇到了一些有趣的事情:

为了在 CPU 和图形加速器之间实现最大并行性,在 调用 present 之前尽可能早地调用IDirect3DDevice9::EndScene是有利的。

我已经习惯于编写我的游戏循环来处理输入等,然后绘制。我是不是倒过来了?也许游戏循环应该更像这样:(显然是半伪代码)

根据文档的那句话,这个循环将“启用最大并行性”。

这通常是这样做的吗?像这样订购游戏循环有什么缺点吗?在第一次迭代后,我认为它没有真正的问题......而且我知道了解此类事情的实际速度增加的最佳方法是对其进行实际基准测试,但有其他人已经尝试过这个并且你能证明任何实际的速度提升?

0 投票
7 回答
6443 浏览

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

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

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

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

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

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

谢谢!

0 投票
3 回答
7042 浏览

c++ - Win32 API 中的游戏循环

我正在像 win32 GDI 一样创建游戏马里奥。我已经为游戏实现了新循环:

但是我的游戏一直在运行,直到我按下 Ctrl + Alt + Del (鼠标光标正在滚动)。

0 投票
3 回答
14550 浏览

java - 在不冻结 UI 线程的情况下实现游戏循环的最佳方法

我正在尝试用 Java 制作一个简单的 2D 游戏。

到目前为止JFrame,我有一个带有菜单栏的 , 和一个扩展JPanel并覆盖它的paint方法的类。现在,我需要开始一个游戏循环,我将在其中更新图像的位置等。但是,我坚持如何最好地实现这一目标。我应该使用多线程吗,因为如果你在主线程上放置一个无限循环,UI(以及我的菜单栏)肯定会冻结?

到目前为止,这是我的代码:

任何指示或提示?我应该把循环放在哪里?在我的主课上,还是在我的 GameCanvas 课上?

0 投票
4 回答
16136 浏览

c++ - C++ 游戏循环示例

有人可以为仅具有“游戏循环”的程序编写源代码,该程序会一直循环直到您按 Esc,并且程序会显示基本图像。这是我现在拥有的源代码,但我必须使用它SDL_Delay(2000);来使程序保持活动状态 2 秒钟,在此期间程序被冻结。

我只希望程序在我按 Esc 之前一直打开。我知道循环是如何工作的,我只是不知道我是在main()函数内部还是在函数外部实现。我都试过了,两次都失败了。如果你能帮助我,那就太好了:P