Arrays 存储游戏对象的更好方法?

Arrays 存储游戏对象的更好方法?,arrays,binary,tile,Arrays,Binary,Tile,我正在编写基于瓷砖的2d游戏 我将第一层(水、草、泥土等)存储为二维整数数组,其中每个值[x,y]表示特定的瓷砖 没关系,但我还需要以某种方式存储第二层(对象)。不可能将2d数组用作平铺,因为每个对象都有一些额外的数据。例如:胸部对象包含关于其中项目及其编号的数据,烤箱包含关于燃料的数据等等 我更喜欢将这两个图层永久地存储在RAM中,因为我的地图并没有那个么大。我需要将第1层和第2层保存在文件中。对于layer1,我使用二进制文件,它既快速又简单 所以我很感兴趣,存储对象层最有效的方法是什么?(

我正在编写基于瓷砖的2d游戏

我将第一层(水、草、泥土等)存储为二维整数数组,其中每个值[x,y]表示特定的瓷砖

没关系,但我还需要以某种方式存储第二层(对象)。不可能将2d数组用作平铺,因为每个对象都有一些额外的数据。例如:胸部对象包含关于其中项目及其编号的数据,烤箱包含关于燃料的数据等等

我更喜欢将这两个图层永久地存储在RAM中,因为我的地图并没有那个么大。我需要将第1层和第2层保存在文件中。对于layer1,我使用二进制文件,它既快速又简单

所以我很感兴趣,存储对象层最有效的方法是什么?(再一次,我想在游戏操作期间一直将其保存在RAM中,并将其保存为二进制文件)
谢谢

最简单的方法是存储一组对象,如下所示:

  • 对象数量
  • 对象数据
  • 每个对象数据可以是可变长度的记录,如下所示:

  • 对象类型(树、敌人、树干e.t.c.)
  • x、 y坐标
  • 取决于对象类型的附加数据(树的高度、敌人的攻击和防御、树干的内容物再次作为阵列e.t.c)

  • 通过这种方式,您可以根据对象类型读取/写入其他对象数据。

    我认为,我可以使用可变长度数组的2d数组来存储它。并使用一些除数将其存储在二进制文件中,即:

    (如图所示) 我们有N*N个这样的记录存档

    所以arr[0][0][0]给了我一种对象类型,arr[0][0][n]给了我一些额外的信息。只需要编写一些解析器


    你怎么认为?你没有指定语言,但是假设它允许OOP,你可以为第二层中的每个项目创建一个类,然后使用这些对象的2D数组。我使用C++,是的,这是个好主意,但是如何将它存储在文件中呢?此外,我认为这需要大量的内存,因为树木和石头物体没有额外的信息,而箱子比烤箱有更多的这样的数据。而且2d数组中的大多数这样的对象都是空的,因为我并没有在每个磁贴上都有对象。但我如何在RAM中存储这样的记录呢?当然,我可以将对象作为列表存储在文件中,但我不知道如何从RAM中使用它。你推荐什么样的结构?我想第二层也最好存储为二维数组。因此,您可以很容易地回答问题“坐标x,y是什么?”使用抽象函数“GetType()”为对象创建一个接口,并从该接口继承所有对象。在每个对象中重写“GetType()”以返回对象的类型。