我想用Java和LWJGL创建2D游戏。这是一款复古的RPG游戏。因此,有一张非常大的地图(大约1000x1000或更大)。我想用图块来做,但是我不知道如何保存/如何渲染。
我以为像是带有数字的2D数组之类的东西,而渲染只是将正确的图块设置在正确的位置。
但是我认为地图越大,它就会越慢。
我希望你能帮助我。 :)
我的第二个建议是制作一个大图像,然后只选择其中的一部分(玩家所在的部分),但要知道要在哪里进行碰撞检测就很难了,所以这只是一个荒谬的想法。
谢谢您的建议!
最佳答案
正如所提到的评论之一,这个主题太大,以至于一个答案都很难涵盖。但我会根据个人经验给您一些建议。
至于将地图保存为2D数组,只要地图本质上相当简单就没有问题。我使用2D整数数组创建了相似的样式图(平铺)以表示地图。然后使用一种绘制方法将地图渲染为可以显示的图像。我使用了多个图层,所以我只是分别渲染地图的每个图层。请注意,我的大多数地图都是100x100或更小。
我建议这样的大地图使用某种缓冲区。例如,仅渲染可播放屏幕以及地图外部的微小偏移区域。例如。如果您的屏幕实际上是30x20的图块,则渲染35x25,然后根据当前位置更改渲染的内容。可以执行此操作的一种方法是将地图加载为“块”。基本上,您的地图会自动将地图分成50x50的块,并且仅在距离足够近以致可能被使用时才渲染块。
我还建议让绘图方法在主要游戏方法之外的自己的线程中运行。这样,您可以不断绘制地图,而不会出现随机闪烁或延迟。