Тайловые карты. Подготовка тайлов для пользовательского слоя карты


Тайл - это фактически кусочек картинки. Тайлсет - набор тайлов. Обычно используют квадратные тайлы. С помощью тайлов делают игровое пространство в стратегиях и RPG. Примеры: C&C, WarCraft, Fallout. Под типом тайла понимается принадлежность его к семейству. Например, трава и земля - типы тайлов. Под переходом понимается буквальный переход одного тайла в другой при текстурировании геометрии. Тайл с переходом - это тайл, не являющийся сплошным.

Я выходил на контакт с Blizzard, хотел чтобы они разрешили мне использовать пару их тайлсетов. Но мне ответили, что получить разрешение будет очень сложно, так как тот, кто рисовал текстуры в штате у них не числится, а права на них остаются за этим человеком. Так что я решил нарисовать свои тайлсеты. Для удобоваримости я их сделал похожими на тайлсеты Blizzard из WarCraft III. Итак, вот они:

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


схема 0

А дальше мы кликаем мышкой и программа должна выставлять соответствующие тайлы из тайлсета в квадратиках. Оригинальный редактор миров использует 4 квадрата, в каждом из них выбирает тайлы из тайлсетов. Тайлсетов может быть несколько. Не думаю, что там явная организация по слоям, но кто знает. Однако сам предполагаю что слоев как таковых все-таки нет, вместо этого анализируются углы квадратов с тайлами. Возможно что даже номер перехода тайла не хранится в карте для обработки. Т.е. каждому квадратику приписан определенный тип тайла и все. В некоторых местах этот тайл сплошной, т.е. без переходов, в других же - с переходами. Переходы, как пока сам думаю, настраиваются исходя из содержания "соседних квадратов".

Предположим, что по клику мышки мы хотим вписать на карту "кружок", составленный из четырех тайлов. Например:


схема 1

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

Итак, вот как интерпретируется схема 1 в виде карты чисел:


схема 2

Вписать четыре единицы в кучу нулей не составляет труда. Основная загвоздка в том как подобрать нужный тайл, то бишь, с нужным переходом. Следует помнить, что сходиться в одном квадрате может до четырех текстур. У квадрата четыре стороны, поэтому с каждой может быть свой тайл. Вернемся немного назад к тому как мы накладывали кружок из травы. Да, в оригинальном редакторе тоже появляется кружок, если мы тычем мышкой на пустую землю. Я предлагаю выбрать в качестве приоритетной формы тайлинга сплошные квадраты. То есть при каждом клике мыши на карту квадратов, программа должна стремиться наложить в месте клика 4 сплошных тайла. Однако 4 сплошных тайла будут уместны только в том случае, если их тип совпадает с уже имеющимися на карте тайлами, причем те не должны быть переходными. Иначе, если слепо наложить 4 сплошных тайла, мы получим острый квадрат. А острых углов обычно избегают. Короче говоря, мы только предполагаем что будут наложены четыре сплошных тайла. Но прежде чем их наложить, мы должны провести анализ соседних квадратов, и, если потребуется, сменить сплошые тайлы на переходные.

Разберемся как же получается кружок на схеме 1. Предлагаю рассмотреть более детально процесс на схеме 1:

1. Мышь кликает на еще пустой квадрат a схемы 0. Тем самым выбираются 4 квадрата (a,b,c,d) для обработки.

2. Не глядя в карту типов тайлов мы записываем четыре единицы (схема 2).

3. Начинаем анализировать то что получилось на схеме 2. Мы должны проанализировать 4 угла (отмечены цифрами на схеме 3). Таким образом, переход тайла в квадрате a будет определяться углом 1, в квадрате b - углом 2 , в квадрате c - углом 3 , в квадрате d - углом 4 .


схема 3

Теперь нужно проанализировать эти четыре угла по отдельности, тем самым упрощая задачу.

Рассмотрим первый угол.


схема 3.1

Наша задача - установить нужный тайл в квадрате a . Делаем предположение что в квадрате a будет сплошной тайл. Например такой:

