我曾经玩过一场名为racewarkingdoms的网页游戏。它使用了基于2d文本的系统。我感兴趣的是地图。地图由X方向的255个区块和Y方向的255个区块组成。总共有5张这样的地图。但令人惊奇的是,每个人都包含如此多的数据。每一个都有自己的'王国',每个瓷砖大约有50个变量。然后每一个都包含“怪物”,其中包含健康栏和永久记忆的数据。
如何设计这样的东西。我怀疑每块瓷砖都是一张桌子。我想你会有一个map1_table,其中包含可以在任何元素中找到的不同元素,但我不确定。我正在接近需要类似设计的情况,但不知道从哪里开始。
谢谢!
答案 0 :(得分:4)
首先,我首先要定义一个这样的地图,
MAPS
Id
Name
Xmax
Ymax
在这里,您可以通过为地图指定名称和最大尺寸来定义地图。您可以使用最大尺寸来约束切片。
TILES
Id
MapId
X
Y
然后构造一个tile属性表来保存与tile关联的所有属性。
TILEPROPERTIES
Id
TileId
Name
Value
这将是我的实施,并不意味着它应该适合你,但它有望让你开始。
答案 1 :(得分:2)
我建议结合我的方案使用以下结构:
瓷砖可以节省瓷砖的数量 一般来说,每个瓷砖都有一个id,即 瓷砖的大小是硬编码的:5 * 5像素 例如。
tiles_meta保存名称,并且a 简短的“工具提示”说明。 META是 自我解释;)
tiles_content_low包含少数 的瓷砖。你应该在这里 包括用户将访问的内容 很多次,但要保持最低限度。
tiles_content_medium包含这样的内容 事情为“这里的项目xy可以找到 有可能12%“。创建一个 另外“loot_table”与项目。该 “item_hash”是所有项ID的哈希值 可能会掉落的物品。
tiles_content_large是最大的 表。在这里你存储哪个 坐标里面的瓷砖 球员位于,他洗劫的地方 项目编号1234等。
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
如果要构建tile_set或“map”使用JavaScript,请不要在服务器上生成整个地图,只需将tile日期传递给JavaScript即可。 这将节省很多性能。