32

我一直在研究使用 Slick2D 进行游戏编程,我开始怀疑从长远来看,了解 LWJGL 是否会更有帮助。一方面,Slick2D 快速且简单,但 LWJGL 似乎更具适应性,因为它同时具有 2D 和 3D 功能。对于 Java 中级并且想要制作游戏的人来说,是否值得立即学习 LWJGL 的额外努力?

4

2 回答 2

77

我不认为这两者真的相关。我的意思是,我知道 Slick 是建立在 LWGJL 之上的,但这不是我要说的。

Slick 的存在是为了利用硬件图形和声音加速,并通过一组对 2D 游戏有意义的对象和类(精灵和瓷砖地图,而不是几何模型和 3D 坐标空间)为 2D 游戏提供这种能力。就是这样 - 这就是它的使命,它的构建是为了在解决这个问题方面表现出色。Slick 基于 LWJGL 的事实只是 LWJGL 是一个库,您可以在其上构建类似 Slick 的东西。在人们尝试用 Java 制作游戏的历史上,图形性能一直是让任何优质产品上市的主要问题。Slick 基本上消除了桌面上 2D 游戏的障碍(希望有一天在 Android 上)。

在考虑 Slick 与 LWJGL 时,它是一种“适合工作的正确工具”之类的东西。如果您正在用 Java 构建 2D 游戏,那么 Slick 是一个很棒的方法。如果您实际上是在构建 3D 游戏(或具有自上而下的 2D 视图的游戏,但您需要以 3D 实际渲染场景),那么 LWJGL 可能是您的最佳起点。

但是,如果您正在构建一个 2D 游戏,并且您认为值得花时间在 LWJGL 中构建它,那么您将要构建的 99% 的内容将是 Sprite、动画、键输入、寻路和声音。Slick 已经为您构建了这些东西 - 几乎可以保证您正在重新发明轮子,而且尽管您是善意的,但您不会像在 Slick 上工作多年的开发人员那样做得好。2D 游戏渲染是一个已解决的问题——不要浪费你的时间。除非您认真研究渲染引擎(我什至不是在谈论游戏引擎你花时间研究游戏玩法和机制,但实际的渲染技术)你会发现它不仅仅是有点令人沮丧。挫败感不会来自于它太难解决(你当然可以解决它),只是你将花费几个月的时间来构建它,当你完成后,你将拥有一些功能的子集包含在 Slick 中,但没有游戏可以展示。制作 Slick 的聪明人已经为您解决了 Java 中的 2D 游戏引擎的元素 - 充分利用他们的工作,不要花费数月时间尝试构建摆在您面前的东西。

最后打个比方,上世纪 90 年代初期 PC 游戏的巨大爆炸确实发生在 DirectX 上市时。当然,从 Atari、Apple ][、Commodore 等一直到现在都有视频游戏出现,但是当 DirectX 出现并让开发人员免于编写自己的游戏时,游戏和技术出现了巨大的飞跃。声音和视频的驱动程序。这就是当时开发人员在编写游戏时必须做的事情——为他们希望运行游戏的每个声卡和视频卡编写或许可单独的驱动程序。DirectX 让开发人员有机会不再担心这一点 - 只需担心硬件与某个版本“DirectX 兼容”,并且提供他们所需的性能所需的性能微乎其微,仅此而已。

很难解释这到底有多大——但如果你用 Java 开发 2D 游戏——Slick(或其他游戏工具之一)就是你的 DirectX!

于 2011-12-03T05:37:36.053 回答
4

normalocity 的回答非常好,我只想说,如果你想真正优化 Slick2D 中的绘图场景,你需要知道 Slick 的标准绘图方法使用 glBegin/glEnd。

有很多精灵(~10 000),这种方法真的很慢。为了避免这个问题,你可以在一个非常大的精灵表上使用 drawEmbedded 方法,或者使用 LWJGL 制作你自己的方法。最好是进行 VBO 渲染 => http://lwjgl.org/wiki/index.php?title=Using_Vertex_Buffer_Objects_(VBO )。

于 2012-08-19T15:58:46.927 回答