Как представить данные доски / карты для браузерной игры GAE? - PullRequest
1 голос
/ 20 декабря 2011

Как школьный проект я создаю браузерную игру на Java для платформы Google App Engine.Это стратегическая игра, в которой игроки сражаются друг с другом на игровом поле.

Я хочу, чтобы структура матча и игровое поле были динамичными.Размер доски различен для каждого матча (выбирается при создании матча), игроки могут присоединиться или уйти в середине матча, каждая плитка может содержать несколько различных объектов (пешки игроков, бонусы и т. Д.), И объекты могутперемещаться между плитками.

Проблема в том, что я новичок в Java и не знаю, как представить и сохранить такую ​​многоуровневую динамическую структуру.

1) Концептуальноэто выглядит как «2D массив списков объектов», но как его определить в терминах языка Java?Это «Список списков списков объектов» или «2D-массив списков объектов» или, может быть, что-то еще?

2) Какая часть этой структуры должна храниться в хранилище данных (объект GAE)-ориентированная база данных) и что должно быть построено динамически, когда доска показывается игроку?Чем больше я храню, тем легче будет отобразить доску, но, с другой стороны, будет сложнее обновляться при перемещении объектов.

1 Ответ

1 голос
/ 20 декабря 2011

Я предлагаю вам сохранить его в виде списка независимых записей карты с двухмерной координатой.

Что-то вроде:

class Map {
  Long id
}

class MapEntry {
  Long id

  Long mapId  //better to use Key for parent map

  int x
  int y
  MapEntryType type //if you have different elements of map

  //some other fields / payload
}

и, запрашивая все элементы карты, по запросу типа select MapEntry where map = ? (зависит от того, какой инструмент отображения базы данных вы используете) вы можете получить все детали карты и встроить их в память на стороне сервера или клиента.И я уверен, что в большинстве случаев вам не нужно загружать всю карту в память.

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