Тайл это – Подготовка тайлов для пользовательского слоя карты — Технологии Яндекса

Содержание

Тайловая графика — Википедия

Материал из Википедии — свободной энциклопедии

SuperTux. Хорошо заметны тайлы — повторяющиеся фрагменты изображения. Warcraft II. Пеньки в правом нижнем углу — это один тайл, вдвое меньший, чем зелёная рамка. Плотность пней просчитана настолько хорошо, что повторы заметны только если присмотреться. Кроме того, монотонность разбивают тёмные пятна на траве и хаотически разбросанные камушки. Переходных тайлов между пнями и травой нет (но между светлым и тёмным или между лесом и травой, естественно, есть).

Тайловая, плиточная или знакоместная графика (от англ. tile — плитка) — метод создания больших изображений (как правило, уровней в компьютерных играх). Изображение составляется из маленьких фрагментов одинаковых габаритов (паттернов), как картина из изразцов — отсюда название.

Аналогично палитре цветов, тайловое изображение состоит из двух частей: набора тайлов и матрицы клеток.

Тайлы — небольшие изображения одинаковых размеров, которые и служат фрагментами большой картины. Обычно тайлов на один «мир» делают порядка нескольких сотен. Матрица клеток же составляется из номеров тайлов. Таким образом можно строить огромные двухмерные пространства, расходующие совсем немного памяти.

Тайловая графика близка к текстовому режиму. Чтобы сделать из текстового видеоадаптера тайловый, надо добавить ещё одну строку, ещё один столбец, изменяемый шрифт, регистры прокрутки и аппаратные спрайты. Поэтому такая графическая система носила ещё название «знакоместная графика».

Монотонность и как её обходят[править | править код]

Проблема тайловой графики в её монотонности: глаз легко замечает повторяющиеся элементы. С монотонностью борются так:

  • «Умно» режут рисунок на тайлы, предусматривая переходные тайлы между разными поверхностями и не допуская в пределах одного тайла областей с сильно различающейся оптической плотностью. Сравните SuperTux и WarCraft II на рисунках справа.
  • Делают несколько тайлов одного и того же, с немного различающимся рисунком. Тайлы располагают хаотически, чтобы глаз не мог заметить какой-либо порядок (хорошо заметно в WarCraft II).
  • Делают различные украшения, притягивающие взгляд — физически они могут быть реализованы как тайлы (WarCraft II), как дополнительные тайловые слои поверх основного ([уточнить]) или как спрайты (StarCraft).
  • «Обосновывают» монотонность клеточной механикой (Boulder Dash, Super Mario Bros., большинство roguelike). Клетка с кирпичами непроходима, клетка с потрескавшимися кирпичами пробивается, и т. д.; зачастую передвижения персонажа в таких играх ограничиваются клеточной решёткой.
  • «Обосновывают» монотонность графическим стилем: например, вполне естественно, что свежеотремонтированный склад, заполненный стандартными контейнерами, будет состоять из совершенно одинаковых тайлов (Saboteur!). Хотя и там стараются разнообразить игру: то попадётся тельфер, то пульт, то склад сменится туннелем или машинным залом…

Тайловые редакторы[править | править код]

Существуют программы для создания тайл-изображений — тайловые редакторы, такие, как Tiled.

Чтобы упростить работу конструктора уровней, прогрессивные редакторы могут содержать какие-либо средства автоматизации: копирование-вставку, штамп (устанавливает заранее определённую комбинацию тайлов), «умную кисть», автоматически расставляющую переходные тайлы. В частности, в редакторах WarCraft II и StarCraft вообще нет инструмента для рисования по одному тайлу.

В некоторых играх (X-COM: UFO Defense) бывают тайлы в изометрической проекции.

Стоит признать, что, несмотря на изометрический вид, тайлы в StarCraft традиционные квадратные.

Также тайлами иногда называют блоки или квадраты, которые служат элементами стриминга или применяются для оптимизации по когерентности.

