2009-10-21 42 views
1

我打了一個網頁遊戲,而後面稱爲racewarkingdoms。它使用了基於2d文本的系統。我感興趣的是地圖。該地圖由X方向上的255個瓦片和Y方向上的255個瓦片組成。總共有5張地圖。但令人驚奇的是,每一個都包含這麼多的數據。每個人都有自己的「王國」,每個瓷磚大約有50個變量。然後,每個人都包含帶有永久記憶的健康條和數據的「怪獸」。數據庫設計 - 二維瓷磚網格

如何設計這樣的東西。我懷疑每塊瓷磚是一張桌子。我會假設你會有一個map1_table,其中有不同的元素可以在任何地方找到,但我只是不確定。我正在接近需要類似設計的情況,但不知道從哪裏開始。

謝謝!

+0

如果您還有其他問題或想要更多的「圖片」/方案文件,或者只是想討論2D遊戲開發,請隨時與我聯繫:[email protected] – 2009-10-21 13:46:52

回答

2

Click here for scheme file

我會建議使用下面的結構與我的方案相結合:

  • 瓷磚節省瓷磚的量 一般情況下,每個區塊都有一個編號,該 大小的瓦片是硬編碼的:例如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 

如果你想建立一個tile_set或「地圖」使用JavaScript,不產生你的服務器上的整個地圖,只是通過瓷磚日期的JavaScript。 這將節省很多性能。

+1

非常好的信息。圖形不是一個巨大的焦點,因爲它基於文本,在非滾動地圖上。但仍然非常好......我從來沒有想過這個觀點。 – user192738 2009-10-21 13:43:14

3

首先,我將通過定義地圖像這樣的開始,

MAPS 
Id 
Name 
Xmax 
Ymax 

在這裏,您可以通過給它一個名稱和最大尺寸定義地圖。您可以使用最大尺寸來限制拼貼。

TILES 
Id 
MapId 
X 
Y 

然後構建一個瓷磚屬性表來保存與瓷磚關聯的所有屬性。

TILEPROPERTIES 
Id 
TileId 
Name 
Value 

這將是我的實施,並不意味着它應該爲你工作,但它有望讓你開始。

+0

好主意;),非常「小」,但它包含最重要的結構 – 2009-10-21 13:47:42