不久前,我玩了一个名为 racewarkingdoms 的网络游戏。它使用了一个基于 2D 文本的系统。我感兴趣的是地图。该地图由 X 方向上的 255 个图块和 Y 方向上的 255 个图块组成。这些地图总共有 5 个。但是令人惊讶的是,每个地图都包含如此多的数据。每个图块都包含自己的“王国”,每个图块大约有 50 个变量。然后
如何设计这样的东西。我怀疑每个磁贴都是一个表。我会假设你会有一个 map1_table 与将在任何中找到的不同元素,但我只是不确定。我正在接近一个情况,我需要一个类似的设计,但不知道从哪里开始。
谢谢
首先,我将从定义这样的地图开始,
MAPS
Id
Name
Xmax
Ymax
在这里,您可以通过指定名称和最大尺寸来定义地图。您可以使用最大尺寸来约束图块。
TILES
Id
MapId
X
Y
然后构造一个图块属性表以保存与图块关联的所有属性。
TILEPROPERTIES
Id
TileId
Name
Value
这将是我的实现,并不意味着它应该为你工作,但它希望让你开始。
我建议使用以下结构结合我的方案:
瓷砖通常保存瓷砖的数量,每个瓷砖都有一个 ID,瓷砖的大小是硬编码的:例如 5 * 5 px。
tiles_meta 保存名称,以及简短的“工具提示”描述。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
如果要使用 JavaScript 构建 tile_set 或“map”,请不要在服务器上生成整个地图,只需将图块日期传递给 JavaScript 即可。这将节省很多性能。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(77条)