В игровом процессе «Бой по координатам» используются три разных координатных пространства:
мировое пространство — координатное пространство, используемое для размещения объектов в игровом мире посредством функций API Verse.
пространство доски — координатное пространство, используемое для размещения объектов на игровых досках игроков.
пространство мини-доски — координатное пространство, используемое для показа игрокам вида их собственной доски.
В совокупности эти координатные пространства дают игроку точное представление о текущем состоянии игры и производительности игрового процесса.
Чтобы разработать комплексную систему управления координатным пространством, нужно всё продумать и спланировать. Большая часть работы заключается в преобразовании между координатными пространствами, которое позволяет надёжно сопоставлять векторы карты в мировом пространстве с координатами на игровой доске и на мини-доске, а также наоборот.
На изображении выше (1) в центре представлено пространство доски, а в левом верхнем углу изображения (2) — пространство мини-доски.
Мировое пространство — это постоянная система координат, лежащая в основе функций UEFN и API Verse. В UEFN используется трёхмерная система координат влево-вверх-вперёд (LUF).
Дополнительную информацию об этой системе координат в UEFN см. в документации по системе координат «влево-вверх-вперёд».
Пространства координат
В каждом из координатных пространств в этом режиме необходимо преобразовывать местоположения на различные поверхности и в разные типы систем для правильного размещения игровых объектов в мире. Ниже приведены описания каждого из этих пространств. Они будут рассмотрены более подробно чуть позже.
Мировое пространство
Мировое пространство — это пространство по умолчанию, которое UEFN и Verse используют для размещения объектов в игровом мире. В этом примере игры в основном используются объекты creative_device. В результате для представления расположений устройств в игровом мире используется класс Verse transform из модуля /UnrealEngine.com/Temporary/SpatialMath с определением:
transform<public> := struct<concrete><computes>:
Scale<public>:vector3
Rotation<public>:rotation
Translation<public>:vector3
где vector3 определяется как:
vector3<public> := struct<concrete><computes><persistable>:
X<public>:float
Y<public>:float
Z<public>:float
Класс transform определяет, где находится объект (Translation — перемещение), в каком направлении он ориентирован (Rotation — поворот) и какого он размера (Scale — масштаб).
Любой объект, производный от класса creative_object, имеет доступ к функциям API Verse для:
GetTransform— получает текущие данные преобразования объекта;TeleportTo: перемещает объект в указанное место назначения без анимации.MoveTo— анимирует перемещение к указанному месту назначения.
Определение transform вместе с этими функциями API предоставляет всё необходимое, чтобы задать положение объекта в игровом мире и разместить его там.
Пространство доски
Пространство доски — это пространство, используемое для основной игровой доски в «Бою по координатам», обозначенное выноской (1) на изображении выше. Это пространство используется для обозначения клеток или плиток на доске относительно центра игровой доски.
Пространство мини-доски
Мини-доска позволяет игрокам видеть собственную доску. Маркеры попаданий указывают, что плитка доски была атакована и враг успешно уничтожил пешку на этой плитке. Маркеры промахов указывают, что плитка доски была атакована и враг промахнулся. Сама мини-доска представляет собой статичную сетку, размещаемую относительно игровой камеры, поэтому она является частью интерфейса игры.
Этапы сборки
Чтобы использовать эти три координатных пространства вместе для создания эффективного игрового процесса, необходимо:
определить представление плитки в пространстве доски;
определить границы пространства доски;
определить, где будет находиться пространство доски в мировом пространстве;
выполнить преобразование между пространством доски и мировым пространством;
разместить пешку на доске в указанном месте;
взять пешку с доски;
удалить пешку с доски;
разместить все пешки на доске в случайном порядке;
определить представление плитки в пространстве мини-доски;
определить границы пространства мини-доски;
определить, где находится пространство мини-доски в мировом пространстве;
поместить маркер на мини-доску;
выполнить преобразование между пространством доски, мини-доски и мировым пространством;
определить игровые ходы;
создать игровой цикл;
определить, когда будет выполнено условие победы.