【问题标题】:What coding issues can be significant in damaging a game's performance? [closed]哪些编码问题会严重损害游戏的性能? [关闭]
【发布时间】:2014-01-24 15:04:12
【问题描述】:

我刚刚用 Java 完成了一个 2D 游戏,我已经做了一段时间了。

我发现在某些计算机上运行良好,而在其他计算机上(总体上不是特别慢),游戏运行速度稍慢,并且每隔一秒左右就会出现轻微中断。不完全平滑。

由于我是做游戏的初学者,而且可能因为我没有提前计划好游戏的一切,所以游戏的代码相当长、笨拙,而且可能效率低下。

我想在我的下一个项目中改进这一点。所以我的问题是 - 一般来说,常见的 2D 游戏在计算机上变慢的主要原因是什么

为了设计一个高效的游戏,下次我最应该注意什么?

  • 制作少量课程? (即使班级很小 那些?)
  • 避免重复代码? (即使是一小段代码,例如 简短的if 语句)。
  • 避免运行过多线程?
  • 还有别的吗?

显然,以上所有方法都被推荐用于高效的程序。

但我想知道,游戏代码中的哪些内容可能特别对于制作高效的应用程序很重要,哪些内容不那么重要且不会节省大量内存。

欢迎提供任何建议 - 可能是关于游戏设计,或更具体的编码问题。

我不知道这是否重要,但请注意,我主要讨论的是实时游戏,使用不断更新游戏和显示的“游戏循环”。

【问题讨论】:

  • 不完全是这个地方,但这是一个很酷的问题,我想听听回复。如果/当它关闭时,请在不同的 StackExchange 上发布类似的帖子并将其链接到此处!
  • 可能有很多东西。使用性能工具检查大量使用的代码块。特别检查代码中的瘦循环
  • @Frode 什么是“性能工具”?
  • @user3150201 分析器

标签: java performance memory-efficient


【解决方案1】:

在尝试提高任何程序(而不仅仅是游戏)的性能时,重要的是 - 不要猜测

如果我或任何人说“它在你的集合类中”,或者“它在你的渲染中”,或者“它在你的内存管理中”,或者“它在你的编译器优化中”,你能相信吗? 简短的回答 - 不 - 因为这是一个猜测。 这可能是真的。这可能是假的。没有人知道,在你的情况下。

说而不是猜测“使用分析器”的人是在正确的轨道上。 在我看来,还有一个更好的方法,spelled out here。 如果你想知道原因,我会进一步解释,但对于任何程序员来说,最困难的部分是停止思考,让工具告诉你要看什么。

【讨论】:

  • +1 尽管机器之间的不同行为通常是由于线程问题造成的,而这些问题无法通过分析轻松检测到。
  • @assylias:如果你有一个可以同时暂停所有线程的调试器,比如 Visual Studio,那么我的方法确实有效。困难的地方在于,如果有太多的跨进程通信,以至于很难说出整个事情在等待什么。
猜你喜欢
  • 2010-11-24
  • 1970-01-01
  • 2011-10-13
  • 2013-06-17
  • 2014-06-17
  • 2016-02-10
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多