Mysql 数据库设计-二维平铺网格

Mysql 数据库设计-二维平铺网格,mysql,database-design,Mysql,Database Design,不久前我玩了一个叫RaceWarKingdes的网络游戏。它使用了基于2d文本的系统。我感兴趣的是地图。地图由X方向的255个平铺和Y方向的255个平铺组成。这些地图总共有5张。但令人惊讶的是,每一个都包含了如此多的数据。每一个都包含它自己的“王国”,每个瓷砖大约有50个变量。然后,每一个都包含有“怪物”和健康栏以及永久记忆的数据 这样的东西是如何设计的。我怀疑每一块瓷砖都是一张桌子。我假设您将有一个map1_表,其中包含在任何位置都可以找到的不同元素,但我只是不确定。我正在接近一种情况,我需要

不久前我玩了一个叫RaceWarKingdes的网络游戏。它使用了基于2d文本的系统。我感兴趣的是地图。地图由X方向的255个平铺和Y方向的255个平铺组成。这些地图总共有5张。但令人惊讶的是,每一个都包含了如此多的数据。每一个都包含它自己的“王国”,每个瓷砖大约有50个变量。然后,每一个都包含有“怪物”和健康栏以及永久记忆的数据

这样的东西是如何设计的。我怀疑每一块瓷砖都是一张桌子。我假设您将有一个map1_表,其中包含在任何位置都可以找到的不同元素,但我只是不确定。我正在接近一种情况,我需要一个类似的设计,但不知道从哪里开始


谢谢

首先我要定义一个这样的地图

MAPS
Id  
Name  
Xmax  
Ymax
在这里,您可以通过为地图指定名称和最大尺寸来定义地图。可以使用“最大尺寸”约束平铺

TILES
Id
MapId
X
Y
然后构造一个平铺属性表,以保存与平铺关联的所有属性

TILEPROPERTIES
Id
TileId
Name
Value
这将是我的实现,并不意味着它应该适合您,但希望它能让您开始。

我建议结合我的方案使用以下结构:

  • “平铺”可在中保存平铺的数量 一般来说,每个磁贴都有一个id,即 磁贴的大小是硬编码的:5*5像素 比如说

  • tiles\u meta保存名称,并 简短的“工具提示”说明。梅塔是 自我解释;)

  • 瓷砖\u含量\u低包含少数 瓷砖的边缘。给你 包括用户将访问的内容 很多次,但要尽量少

  • 瓷砖\u内容\u介质包含以下内容 如“此处可找到xy项 有12%的机会”。创建一个 添加带有物品的“战利品表”。这个 “item_hash”是所有item id的散列 可能掉落的物品的名称

  • 瓷砖\u含量\u大是最大的 桌子这是你的商店在哪 协调瓷砖的内部 玩家所在地,他抢劫的地方 项目编号1234等

如果您想使用JavaScript构建一个tile_集或“map”,不要在服务器上生成整个map,只需将tile日期传递给JavaScript即可。
这将节省大量性能。

非常好的信息。图形不是一个巨大的焦点,因为它几乎是基于文本的,基于非滚动地图。但是还是很好。。。如果你有进一步的问题或者想要更多的“图片”/“方案”文件,或者只是想讨论2D游戏开发,请随时与我联系:stack.YOURNAME。request@accountr.euGood想法;),非常“小”,但它包含最重要的结构
table: tiles
id

table: tiles_meta
id
tile_id
name
desc

table: tiles_content_low
id
tile_id
owner_id
go_id

table: tiles_content_medium
id
tile_id
mob_hash
item_hash

table: tiles_content_large
id
tile_id
savegame