Разбиение на квадраты в целях стриминга применяется в играх с огромными открытыми пространствами (Microsoft Train Simulator), а также для создания интерактивных карт (могут содержать векторные данные, космические снимки, матрицы высот, тематические карты, объекты мониторинга и другую информацию).

Блоки разбиения применяются практически во всех трёхмерных рендерерах — для лучшей работы текстурного кэша.

тайл — Викисловарь

Wikipedia-logo.png В Википедии есть страница «тайл».

Содержание

  • 1 Русский
    • 1.1 Морфологические и синтаксические свойства
    • 1.2 Произношение
    • 1.3 Семантические свойства
      • 1.3.1 Значение
      • 1.3.2 Синонимы
      • 1.3.3 Антонимы
      • 1.3.4 Гиперонимы
      • 1.3.5 Гипонимы
    • 1.4 Родственные слова
    • 1.5 Этимология
    • 1.6 Фразеологизмы и устойчивые сочетания
    • 1.7 Перевод
    • 1.8 Библиография

Морфологические и синтаксические свойства[править]

тайл

Существительное, неодушевлённое, мужской род (тип склонения ?? по классификации А. А. Зализняка).

Корень: .

Произношение[править]

Семантические свойства[править]

Значение[править]
  1. комп. (в цифровой картографии) жаргонное название квадратных растровых изображений равной величины, которыми вымощена поверхность отображаемой карты ◆ Правильное применение тайлов создает у пользователя некую привязанность к приложению. Пугачёв С.В., «Создание приложений для Windows Phone 7.5», 2012 г.
Синонимы[править]
Антонимы[править]
Гиперонимы[править]
Гипонимы[править]

Родственные слова[править]

Ближайшее родство
  • существительные: тайлсет
  • прилагательные: тайловый

Этимология[править]

Происходит от ??

Фразеологизмы и устойчивые сочетания[править]

Перевод[править]

Список переводов

Библиография[править]

Interrobang.svg Для улучшения этой статьи желательно:
  • Уточнить парадигму словоизменения, используя более конкретный шаблон словоизменения
  • Добавить описание морфемного состава с помощью {{морфо-ru}}
  • Добавить транскрипцию в секцию «Произношение» с помощью {{transcriptions-ru}}
  • Добавить синонимы в секцию «Семантические свойства»
  • Добавить гиперонимы в секцию «Семантические свойства»
  • Добавить сведения об этимологии в секцию «Этимология»
  • Добавить хотя бы один перевод в секцию «Перевод»

как без особой возни создавать тайлы для игр / Habr


Я единственный художник в нашей игровой студии, а это значит, что мне приходится заниматься анимацией, UI, рекламными материалами, ресурсами для соцсетей, персонажами, предметами и окружениями. Всё, в чём нужно хотя бы немного искусства, ложится на мои плечи. Я часто ощущаю всю лежащую на мне нагрузку, поэтому задаюсь вопросом:
В этой статье я расскажу о том, как мы разрабатываем тайлы 2D-окружений для таких игр, как Levelhead и Crashlands, и покажу методику, позволяющую нам сэкономить немного времени и повысить универсальность графических ресурсов окружений. Этот метод также упрощает создание органически выглядящих типов рельефа, хорошо сочетающихся друг с другом. Я не предлагаю при создании тайлсетов окружений пользоваться только этим способом, но он станет хорошим пополнением набора инструментов для любого художника.

Этот способ называется SPLATTER TILE!



Я всегда ищу способы работать быстрее и с большей гибкостью. Я работаю с традиционными методами тайлинга наподобие 9-slices и тайловых карт, и часто обнаруживаю, что результаты оказываются слишком жёсткими. Мы получаем сетку, которая приклеивается к окружению таким образом, что я ничего не могу изменить.

Углубившись в создание таких тайловых окружений, я выяснил, что наилучшим способом создания более живых и органичных тайлсетов не изменение техники, а увеличение количества рисуемых тайлов. Я быстро перешёл от простых 9-slice ко всё более и более широким тайлсетам, передававшим все повороты и изгибы рельефа. Чтобы на примере увидеть, сколько тайлов требуется для создания ощущения живости и гибкости, посмотрите на этот пример с craftpix.net:


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

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