Смотрим на схему 3.1. Там видим, что на накладываемый тайл травы, закодированный единицей, действуют другие соседние тайлы, закодированные нулями. Желтый нуль своим действием трансформирует сплошной тайл в переходный тайл такого вида:

Зеленому нулю нечего внести в имеющуюся картину, а красный нуль трансформирует дальше так:

А потом синий довершает картину, т.к. серый не вносит отличий:

Именно этот получившийся переходный тайл мы и помещаем в квадрат a . Причем не важно в каком порядке мы рассматриваем действия соседних тайлов. Аналогичные рассуждения можно провести и для остальных квадратов b,c,d . В итоге должна получиться картинка как на схеме 1.

Со схемой 1 разобрались успешно. Я рассуждал о "действиях нулей" исключительно ради того, чтобы было лучше понятно. При реализации совсем не нужно писать функции, отождествленные с этими действиями, достаточно собрать только битовую маску тайла. По битовой маске совершенно однозначно выбирается тайл. Битовую маску в данном случае удобно делать 2х2, т.к. нетрудно заметить что четыре бита вместе дадут 16 различных значений, а в заготовленных тайлсетах как раз 16 вариаций переходов.

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

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

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

Для того, чтобы использовать изображение в качестве пользовательского слоя Яндекс.Карт, его необходимо предварительно подготовить. Подготовка изображения включает в себя два этапа:

    Привязка изображения к географическим координатам (совмещение изображения с картой).

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

    Формирование наборов тайлов.

    Привязанное к координатам изображение требуется нарезать на фрагменты (тайлы) размером 256x256 пикселов. Каждый тайл хранится в отдельном файле (JPEG или PNG). Для каждого значения коэффициента масштабирования должен быть сформирован свой набор тайлов.

Приложение "Подготовка слоя тайлов"

Приложение "Подготовка слоя тайлов" позволяет автоматизировать процесс подготовки произвольного изображения для показа на веб-странице с помощью API Яндекс.Карт.

","hasTopCallout":false,"hasBottomCallout":false,"areas":[{"href":"http://download.yandex.ru/maps/tools/tiler/ymaptiler.exe","shape":"rect","alt":"","justMapLink":true,"coords":,"isNumeric":false}]}}">

Приложение позволяет полностью автоматизировать решение следующих задач:

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

Ограничение.

Приложение доступно только для операционной системы Microsoft Windows.

Быстрый старт

    Откройте изображение (в меню Файл выберите команду Открыть изображение ).

    Исходное изображение может быть в одном из следующих форматов: , или.

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

    Экспортируйте изображение в требуемый каталог. Необходимые наборы тайлов и HTML-код карты будут сформированы автоматически.

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

Управление точками привязки

Внимание. Чтобы перейти в режим редактирования геопривязанного изображения, установите флажок Привязка .

Привязка изображения к участку земной поверхности осуществляется по 4-м (или более) точкам, расставленным, как правило, по углам изображения. Каждая точка привязки имеет две пары координат: пиксельные координаты (X и Y) и географические (широта и долгота).

Начало отсчета пиксельных координат находится в верхнем левом углу изображения, X – номер пикселя по горизонтали, Y – по вертикали.

Географические координаты точек привязки задаются в десятичном формате. Например, для долготы 34°30" десятичное значение составляет 34.5.

Создание точки привязки

Чтобы создать точку привязки на изображении:

    Нажмите кнопку Добавить .

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

Перемещение точки привязки

Точки привязки можно перетаскивать мышью.

Удаление точки привязки

Чтобы удалить точку привязки, щелкните по ней кнопкой мыши или выберите в таблице точек соответствующую строку, а затем нажмите кнопку Удалить .

Сохранение точек привязки в файл

Экспорт изображения

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

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

Чтобы экспортировать изображение в виде наборов тайлов и HTML-кода карты:

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

    Нажмите Готово . Если изображение имеет большие размеры, то его преобразование и формирование тайлов могут занять несколько минут.

Параметры экспорта тайлов

