我一直在用Slick2D钻研游戏编程,我开始怀疑从长远来看,知道LWJGL会更有帮助。一方面,Slick2D快速而简单,但似乎LWJGL在具有2D和3D功能的意义上更具适应性。对于那些在java中间并且想要制作游戏的人来说,是否值得花费额外的努力来立即学习LWJGL?
答案 0 :(得分:76)
我认为这两者并不相关。我的意思是,我知道Slick是建立在LWGJL之上的,但这不是我在这里得到的。
Slick的存在是为了利用硬件图形和声音加速,并通过一组对2D游戏有意义的对象和类来为2D游戏提供强大功能(精灵和平铺图,而不是几何模型和3D坐标)空间)。就是这样 - 这就是它的使命,它的建立是为了解决这个问题。 Slick基于LWJGL的事实只是LWJGL是一个库,你可以在其上构建类似Slick的东西。在人们试图用Java制作游戏的历史中,图形性能一直是在市场上获得任何质量的主要问题。 Slick基本上消除了桌面上2D游戏的障碍(希望有一天能在Android上使用)。
当考虑Slick vs. LWJGL时,它是“正确工作的正确工具”。如果您正在使用Java构建2D游戏,那么Slick是一种非常棒的方式。如果您实际上正在构建3D游戏(或者具有自上而下的2D视图的游戏,但您需要以3D形式实际渲染场景),那么LWJGL可能是您的最佳起点。
但是,如果您正在构建2D游戏,并且您认为值得花时间在LWJGL中构建它,那么为了完成这项工作,您要构建的99%将是Sprites,动画,键输入,寻路和声音。 Slick已经为你构建了这些东西 - 你几乎可以保证重新发明轮子,并且像你一样善意,你不会像在Slick上工作多年的开发人员那样做。 2D游戏渲染是一个解决的问题 - 不要浪费你的时间。除非你认真进入渲染引擎(我甚至不是在谈论游戏引擎你在那里花费时间来制作游戏和机制,而是实际的渲染技术)你我会发现它不仅仅是有点令人沮丧。沮丧不会来自难以解决的问题(你当然可以解决它),只是你花了几个月的时间来构建它,当你完成后你将拥有一些功能的子集包括在Slick中,但没有游戏可以展示它。让Slick的聪明人已经为你解决了Java游戏引擎的元素 - 利用他们的工作,而不是花费数月时间尝试在你面前构建一些东西。
最后一个类比,90年代早期PC上游戏的巨大爆炸确实发生在DirectX上市时。当然还有一直到Atari,Apple [,Commodore等]的视频游戏,但是当DirectX登陆并节省开发人员编写自己的东西时,游戏和技术出现了巨大的爆炸式增长。声音和视频的驱动程序。这就是开发人员当时正在编写游戏时必须做的事情 - 为他们希望游戏运行的每个声卡和视频卡编写或许可个别驱动程序。 DirectX让开发人员有机会不再担心这一点 - 只担心硬件与某个版本“兼容DirectX”,而且提供所需性能的能力极低,就是这样。
很难解释这有多大 - 但是如果你用Java开发2D游戏 - Slick(或其他游戏工具之一)就是你的DirectX!
答案 1 :(得分:4)
来自normalocity的答案非常好,我只是想说如果你想在Slick2D中真正优化你的绘图场景,你需要知道Slick的标准绘制方法使用glBegin / glEnd。
有很多精灵(~10 000),这个方法真的很慢。为了避免这个问题,您可以在非常大的精灵表上使用drawEmbedded方法,或者使用LWJGL创建自己的方法。最好是制作VBO渲染=> http://lwjgl.org/wiki/index.php?title=Using_Vertex_Buffer_Objects_(VBO)。