задуматься!

Как создавать тайлы, выглядящие в мире естественно и не похожие на сетку? И есть ли какой-то способ сделать это без монотонного процесса преобразования этих тайлов в бесшовные со всеми разрезанными на части вариациями?

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

В основе этой методики лежит разница между фактической границей тайла и самой графикой, и именно это является фундаментом Splatter Tiles. Давайте рассмотрим их изнутри.



  • Пространство тайла (TILE). Это фактическое пространство сетки, которое использует компьютер. Если вы создаёте тайлы, останавливающиеся на этих границах, то у художника получатся традиционные ресурсы с чётко заметной структурой решётки.
  • Органическая полоса (ORGANIC SPILL)! Именно здесь происходит магия. Расширим тайл в это пространство, чтобы создать формы, напоминающие тот тайл, который мы хотим представить — если это камень, сделаем его «глыбистым» по краям. Земля рельефна и пятниста, трава острая и имеет множество острых краёв, и т.д. (ниже мы всё это рассмотрим).
  • Граничная линия (BOUNDARY LINE)! Это граница тайла с точки зрения художника. Если пересечь эту линию, то части текущего тайла будут отрисовываться при рендеринге соседнего тайла, что выглядит некрасиво. Весь тайл должен находиться внутри.




Можно заметить, что splatter tiles позволяют очень быстро и без особого труда получить ощущение органического хаоса. Хотя сетчатость окружения всё равно заметна, слияние фигур благодаря их размытой природе делает её намного живее.
Если сделать ещё один шаг вперёд, то набор splatter tiles, как и в случае с традиционным тайлсетом, можно использовать для создания разнообразных органических форм, которые ещё меньше напоминают сетку. В нашей последней игре Levelhead, которая пока находится в раннем доступе в Steam, мы используем набор splatter tiles для каждого биома и для каждого эстетического тайлсета, который могут применять игроки. Например, вот splatter tiles джунглей:
А вот как они выглядят в игре:
А вот грибной биом Asteroids и соответствующие ему splatter tiles:

А вот пример из нашей RPG с крафтингом в открытом мире Crashlands:

  • Создавайте дикие базовые формы для тайлов. Именно так можно уйти от ощущения «сетки».
  • Используйте все цвета рядом с границами тайла. Затенение в разных точках границы должно быть высоким и низким, чтобы когда граница соединяется с другим splatter tile, они могли в отдельных точках смешиваться бесшовно.
  • Тестируйте! Разберитесь, как быстро замечать изменения, вносимые в правильном контексте. Можно использовать клоны, горячую перезагрузку или какую-нибудь систему шаблонов — этот этап, вне зависимости от методологии, всегда самый важный при работе с окружениями.
  • Выбирайте цвета заранее. Splatter tiles будут накладываться друг на друга, поэтому нужно сделать так, чтобы цвета гармонично сочетались и не раздражали глаз.
  • Задайте глубину тайла. Например, земля всегда находится под травой. Камень находится между ними. Это позволяет создавать интересные паттерны, в которых разные тайлы накладываются друг на друга.

Splatter tiles обычно лучше всего подходят для игр с видом сверху, где от точного края тайла не зависит жизнь или смерть игрока. Однако если вы освоитесь с ними, то можете адаптировать их под широкий диапазон различных жанров, в том числе и под такой активный платформер, как Levelhead!
… чёрт!

И здесь мы снова сталкиваемся с жестокой реальностью: для создания интересного и динамичного 2D-окружения требуется приличный объём графики. Предложенная мной методика просто быстрее позволяет добиться органического ощущения, поэтому её стоит исследовать наряду с разработкой традиционных тайлов.

Тайл Википедия

SuperTux. Хорошо заметны тайлы — повторяющиеся фрагменты изображения. Warcraft II. Пеньки в правом нижнем углу — это один тайл, вдвое меньший, чем зелёная рамка. Плотность пней просчитана настолько хорошо, что повторы заметны только если присмотреться. Кроме того, монотонность разбивают тёмные пятна на траве и хаотически разбросанные камушки. Переходных тайлов между пнями и травой нет (но между светлым и тёмным или между лесом и травой, естественно, есть).

