вторник, 28 марта 2017 г.

Что такое тайлы? Тайловая графика в играх

Тайловая графика (tile - плитка) - это по сути дела метод создания больших картин (изображений) с помощью более мелких элементов.

Что такое тайлы? Тайловая графика в играх

Вообще, есть красивое и опять не Русское слово - мозаика. Вспомните что это такое. Это когда вы по кусочкам составляете большую картинку, вот примерно тоже-самое и есть тайты. Или вспомните как пилят деньги кладут плитку.

// Плохая идея, миксовать тут тематики блога...

Аналогий много, еще можете вспомнить как кладут черепицу, ну и заодно посмотреть супер крутое видео канала Primitive Technology:


Какая крыша? Тайлд. Замечательное свойство Английского языка, можно превращать существительное в прилагательное, но потом такое нельзя нормально перевести, однако понять легко. 
Вернёмся к нашей теме, тайловая графика в играх, что это такое?

Это графика, которая состоит из тайлов (Кэп). Пример:


Иногда очень красиво получается

Вот эти стулья и стол - это тоже тайлы. Тайлы это стены, пол и прочие элементы. Двери тут, скорее всего, как раз не тайлы, а уже объекты, так-как с ними возможно взаимодействие.

Так-же тайловая графика чем-то напоминает пиксель арт по принципу, тоже как мозаика, рисуется картинка по пикселям. Элемент за элементом.


Больше пиксель арта тут

Но вот на этой картинке (это вообще не игра), графика не тайловая. Тут всё прорисовано индивидуально, гигантский труд. Вот именно тут мы и подходим к первой проблеме тайловой графики - иногда она выглядит слишком монотонно.


Стандартный пример тайлов в game maker studio

Вспомните даже редактор карт StarCraft:


И почитайте потом мою статью - с чего начать разработку игр, где я о нём писал. Вот в первом старике было всё это довольно любопытно сделано и там удалось отчасти побороть монотонность, за счёт того, что почти каждый элемент случайно генерировался, даже если он одного типа. О чём я говорю?

Берём этот-же скрин и увеличиваем.


Плитка не повторяется

И когда был этот мой любимый первый старкрафт?

Еще чёрт знает когда, и уже там придумали эту штуку. А сейчас некоторые игроделы продолжают пихать в ряды однотипные тайлы.

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

Вы разрабатывайте инструменты типа редактора карт, а затем садите туда левел дизайнеров, они уже всё это красиво и толково расставляют. Чем больше у них будет инструментов - тем красивее выйдет, но это огромная работа.

Не только всё это рисовать, но и потом расставлять, а потом еще придумывать какой-то способ рандомизации элементов, если он будет делаться.

Если вы хотите чтобы в итоге игра была красивее, вам нужно для одного дерева нарисовать сразу несколько спрайтов. И нет, ёлка и дуб - это разные тайлы и спарайты, они будут отдельно. Вам нужно сразу много ёлок и сразу много дубов.

Тайлы обычно делают как-бы пачкой (set), называется - матрица тайлов. Это большой фрагмент, который делят на более мелкие. Примерно вот такая штука:


Где-то украл... Это нехорошо. Читайте - где брать спрайты для игр

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

Тут всё довольно просто и в то-же время красиво. Снежная тема. Имея готовый сет тайлов у вас уже сделано пол дела, вам нужно их только красиво расставить.

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

Но почти все декоративные (чисто визуальные) элементы, можно сделать через тайлы.


Допустим, вот эти-же столбы. Ну зачем вам нужны какие-то взаимодействия героя со столбами? Вам нужна только коллизия (когда нельзя через него пройти).

А для коллизии вы можете просто сделать твёрдую невидимую область объектом, и уже её повесть под столб. Тогда через столб (спрайт - тайл) нельзя будет пройти, движение будет блокировать "твёрдая" область.

В GameMaker Studio 2, про который я сейчас делаю видео, появились новые функции для работы с тайлами, появились анимированные тайлы. Так-же можно вызывать их (и убирать) через код. Очень любопытная штука. Так-же там теперь можно расставлять тайлы сразу пачкой и быстро заполнять тайлами карту-комнату.

Довольно удобно, особенно для мелких тайлов.

Для новичка, который хочет создавать игры в гейм мейкер, в принципе не обязательно использовать тайлы, часто новички просто делает всё это (поле, деревья и прочее) обычными объектами со спрайтами и для простых игр это может быть ок.

Но когда вы затевайте сделать RPG (или игру в другом жанре) с какой никакой графикой, вам нужны будут тайлы. Надеюсь я ответил на вопрос - что такое тайлы и дал приемлемые примеры тайловой графики в играх.

А если вас интересуют конкретные примеры и как всё это работает в GameMaker Studio 2, вы можете посмотреть моё видео (9 минут). Подписывайтесь на мой канал Econ Dude - про создание игр с нуля, если еще не подписались.