Каталог для сохранения тайлов Папка, в которой будут созданы файлы тайлов и HTML-файл с кодом карты. Маска имен файлов тайлов Задает правила формирования имен тайловых файлов. Вместо символов %z в имя файла подставляется коэффициент масштабирования, для которого предназначен тайл, вместо %x и %y – координаты тайла. Например, если задана маска %z\tile-%x-%y.png , то тайл с координатами (43797;20185) для 16-го масштаба будет сохранен в подпапку 16 под именем tile-43797-20185.png . Формировать HTML-код карты в файле Установите флажок, если кроме тайлов требуется сформировать HTML-код карты в отдельном файле. Масштабные уровни Максимальное значение коэффициента масштабирования и общее количество его возможных значений, для которых требуется сформировать тайлы. Например, если необходимы тайлы для уровней с 0 по 16, выберите в раскрывающемся списке Максимальный масштаб значение 16, а в списке Количество уровней – 17. Для геопривязанных изображений максимальный возможный масштаб определяется автоматически. Если требуется экспортировать привязанное изображение в большем масштабе, то следует увеличить его размер в графическом редакторе. Формат файлов тайлов Тайлы могут быть экспортированы в один из двух форматов: или. Цвет для заполнения пустот Задайте цвет для заполнения пустот, если выбран формат экспорта JPEG. Данный параметр определяет, каким цветом должны быть заполнены прозрачные участки исходного изображения, а также прозрачные области, которые могут образоваться при повороте изображения во время преобразования. Прозрачность Задайте прозрачность, если выбран формат экспорта PNG. Если пользовательский слой будет отображаться поверх одного из стандартных слоев карты (Схема, Спутник или Гибрид), то тайлы следует сделать полупрозрачными. API-ключ Яндекс.Карт Уникальный API-ключ, полученный для сайта, на котором будет размещена карта. Название слоя тайлов Имя пользовательского слоя, которое будет отображаться в элементе управления "Выбор типа карты". Слой-подложка под слоем тайлов Название слоя Яндекс.Карт, поверх которого будет отображаться созданный пользовательский слой. Элементы управления Яндекс.Карт Названия стандартных элементов управления, которые будут доступны на сформированной карте.

Что такое Готическое подземелье ?

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

Тайлы всех наборов выполнены в едином стиле, в масштабе 28/25 мм или 1:58, поделены на дюймовые клетки и прекрасно подходят для создания игрового поля под настольные ролевые игры (D&D, Pathfinder, Дневник Авантюриста/Savage Worlds и т.п.), варгеймы (Warhammer 40k, FB, Age of Sigmar; Malifaux и т.п.), настольные игры (Descent: Странствия во Тьме, Dungeon Twister, Space Hulk, Wiz War и т.п.)

Наборы Готическое подземелье представлены в двух вариантах: основные наборы (4 вида) и add-on наборы (15 видов). При помощи каждого из основных наборов Вы сможете собрать небольшое подземелье из нескольких комнат, а при помощи add-on наборов сможете добавить в своё подземелье факелы, столы и стулья, бочки, сундуки, лестницы и много чего ещё.

Все наборы идеально совместимы друг с другом, так что Вы легко сможете собрать большое игровое поле-подземелье из нескольких наборов сразу!

Готическое подземелье совместимо с другими похожими продуктами, например, подземельями компании Dwarven Forge и т.п.

Ссылки на указанные в сравнении наборы можно найти здесь: Dwarven Forge , Stones Master Builder Set , Super 3D Dungeon Boards , Infinite Crypt , Fantasy Dungeon terrain .

Обратите внимание, что такие материалы, как картон, МДФ и гипс недолговечны и плохо переносят падения, частую сборку/разборку и переноску. Именно поэтому наши наборы сделаны из пластика!!!

Как создавалось Готическое подземелье?

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

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

А есть ли у нас лицензия на использование разработок Hirst Arts? ЕСТЬ!

Кто мы такие?

Наша компания называется "Студия "Пандора Бокс". Мы были созданы в 2011 году и с тех пор являемся крупнейшим дистрибьютором и продавцом аксессуаров для настольных и настольных ролевых игр на территории России и стран СНГ.

Как построена наша кампания на CrowdRepublic?

Мы предлагаем 4 основных и 15 add-on наборов.

Первый основной набор - это Стартовый набор. 3 других основных набора (дополнения к Стартовому набору).

