Тайловые карты
Главная цель системы макета уровня - сделать возможным создание уровней, которые будут небольшими по размеру. Это возможно благодаря созданию систем уровней, которым не нужно большое количество уникальной графики, при этом они будут выглядеть разнообразно и интересно. Тайловые движки - распространенное решение, потому что они предлагают структурированные способы создания огромных миров с маленьким количеством графических ресурсов. Они повторно используют ресурсы, разделяя мир на сетку, и тайлы могут находиться внутри каждой клетки этой сетки. Тайлы входят в один файл изображения и обычно малы по размеру. Преимущества разработчиков игр, выбравших создание мира, основанного на тайловых картах, состоит в двух вещах. Первое, код сетки очень легко написать. Все тайлы могут занимать только одно пространство на сетке, и каждое пространство сетки определенно всего лишь x и y координатами. Второе, любая игровая логика, происходит на этой сетке легко просчитывается. Такие алгоритмы, как поиск кратчайшего расстояния, клеточный автомат Конвея и даже простая динамика жидкостей - все это обычно представляется и реализуется с помощью сетки. Если игровой мир может быть разбит на небольшие управляемые куски, тогда игра может получить преимущество от этих техник и будут легче в разработке для программиста.
Тайловые карты работают с помощью расположения группы (обычно квадратных) изображений в сетку игры. Эти изображения будут работать как "игровой мир", с некоторыми тайлами, которые будут платформами и стенами, и другими, которые будут частями мира, через которые игрок сможет проходить. Конечный результат будет скорее как ряд из плиток, установленных на пол в ванной, чтобы создать рисунок. Изображения, составляющие эти тайлы не загружаются отдельно, а одним большим файлом. Различные тайлы выкладываются друг за другом в единое изображение, аналогично листам спрайтов. Затем тайловый движок один за одним переносит тайлы на карту игры, основываясь на их индексах, указанных в файле карты.
Из-за тог что изображения загружаются одним файлом, компьютеру нужно знать как эти тайлы должны быть перенесены в игровой мир для создания целой карты. Подобно кадрам анимации листа спрайтов, компьютер хранит массив чисел, указывающий какой тайл он должен нарисовать и в каком месте игрового мира. Когда начинается игра, прежде чем что-либо нарисовано, игровой мир отрисовывается с помощью цикличного прохождения через всю карту и копирования кадров в полный файл изображения карты.
Вот компьютерное представление карты. Это будет карта с маленькой платформой в центре, предполагая что нули это фон, а единицы это поверхность и платформы.
var tileMap = [ [1,1,1,1,1,1,1,1,1], [1,0,0,0,0,0,0,0,1], [1,0,0,1,1,1,0,0,1], [1,0,0,0,0,0,0,0,1], [1,1,1,1,2,1,1,1,1] ];
Следующий шаг для тайлового движка после получения данных цифровой карты - это использование этих чисел для отрисовки наглядной карты. Изображение набора тайлов нужно создать из тайлов, которые можно будет использовать для каждого их номера. Ниже пример изображений набора тайлов. Каждый тайл должен быть одинакового размера, и обратите внимание, что всего три вида тайлов, один для каждого из чисел в цифровой карте. Белый тайл это 0, камень это 1, и череп это 2.
Если изображение набора тайлов и тайловая карта были предоставлены Phaser в понятном ему формате, Phaser пройдется по цифровой карте и поместит тайлы на видимую карту, положив белые тайлы на место нулей, тайлы земли на место единиц и череп на место двойки. Финальный результат комбинации карты и набора тайлов будет выглядеть так:
После того как карта была нарисована, следующим шагом будет получение игрока и других игровых объектов карты. Коллизии тайлов станут следующей проблемой, для того чтобы тайловая карта работала корректно. Если ни с одним тайлом нельзя столкнуться, карта будет просто бесполезной. Игрок будет проходить падать вниз или проходить через все тайлы. И наоборот, если он будет сталкиваться со всеми тайлами, ничто в игровом мире не сможет сдвинуться с места.
Обычно движки имеют способ настроить, какие тайлы "открыты" и какие должны считаться твердым объектом, через которые игрок не может пройти. Для этой тайловой карты, установка нулевого тайла (белого тайла) как "открытого" даст игроку достаточно пространства для перемещения, в то время как он не сможет вылететь за границу игрового мира.
Более продвинутые тайловые движки (и редакторы, которые входят в их комплект) могут добавлять еще больше атрибутов для каждого тайла. Ветер, смертельные зоны, ядовитые области - все это допустимые атрибуты, которые могут иметь тайлы и которые вычисляются внутри тайлового движка, после того как он запускает свой код проверки коллизий игрока с другими игровыми объектами.


Комментариев нет:
Отправить комментарий