Найти тему
ZDG

Проектирование игр. Объекты против пространства. Часть 2.

В предыдущем выпуске я рассказал о методе переноса игрового состояния в память, который называется "От объектов". В этом методе каждый объект представлен неким индивидуальным набором данных и хранится как отдельная сущность.

Второй метод – "От пространства".

Давайте снова посмотрим на шахматную доску. Мы ранее сохраняли в памяти объекты, то есть шахматные фигуры, но не сохраняли доску. Она нам по сути не нужна, потому что у каждой фигуры есть свои координаты, и этого достаточно, чтобы знать её местоположение.

Однако что будет, если мы сохраним в памяти не объекты, а пространство, в котором они находятся, то есть доску?

Чтобы понять это получше, представьте, что клетки доски это не просто нарисованные квадраты, а реальные куски пространства, которые могут быть пустыми или содержать что-то внутри себя.

Давайте для начала сохраним в памяти пустую доску:

0, 0, 0, 0, 0, 0, 0, 0

Вот последовательность из 8 байт, которые равны нулю. Это первый ряд клеток доски, а всего рядов 8, поэтому продолжим:

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

Это 64 байта, которые соответствуют 64-м клеткам доски. В памяти они расположены одной длинной цепочкой, но нам ничто не мешает записать их для себя вот так:

0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0

Прелесть этого метода в том, что просто записав числа в память, мы уже создали подобие физического пространства, которое даже внешне похоже на доску.

Теперь вспомним о том, что мы нарисовали пустые клетки доски. А если есть пустые, значит могут быть и непустые. А что может быть в непустой клетке? Шахматная фигура! А как ее закодировать? А это мы уже знаем. Мы уже кодировали фигуры и числами, и символами, поэтому предлагаю оставить символы. Чтобы расставить фигуры на доске, надо просто в пустые клетки вписать коды фигур.

Посмотрите – мы фактически создали визуальный образ шахматной доски в памяти.

Проверим критерии, которые мы задали при проектировании:

  1. Какая фигура в клетке? Это нам известно, потому что в клетке хранится код фигуры.
  2. Какого цвета фигура? Это тоже известно из кода фигуры.
  3. Где она находится? Очевидно, она находится прямо в клетке, которую мы проверяем, а у клетки есть адрес, значит пространственное положение фигуры известно.
  4. Как она взаимодействует с другими фигурами? Все другие фигуры также находятся в клетках с известными координатами, так что все взаимодействия можно легко вычислить.

Следовательно, данное представление полностью подходит, чтобы реализовать всю техническую часть игры в шахматы.

Нам остается только взять данные, полученные двумя методами, сравнить их плюсы и минусы, и обсудить, как с ними работать дальше.

Читайте дальше: Какой метод лучше?