Для заказа открыты все наборы + ранние пташки + дополнительные тайлы ко всем наборам.

Кроме того, Вы можете заказать отдельно покраску и доставку наборов (условия смотрите в соответствующих разделах ниже).

Стартовый набор - это первый основной набор из серии Готическое подземелье, сочетающий в себе простоту и удобство.

Всего в наборе 34 пластиковых элемента.

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 128/320.

С помощью данного набора можно собирать комнаты, а также просторные прямые коридоры шириной 3 дюйма.

Используя несколько наборов сразу Вы можете собрать большое игровое поле со множеством комнат и коридоров!

Из двух Стартовых наборов можно создать большое количество разнообразных помещений нестандартной формы! Площадь игровой поверхности в квадратных дюймах/сантиметрах: 256/640. Покупая сразу ДВА Стартовых набора Вы экономите!!!

Три набора сразу, сделают Ваше игровое приключение более разнообразным и увлекательным! Площадь игровой поверхности в квадратных дюймах/сантиметрах: 384/960. Кроме того, покупая сразу ТРИ Стартовых набора, Вы получаете лучшую скидку!!!

Используйте этот набор, чтобы добавить в своё подземелье 4 угловых тайла № 1 с предметами интерьера (столами, стульями, ящиками).

ВАЖНО!

Добавьте в свой набор 4 дополнительных тайла пола № 1, с установленными на них, факелами. Ведь подземелье надо осветить!

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 16/40.

ВАЖНО! Факелы являются частью тайлов, их нельзя передвинуть или переместить на другие тайлы. Они также не снабжены настоящими источниками света.

Утомлённый персонаж всегда сможет перекусить или поговорить с товарищами если в Вашем подземелье будут тайлы со столами и лавками. Количество тайлов в наборе - 3 штуки.

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 12/30.

ВАЖНО! Лавочки и столы являются частью тайла, их нельзя передвинуть или переместить на другие тайлы.

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

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 16/40.

ВАЖНО! Лавочки являются частью тайла, их нельзя передвинуть или переместить на другие тайлы.

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

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 16/40.

ВАЖНО! Кровати и подушки являются частью тайла, их нельзя передвинуть или переместить на другие тайлы.

4 дополнительных малых дверных проёма № 1 и 4 двери к ним идеально подойдут для тех игроков, которые любят, чтобы из каждой комнаты было по меньшей мере два выхода...

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 16/40.

ВАЖНО!

Ну, а если Вам нужно как минимум 2 выхода из комнаты, да к тому же Вы желаете не промахнуться мимо них в темноте готического подземелья, тогда Вам точно необходимы дополнительные широкие дверные проёмы с большими дверями как в этом наборе! Здесь их 4 штуки!

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 16/40.

ВАЖНО! Дверные проёмы и двери к ним идентичны тем, что имеются в стартовом наборе.

Дополнительный набор - это второй основной набор из серии Готическое подземелье.

Всего в наборе 50 пластиковых элементов.

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 112/280.

С помощью данного набора можно собирать:

  • комнаты (в том числе шириной 2 и 1 дюйм);
  • добавлять в комнаты и коридоры колонны;
  • составлять прямые коридоры шириной 3, 2.5, 2, 1.5, 1, 0.5 дюйма;
  • делать углы, остриё которых направлено внутрь комнаты.

Тайлы дополнительного набора легко сочетаются с тайлами стартового набора.

ВНИМАНИЕ!

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

ВАЖНО! Предметы являются частью тайла, их нельзя передвинуть или переместить на другие тайлы.

На этих тайлах Вы найдёте новые ящики, мешки, бочки и сундуки, из которых Ваши герои смогут добыть и в которых смогут содержать ещё больше нужных или не очень нужных вещей!

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 10/25.

ВАЖНО! Предметы являются частью тайла, их нельзя передвинуть или переместить на другие тайлы.

Набор тайлов стены с мрачными барельефами. Сделает Ваше подземелье ещё более мрачным!

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 10/25.

ВАЖНО! Оставьте барельефы в покое! Прекратите отдирать их от стены! Они являются частью тайлов!

