在 SQL 中存储游戏地图

mbr*_*ber 1 mysql sql database

地图将基于切片,并且具有以下两个主要数据存储要求

  • “可步行”瓷砖列表(这可以用与 NxN 瓷砖相对应的单个 0 和 1 字符串表示?)
  • 映射到这些 NxN 图块的图像路径列表

我的菜鸟想法

  • 每个“地图”都是地图表中的一行。
  • “可步行”的瓷砖可以存储为单个字符串。我读过这通常是不建议的,但不知道有更好的方法来表示这一点,因为这些值只能是两个值之一。
  • 我不确定如何存储与图块关联的 NxN 图像路径字符串。

通常对 SQL 和数据存储架构非常缺乏经验,因此我想从有关如何设置此方案的建议中学习。

All*_*lan 5

从广义上讲,我会像这样处理这个问题:

Tiles
  Tile_ID
  Tile_Name(?)
  Walkable
  Image_Path

Maps
  Map_ID
  Map_Name

Map_Tiles
  Map_ID
  Tile_ID
  X_Coordinate
  Y_Coordinate
  Orientation
  Walkable(?)
Run Code Online (Sandbox Code Playgroud)

根据关系设计原则,您不想做的事情:

  • 强制将多个数据元素(图块)放入一行(即不要将所有地图的图块放在一行中)。
  • 用多个数据元素重载单个字段(即不要将地图的所有图块放入单个字段中)。