Проектирование базы данных - 2d мозаичная сетка - PullRequest
2 голосов
/ 21 октября 2009

Некоторое время назад я играл в веб-игру под названием racewarkingdoms. Он использовал 2d текстовую систему. Что меня интересует, так это карта. Карта состоит из 255 тайлов в направлении X и 255 тайлов в направлении Y. Всего таких карт 5. Но что удивительно, так это то, что каждый содержит так много данных. Каждый из них содержит свое собственное «королевство», которое будет составлять около 50 переменных на плитку. Затем каждый из них содержит «монстров» с индикаторами здоровья и данными, которые запоминаются навсегда.

Как бы что-то подобное было спроектировано. Я сомневаюсь, что каждая плитка была столом. Я хотел бы предположить, что у вас будет map1_table с различными элементами, которые будут найдены в любом, но я просто не уверен. Я подхожу к ситуации, когда мне нужен подобный дизайн, но я не знаю, с чего начать.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 21 октября 2009

Сначала я бы определил карту, подобную этой,

MAPS
Id  
Name  
Xmax  
Ymax

Здесь вы можете определить карту, дав ей имя и максимальные размеры. Вы можете использовать максимальные размеры для ограничения плиток.

TILES
Id
MapId
X
Y

Затем создайте таблицу свойств плиток для хранения всех свойств, связанных с плиткой.

TILEPROPERTIES
Id
TileId
Name
Value

Это будет моя реализация, и это не значит, что она должна работать для вас, но, надеюсь, это поможет вам начать работу.

2 голосов
/ 21 октября 2009

Нажмите здесь для файла схемы

Я бы рекомендовал использовать следующую структуру в сочетании с моей схемой:

  • плиток экономит количество плиток в Вообще, каждый тайл имеет ОДИН ИД, размер плитки жестко закодирован: 5 * 5 px например.

  • tile_meta сохраняет имя и краткое описание всплывающей подсказки. МЕТА это само за себя;)

  • tile_content_low содержит меньшинство плитки. Здесь вы должны включает в себя вещи, к которым пользователь получит доступ много раз, но держите его минимальным.

  • tile_content_medium содержит такие вещи как "здесь пункт ху можно найти с вероятностью 12% ". Создайте дополнение "loot_table" с элементами. "item_hash" - это хеш всех идентификаторов предметов предметов, которые могут выпасть.

  • tile_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. Это сохранит большую производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...