Java 游戏中的延迟

发布于 2024-12-06 17:20:33 字数 306 浏览 0 评论 0原文

我正在用 Java 编写一个游戏。而且,哦,奇怪的是,我遇到了性能问题。我对油漆本身进行了基准测试 - 在 3 毫秒内完成 1000 次循环。游戏逻辑甚至低于此。到目前为止,一切都很好。但我仍然遇到一个恼人的滞后:滚动时、缩放时、单击时。当我放大并放置更多对象时,问题会变得更糟。但是,即使我将这幅画循环播放 1000 次,延迟也或多或少保持不变,所以不可能是这样。 我尝试将循环放入任务中 - 仍然相同。我尝试在绘画之间暂停任务 - 还是一样。 动画运行如丝般流畅(因为帧速率稳定且高,这是有道理的)。那么我到底如何以有序的方式组织输入呢?把它们全部放在一个单独的线程中? 任何意见都将不胜感激!

I'm writing a game in Java. And, oh wonder, i have performance issues. I benchmarked the paint itself - 1000 cycles in 3 ms tops. The game logic is even below that. So far, so good. But i still encounter an annoying lag: When scrolling, when zooming, when clicking. The problems get worse when i zoom in and more objects are placed. But still - even when I loop the painting a 1000 times the lags stays more or less the same, so that cant be it.
I tried putting the loop in a task - still the same. I tried pausing the task in between paints - still the same.
Animations run as smooth as silk (since the framerate is stable and high, that makes sense). So how on earth do i organize the inputs in an orderly fashion? Put them all in a seperate thread?
Any input would and will be greatly appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等待圉鍢 2024-12-13 17:20:33

听起来您好像直接在正在完成 UI 更新的 Swing 事件调度线程上使用侦听器回调。您应该使用命令队列,并在调用回调时将事件放入队列中,根据命令的性质,然后在与 EDT 无关的主游戏更新循环中使用它。

It sounds like you're using listener callbacks directly on the Swing Event Dispatch Thread, where the UI updates are being done. You should use a command queue, and put events on the queue when a callback is invoked, with the nature of the command, then you use this in the main game update loop that has nothing to do with the EDT.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文