4 дополнительных малых дверных проёма № 2 и 4 малых двери к ним. Обратите внимание, что данные дверные проёмы установлены на 2, а не на 4 плитки пола! Поэтому, их можно размещать не только в стенах комнат, но и в стенах самых узких коридоров.

ВАЖНО!

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

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 8/20.

ВАЖНО! Дверные проёмы и двери к ним идентичны тем, что имеются в Дополнительном наборе.

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

Всего в наборе 20 пластиковых элементов.

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 77/192,5.

Этот набор позволяет разнообразить подземелье красивыми извилистыми коридорами с резкими поворотами, перекрёстками и тупиками.

ВНИМАНИЕ! Цвет наборов на видео несет демонстрационный характер для наилучшего понимания возможностей комбинирования с другими наборами.

Набор с косыми стенами - это последний из основных наборов.

Всего в наборе 24 пластиковых элемента.

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 50/125.

С помощью этого набора можно собирать:

  • комнаты со скошенными углами;
  • комнаты изогнутые внутрь себя;
  • небольшие комнатки внутри более крупных комнат;
  • делать двери в углах комнат;
  • создавать косые коридоры;
  • делать стены с колоннами.

ВНИМАНИЕ! Цвет наборов на видео несет демонстрационный характер для наилучшего понимания возможностей комбинирования с другими наборами.

ВАЖНО! Дверные проёмы и двери к ним идентичны тем, что имеются в наборе с косыми стенами.

Если Вы хотите, чтобы Ваши герои или их враги появлялись в помещении из разных, необычных мест - этот набор создан специально для Вас!!!

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 14/35.

ВАЖНО! Дверные проёмы и двери к ним идентичны тем, что имеются в Наборе с косыми стенами.

Набор лестниц, входов в подземелье и выходов из него.

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 32/80.

С таким набором Вы сможете составлять широкие и узкие лестницы, лестничные клетки, ставить входы и выходы на верхние и нижние этажи по всему Вашему подземелью, практически в любом месте!!!

Набор широких коридоров - это основной набор, который открывается при достижении проектом суммы в 100 000 руб.

Всего в наборе 30 элемента.

Площадь игровой поверхности в квадратных дюймах/сантиметрах: 112/ 280.

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

Все наборы серии Готическое подземелье сделаны из тёмно-серого пластика и ПРОДАЮТСЯ НЕПОКРАШЕННЫМИ .

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

Стоимость покраски ОДНОГО НАБОРА у нас, как основного так и add-on набора, составляет 500 рублей .

Покрасить можно только наборы, приобретённые в ходе данной кампании.

Чтобы заказать покраску наборов, выберете награду "Покрасить" столько раз, сколько наборов Вы заказали.

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

ВНИМАНИЕ! Покраска будет выполнена способом dry brush. Элементы дверей, деталей интерьера и пр. будут покрашены в соответствующие им цвета. Покраска стандартизирована.

ОБЩАЯ ИНФОРМАЦИЯ

Доставка обычной почтой осуществляется только по России.

Самовывоз возможен из магазинов в г.Москва (Российская Федерация), в г.Минск (Республика Белорусь) и в г.Алма-Ата (Республика Казахстан). Если Вы живете в другой стране СНГ или мира и хотите заказать "Готическое подземелье", пожалуйста, свяжитесь с нами, прежде чем делать заказ, для уточнения стоимости, способа доставки, а также возможности её осуществления.

УСЛОВИЯ ДОСТАВКИ

  • БЕСПЛАТНО! Самовывоз из магазина "Тридевятое" в

Вы можете создать фон состоящий из тайлов. Причины для этого следующие: во многих играх Вы захотите иметь красивые фоны. Например, в лабиринтной игре Вы захотите, чтобы стенки подходили к друг другу, а в платформе Вы захотите, чтобы фон уровня включал изменяющиеся платформы, деревья и т.д. Вы можете сделать всё это в Game Maker , создавая множество различных объектов, а затем из них составлять свои уровни (комнаты). Но для обработки таких фонов потребуется много ресурсов компьютера, и загрузка таких уровней будет происходить медленнее из-за множества разнообразных объектов. Например, чтобы создать красивые стены в игре с лабиринтом Вам понадобится 15 объектов стен различных видов.