Тайловая, плиточная или знакоместная графика (от англ. tile — плитка) — метод создания больших изображений (как правило, уровней в компьютерных играх). Изображение составляется из маленьких фрагментов одинаковых габаритов (паттернов), как картина из изразцов — отсюда название.

Принцип действия[ | ]

Аналогично палитре цветов, тайловое изображение состоит из двух частей: набора тайлов и матрицы клеток.

Тайлы — небольшие изображения одинаковых размеров, которые и служат фрагментами большой картины. Обычно тайлов на один «мир» делают порядка нескольких сотен. Матрица клеток же составляется из номеров тайлов. Таким образом можно строить огромные двухмерные пространства, расходующие совсем немного памяти.

Тайловая графика близка к текстовому режиму. Чтобы сделать из текстового видеоадаптера тайловый, надо добавить ещё одну строку, ещё один столбец, изменяемый шрифт, регистры прокрутки и аппаратные спрайты. Поэтому такая графическая система носила ещё название «знакоместная графика».

Монотонность и как её обходят[ | ]

Проблема тайловой графики в её монотонности: глаз легко замечает повторяющиеся элементы. С монотонностью борются так:

  • «Умно» режут рисунок на тайлы, предусматривая переходные тайлы между разными поверхностями и не допуская в пределах одного тайла областей с сильно различающейся оптической плотностью. Сравните SuperTux и WarCraft II на рисунках справа.
  • Делают несколько тайлов одного и того же, с немного различающимся рисунком. Тайлы располагают хаотически, чтобы глаз не мог заметить какой-либо порядок (хорошо заметно в WarCraft II).
  • Делают различные украшения, притягивающие взгляд — физически они могут быть реализованы как тайлы (WarCraft II), как дополнительные тайловые слои поверх основного ([уточнить]) или как спрайты (StarCraft).
  • «Обосновывают» монотонность клеточной механикой (Boulder Dash, Super Mario Bros., большинство roguelike). Клетка с кирпичами непроходима, клетка с потрескавшимися кирпичами пробивается, и т. д.; зачастую передвижения персонажа в таких играх ограничиваются клеточной решёткой.
  • «Обосновывают» монотонность графическим стилем: например, вполне естественно, что свежеотремонтированный склад, заполненный стандартными контейнерами, будет состоять из совершенно одинаковых тайлов (Saboteur!). Хотя и там стараются разнообразить игру: то попадётся тельфер, то пульт, то склад сменится туннелем или машинным залом…

Тайловые редакторы[ |

Тайлы — Традиция

Материал из свободной русской энциклопедии «Традиция»

Та́йлы (от англ. tiles — плитки) — в цифровой картографии жаргонное название тех квадратных растровых изображений равной величины, которыми, как плиткою, бывает вымощена поверхность отображаемой карты.

В этой статье рассматривается картографическое значение термина. В более широком смысле тайлами называются элементы любой тайловой компьютерной графики.

Предназначение тайлов[править]

Каждый тайл является небольшим квадратным куском целой карты некоторого масштаба.

Разделение карты на тайлы позволяет при демонстрации карты скачивать с отдалённого сервера только те тайлы, которые в настоящий момент видны читателю карты, и подкачивать новые тайлы по мере того, как читатель движется вдоль карты или переменяет масштаб её. Тем экономится и время скачивания, и объёмы необходимых данных.

Размеры тайлов[править]

Размер тайла обыкновенно составляет 256×256 пикселов. Этот размер был популяризирован сайтом Google Maps и применяется в настоящее время на большинстве сайтов с картами (OpenStreetMap, Яндекс.Карты, Bing Maps и др.).

Возможны отступления от этого обычая, вызванные необходимостью. Так, например, мобильные приложения CloudMade используют тайлы 64×64 пикселов, так как дороговизна и низкая скорость мобильного доступа к Интернету принуждает к более строгой экономии времени и объёмов данных.

Уровень увеличения[править]

Масштаб тайлов обыкновенно определяется единственным целым числом, которое называется уровнем увеличения (англ. zoom level).

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

Неизбежные особенности меркаторовской проекции приводят к тому, что наиболее полярные области находятся за северной и южной стороной квадрата-тайла нулевого уровня увеличения, так что их отображение не производится. Отсечение происходит по широте, равной 85,0511° (это арктангенс гиперболического синуса числа пи).

Западная и восточная сторона квадрата-тайла нулевого уровня увеличения соответствует 180° западной и восточной долготы соответственно.

Переход к каждому последующему уровню увеличения приводит к двукратному росту масштаба, с тем чтобы внутри одного тайла предыдущего уровня увеличения всегда находилось бы ровно четыре (2×2) тайла последующего уровня увеличения.

С ростом уровня увеличения общее число тех тайлов, на которые разделяется карта мира, возрастает как 4Z (22Z), где Z — уровень увеличения. Надо отметить, что чаще всего применяется обозначение уровня увеличения именно буквою Z, так как оно традиционно для оси аппликат и притом эта буква является первою в английском слове «zoom» («увеличение»).

ZМасштаб на экваторе
(метров/пиксел)
Число тайлов
0156543,031
178271,524
239135,7616
319567,8864
49783,94256
54891,971024
62445,984096
71222,9916 384
8611,5065 536
9305,75262 144
10152,871 048 576
1176,4374 194 304
1238,21916 777 216
1319,10967 108 864
149,5546268 435 456
154,77731 073 741 824
162,38874 294 967 296
171,194317 179 869 184
180,597268 719 476 736

Координаты тайлов[править]

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

Отсчёт такой координаты ведётся от нуля до (2Z−1). Тайл с координатами X=0 и Y=0 является, следовательно, наиболее северо-западным среди всех тайлов своего уровня увеличения, находится в северо-западном углу карты.

Внешние ссылки[править]

Тайловая графика — это… Что такое Тайловая графика?

SuperTux. Хорошо заметны тайлы — повторяющиеся фрагменты изображения. Warcraft II. Пеньки в правом нижнем углу — это один тайл, вдвое меньший, чем зелёная рамка. Плотность пней просчитана настолько хорошо, что повторы заметны только если присмотреться. Кроме того, монотонность разбивают тёмные пятна на траве и хаотически разбросанные камушки. Переходных тайлов между пнями и травой нет (но между светлым и тёмным или между лесом и травой, естественно, есть).

Тайловая или плиточная графика (от англ. tile — плитка) — метод создания больших изображений (как правило, уровней в компьютерных играх). Изображение составляется из маленьких фрагментов одинаковых габаритов, как картина из изразцов — отсюда название.

Принцип действия

Аналогично палитре цветов, тайловое изображение состоит из двух частей: набора тайлов и матрицы клеток.

Тайлы — небольшие изображения одинаковых размеров, которые и служат фрагментами большой картины. Обычно тайлов на один «мир» делают порядка нескольких сотен. Матрица клеток же составляется из номеров тайлов. Таким образом можно строить огромные двухмерные пространства, расходующие совсем немного памяти.

Монотонность и как её обходят

Проблема тайловой графики в её монотонности: глаз легко замечает повторяющиеся элементы. С монотонностью борются так:

  • «Умно» режут рисунок на тайлы, предусматривая переходные тайлы между разными поверхностями и не допуская в пределах одного тайла областей с сильно различающейся оптической плотностью.
  • Делают несколько тайлов одного и того же, с немного различающимся рисунком. Тайлы располагают хаотически, чтобы глаз не мог заметить какой-либо порядок (хорошо заметно в WarCraft II).
  • Делают различные украшения, притягивающие взгляд — физически они могут быть реализованы как тайлы (WarCraft II), как дополнительные тайловые слои поверх основного ([уточнить]) или как спрайты (StarCraft).
  • «Обосновывают» монотонность клеточной механикой (Boulder Dash, большинство roguelike). Клетка с кирпичами непроходима, клетка с потрескавшимися кирпичами пробивается, и т. д.; зачастую передвижения персонажа в таких играх ограничиваются клеточной решёткой.
  • «Обосновывают» монотонность графическим стилем: например, вполне естественно, что свежеотремонтированный склад, заполненный стандартными контейнерами, будет состоять из совершенно одинаковых тайлов (Saboteur!). Хотя и там стараются разнообразить игру: то попадётся тельфер, то пульт, то склад сменится туннелем или машинным залом…

Тайловые редакторы

Существуют программы для создания тайл-изображений:

  • AndreaMosaic
  • PhotoMosaique
  • ImageryCreator

Чтобы упростить работу конструктора уровней, прогрессивные редакторы могут содержать какие-либо средства автоматизации: копирование-вставку, штамп (устанавливает заранее определённую комбинацию тайлов), «умную кисть», автоматически расставляющую переходные тайлы. В частности, в редакторах WarCraft II и StarCraft вообще нет инструмента для рисования по одному тайлу.

Знаменитые серии

Год выходаНазваниеРазработчикИздательПлатформа
1981Pac-ManNamco LimitedAtarisoft
1982 / 1983Digger? / Windmill Software Inc.? / Windmill Software Inc.DOS / PC Booter
1984Boulder DashPeter Liepa и Chris GrayMastertronicApple II, ZX Spectrum, Commodore 64, Atari 800, IBM PC и др.
1984ShamusSynSoftIBM
1984Soko-Ban PusherASCII CorporationSpectrum Holobyte
1987Emerald MineKingsoft GmbHKingsoft GmbHAmiga, Commodore 64
1987RockfordFirst Star Software и Synergistic SoftwareMastertronic
1988Wanderer??Browser, DOS, Linux
1989Crystal MinesColor DreamsColor DreamsNES
1989CD-ManCreative DimensionsCreative Dimensions
1990Douglas RockmoorBudgie UKThe ShapeshiftersAtari ST
1991SupaplexDream FactoryDigital Integration
1992RockfallSOS SoftwareSOS SoftwareAtari ST
1993BombermanHudson Soft
1994BoulderoidMacroHead & MicroBrainCodeWraith SoftwareDOS
1994Rolling JackAjt SoftAjt SoftDOS
1994Six Feet UnderEnQue Software?Windows 3.x
1994HeartlightEpic MegaGamesxLand GamesDOS
1995Diamond Cavesdiamond-productionsdiamond-productionsAmiga
1995Rocks’n’DiamondsArtsoft Entertainment, Holger SchemelArtsoft EntertainmentMS-DOS, Windows, Unix, Linux, Mac OS X
1996Lomax BouldersLomax Software ProductionsOSP Enr.Amiga
1997BluppoWebfoot TechnologiesWebfoot TechnologiesDOS
1998Bowlda Dash?Prism Leisure GmbHWindows
1999Digging JimPersei EntertainmentPersei EntertainmentWindows
2000GreenFaceSoftiniAmisoftWindows
2002Igor: The Time MachineElmer ProductionsElmer ProductionsWindows
2003Jewel JonesComport InteractiveX-Pressive.comWindows
2006Natto-Cat??Windows
20081k-mini-bdash??Commodore 64

Тайл — элемент разбиения

Также тайлами иногда называют блоки или квадраты, которые служат элементами стриминга или применяются для оптимизации по когерентности.

Разбиение на квадраты в целях стриминга применяется в играх с огромными открытыми пространствами (Microsoft Train Simulator), а также для создания интерактивных карт (могут содержать векторные данные, космические снимки, матрицы высот, тематические карты, объекты мониторинга и другую информацию).

Блоки разбиения применяются практически во всех трёхмерных рендерерах — для лучшей работы текстурного кэша.

Ссылки

Битовый способ отображения тайловых карт / Habr

Техника автоматического выбора нужного тайла из тайловой карты.

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

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

Тайлы, учитывающие своих соседей


Тайлы в Super Mario не учитывают своих соседей: каменный блок всегда выглядит одинаково, и как отдельный фрагмент, и как часть стены.

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

Однобитная карта


Представим, что какими-нибудь хитрыми техниками мы создали схему уровня платформера, состоящую только из каменных блоков и «воздуха» между ними. Уровень можно представить как однобитное изображение, в котором состояние каждого пикселя определяется единственным битом (1 — каменный блок, 0 — «воздух»). Вот увеличенный пример части такого уровня с добавленными линиями сетки:

Набор тайлов (тайлсет)


Тайлсет — это набор графических изображений, которые можно использовать для заполнения карты. Тайлсет Mario довольно ограничен, он состоит из нескольких типов блоков и «декораций», но наш набор будет содержать множество изображений для каждого типа тайлов:

Оцениваем соседей


Чтобы определить, какой тайл должен находиться в конкретной точке карты, мы должны изучить непосредственных соседей этой точки (пока мы игнорируем соседей по диагонали). Чтобы не писать большие конструкции из if/else-if для обработки всех возможные комбинации соседей, мы используем систему, назначающую значения в каждом направлении.

Значение для каждой точки находится исследованием её соседей и прибавлением значений для тех из них, в которых есть камень. Например, если у исследуемой точки сосед сверху тоже заполнен камнем, то ей присваивается значение 1. Если заполнены камнем соседи сверху и снизу, то точке присваивается значение 1 + 4, то есть 5.

Можно заметить, что присваиваемые значения направлений такие же, что и значения в позициях в двоичных числах, и это неудивительно: оба типа значений — это способы представления возможных комбинаций четырёх позиций, каждая из которых может быть во «включенном» или «выключенном» состояниях (камень или «воздух»).

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

Сложение тайлов


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

Отлично!

Двигаемся дальше


Часть первая: избавляемся от «воздуха»


Приведённый выше пример хорошо работает для висящих в воздухе платформ, но на самом деле не полностью обрабатывает два типа тайлов.

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

Мы можем использовать точно такую же систему оценки соседей, как и прежде, но нам потребуется способ, позволяющий при изучении точки определить, что в ней находится — трава или вода. Это реализовать очень просто — достаточно только добавить ещё одно значение самой точке, по тому же шаблону «2 в степени n» из других значений:

Давайте решим, что в случае наличия воды мы будем прибавлять к значению точки, а при наличии травы — не будем. То есть тайл травы, окружённый со всех сторон травой, будет иметь значение 0. Тайл травы с водой сверху и справа, имеет значение 1 + 8 = 9. Тайл воды, окружённый со всех сторон травой, будет иметь значение 16. Тайл воды, окружённый со всех сторон водой, имеет значение 1 + 2 + 4 + 8 + 16 = 31

Часть вторая: добавляем вариативности


Как обеспечить обработку других типов рельефа?

Допустим, в игре с видом сверху есть три типа рельефа: вода, трава и лес. Мы уже обрабатываем границы воды и травы, теперь нам нужно научиться обрабатывать границы воды и леса, а также травы и леса.

Раньше у нас было два варианта тайлов для каждой соседней позиции (трава или вода), поэтому мы использовали двоичную систему исчисления. Теперь варианта уже три, поэтому нам нужно использовать троичную систему. Необходимо изменить систему оценки соседей для соответствия новой системе исчисления:

В двоичной системе использовался шаблон «2 в степени n», в новой же будем применяться шаблон «3 в степени n».

В троичной системе каждое положение имеет три возможных состояния: трава, вода, лес, или 0, 1, 2. Когда в текущей точке находится трава, мы игнорируем значение (умножаем его на 0). Когда в точке находится вода, мы прибавляем заданное значение (умножаем его на 1). В случае леса мы прибавляем удвоенное значение (умножаем его на 2).

То есть в случае тайла леса сверху и справа от которого находится вода, снизу лес, а слева трава: 81 * 3 + 1 * 2 + 3 * 1 + 9 * 3 + 27 * 0 = 275

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *