平铺2d世界地图大小问题

时间:2011-05-09 12:48:18

标签: xna xna-4.0

嘿所有,我正在创建一个基于2D平铺的XNA游戏。基本上,角色可以一次向一个方块移动任何方向。我正在使用Tiled地图编辑器:http://www.mapeditor.org/来创建我的地图。我还没有找到任何好的教程或文档。

这是我的问题:

我正在尝试将一个非常大的世界地图加载到我的游戏中。每个网格空间为32x32像素。地图本身是1000x1000个网格空间。第一眼看,由于尺寸的原因,这看起来很糟糕。当我将这个WorldMap加载到我的游戏中时,XNA会因为图像太大而引发内存不足错误。我觉得我是从错误的角度接近这个。有谁知道处理大型世界地图的更好方法?仅加载角色可以看到的内容会更好,但这样会更有效,但这并不能解决我加载这个巨大图像的问题。另一个想法是每个区域的图像较小,但我不知道如何做到这一点,因为它是一个世界。任何想法,技巧,教程,我相信这是一个常见的问题,已经使用几种不同的解决方案多次解决。谢谢!

1 个答案:

答案 0 :(得分:2)

当我创建2D XNA游戏时,我做了:

  1. 我自己的二进制映射文件格式。此文件包含地图名称,地图宽度和瓷砖等高度以及地图数组。它只是字节数组(byte []),其中每个值对应于tile类型。
  2. 瓷砖类型。这只是一个简单的类,有一些属性:移动成本(如果玩家不能在这个区块上移动,则为-1),哪种类型的生物可以生活在这个区块中,平铺图像等。
  3. 平铺类型db。它只是xml文件包含tile类型。
  4. 所以,当游戏加载一个级别时:

    1. 加载地图并在此地图中使用的图块类型数据库图块中查找。
    2. 为此图块加载适当的图像。只有一次。它可以重复用于相同类型的不同瓷砖。
    3. 仅绘制具有一些保留的可见(对于玩家)图块。例如,宽度仅绘制screen_width / tile_size_y * 2,高度绘制screen_height / tile_size_y * 2。当玩家移动重新计算可见的瓷砖时。