Стандартный выход, используемый во многих играх, заключается в том, что стены и другие статические объекты фактически рисуются прямо на фоне. Но, Вы можете спросить, откуда же игра узнаёт, когда объект натыкается на стену, если она (стена) всего лишь нарисована на фоне? А решение лежит таки на поверхности: Вы создаёте всего один объект стены для игры. Он должен иметь соответствующий размер, а выглядеть может как угодно. При создании комнаты поместите этот объект во все места, где имеется стена. А затем мы делаем данный объект невидимым. В результате, во время игры, Вы не будете видеть указанные объекты стен. Вы увидите вместо них красивый фон. Но твёрдые объекты стен (те, что не видны) - всё ещё там, и объект в игре будет реагировать именно на них.

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

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

Теперь, после определения комнаты, щёлкните на вложении tiles . Откроется следующее окно (в действительности, мы уже добавили некоторые плитки в данном примере и отключили сетку).

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

Теперь Вы можете добавлять тайлы, выбрав нужную плитку из набора в левом окне, а затем кликнув в соответствующей области комнаты, находящейся справа. Принцип добавления тайлов аналогичен ситуации с добавлением экземпляров объектов. Если Вы отключите опцию Delete underlying (Удалять при наложении) . Вы можете использовать правую кнопку мыши для удаления тайлов. Удерживая клавишу (при добавлении тайлов) Вы можете добавить сразу много тайлов. И удерживая клавишу , Вы можете перемещать тайлы на новое место. Клавиша позволяет указать точную позицию тайла. Имеется также дополнительное меню, которое появляется при удержании клавиши и щелчке правой кнопкой мыши по тайлу. Кнопки в такой инструментальной панели могут: очистить, сдвинуть, отсортировать или блокировать/деблокировать все тайлы. (В действительности, они действуют только в текущем слое, смотрите ниже).

В некоторых случаях Вы могли бы захотеть поместить часть фона в комнату, которая не будет точно соответствовать размеру плитки тайла. Это проделывается следующим образом. Удерживая клавишу , выделите левой кнопкой мыши желаемое изображение. Теперь Вы можете перетащить и установить в комнате удерживаемое изображение, так же как и тайлы. Чтобы выбрать несколько тайлов, удерживайте клавишу . Заметьте, что это работает нормально, если между тайлами нет разделителя. Если Вы хотите выбирать область кратную размерам сетки, то удерживайте . (Заметьте, Вы можете сменить клавишу во время выбора тайла. В некоторых ситуациях это может пригодится.)

Тайлы могут быть установлены в слоях, которые имеют разную глубину. Внизу Вы увидите текущую глубину. Значение по умолчанию - 1000000, что значит, что тайлы будут за экземплярами. Итак, экземпляры объектов обычно отрисовываются перед тайлами. Вы можете использовать кнопку Add (Добавить) , чтобы добавить новые слои тайлов, имеющих другую глубину. Отрицательные глубины могут использоваться для помещения тайлов перед экземплярами объектов. Если Вы устанавливаете для объектов разные глубины, то Вы можете поместить их между разными слоями тайлов. Если Вы нажмёте Delete (Удалить) , то Вы удалите слой вместе со всеми имеющимися тайлами. (Должен всегда быть хотя бы один слой). Если Вы нажимаете Change (Изменить) , Вы можете изменить глубину слоя плитки. Если Вы даёте такую же глубину другому слою, то они будут объединены.

Tiles can be placed in layers at different depths. At the bottom you see the current depth. Default this is 1000000 which is normally behind all instances. So the instances will move in front of the tiles. You can use the Add button to add new tile layers, each with a different depth. Negative depths can be used to put tiles in front of instances. If you also give objects different depths you can put them between different tile layers. If you press Delete you delete a tile layer together with all its tiles. (There must always be at least one layer.) If you press Change you can change the depth of a tile layer. If you give it the same depth as another layer, the layers are merged.

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

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

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

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

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

Тайлы в 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 тайловых изображения. При работе вручную это бы заняло очень много времени. Крайне рекомендую изучить хотя бы частично автоматизированные способы создания такого множества комбинаций.

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



Поделиться: