Diablo 2 Моддинг: Продвинутая информация о формате .DT1
Всем привет. С вами снова Jetaman. На этот раз хочу вам представить результаты моих исследований в области .dt1 и .ds1 (другими словами тайлсеты и карты).
Во первых, уже существует статья Paul Siramy которая описывает формат .dt1 с точки зрения программиста. Однако эта статья не полная и содержит некоторую неверную информацию. Данная статья, с другой стороны, не описывает код, а нацелена на мэпмейкеров которым нравиться создавать новые карты, локации и тайлсеты. Эта статья поможет вам разобраться со всем, что относиться к картам и тайлсетам.
1. «Ориентации» и «Направления»
Когда вы откроете свой редактор карт, и нажмете правой кнопкой мышки на тайле, вы увидите что каждый тайл имеет три индекса которые делают его уникальным и распределяют его в ту или иную категорию.
1-Основной индекс (Main Index)
2-Ориентация (Orientation)
3-Саб индекс (Sub index)
Всего есть 19 индексов Ориентации:
Ориентация 0 – Пол
Ориентация 1 – Левая стена
Ориентация 2 – Правая стена
Ориентация 3 – Правая часть северного угла
Ориентация 4 – Левая часть северного угла
Ориентация 5 – Левая крайняя стена
Ориентация 6 – Правая крайняя стена
Ориентация 7 – Южный угол
Ориентация 8 – Левая стена проход
Ориентация 9 – Правая стена проход
Ориентация 10, 11 – Специальные тайлы
Ориентация 12 – Единичные объекты, колонны и тд
Ориентация 13 – Тени
Ориентация 14 – Деревья (с собственной тенью)
Ориентация 15 – Крыши
Ориентация 16 – Левая нижняя стена (эквивалент Ориентации 1)
Ориентация 17 – Правая нижняя стена (эквивалент Ориентации 2)
Ориентация 18 – Северный угол нижней стены
Ориентация 19 – Южный угол нижней стены
Есть еще один очень важный индекс, который не распределяет тайл по категориям и не отображается в редакторе. Это «Направление» (Direction). «Направление» решает, как свет будет падать на тайл. Это очень важно, если вы создаете новые тайлсеты. Paul Siramy в своей статье говорит что он нашел 5 индексов Направления и заявляет что они ни на что не влияют, однако я нашел целых 9. «Направление» работает совместно с «Ориентацией». Нужно всегда использовать индекс Ориентации с подходящим индексом Направления. Ниже приведена таблица как нужно их использовать.
Direction 1 |
Orientation 1, 5, 8 |
Direction 2 |
Orientation 2, 6, 9 |
Direction 3 |
Orientation 0, 3, 4, 12, 14 |
Direction 4 |
Orientation 7 |
Direction 5 |
Orientation 15 |
Direction 6 |
Orientation 16 |
Direction 7 |
Orientation 17 |
Direction 8 |
Orientation 18 |
Direction 9 |
Orientation 19 |
2. Комбинации Ориентаций и структура некоторых архитектурных элементов
В этом разделе я предлагаю вам ознакомиться со структурой некоторых зданий в Д2. Я делал это в основном для себя, но позже решил поделиться со всеми. Это поможет вам понять как устроены элементы стен в Д2, если вы захотите создавать новые карты или тайлсеты. После анализа и изучения эти примеров я многому научился, и рекомендую вам. Я немерено не представил здесь все здания Д2, потому что эти примеры демонстрируют все важные аспекты и интересные комбинации.
*** Числа на картинках обозначают Индекс Ориентации.
Акт 1 – Дом + Крыша |
||
Акт 1 – Повозка Гида |
||
Акт 1 – Кузница Чарси |
||
Акт 1 – Палатка Акары |
||
Акт 1 – Длинная Палатка + Крыша |
||
Акт 1 – Мавзолей |
||
Акт 1 – Крипта |
||
Акт 1 – Башня Графини |
||
Акт 3 – Дом Ашеары |
||
Акт 3 – Пирамида |
||
Акт 2 - Таверна |
3. Специальные Тайлы, Крыши и PopPads
Вам когда ни будь было интересно, почему статуи Рыцарей Смерти в Огненной Реке поворачивают головы, когда вы проходите мимо них? Это закодированное поведение? Анимированый объект? Темная магия? Нет. Это тот же самый механизм, который в первом акте заставляет крышу исчезать, когда вы заходите в дом. Это делается с помощью Специальных Тайлов – они убирают один слой и открывают другой. В случай со статуями – 2 статуи стоят поверх друг друга, когда игрок подбегает к ним, одна исчезает, другая появляется. Вот так просто.
Специальные Тайлы это тайлы которые находятся во вкладке «Special» в редакторе карт. Они выполняют разные функции. Вот список их функций.
#00-46, #82, #83 Vis (тайлы которые позволяют переходить с одной зоны в другую)
#47-74 Area (тайлы которые позволяют убирать стены и крыши)
#75 Место появления в городе
#76 Место появления на локации
#77 Место появления в городе 2
#78 Место появления трупа
#79 Место появления портала
#80 Неизвестно
Мы будем говорить о Специальных Тайлах #47-74 более детально. Но сначала нужно понять что такое «Крыши».
Что такое «крыши»?
Крыши это те же саме тайлы пола, но с индексом Направления 5 и Ориентацией 15. Крыши должны стоять выше по оси Y, как бы над землей. Для этого, в параметрах тайлсета (в .ini файле) есть строка “roof_y = ”. Обычно “roof_y = 80”, но другие числа тоже возможны, например 160, 240, 320, 400. Но всегда на 80 пикселей вверх.
Как заставить крышу исчезать?
Пара Специальных Тайлов определяет зону в которой исчезают тайлы. Нужно поставить два идентичных Специальных Тайла так чтобы они сформировали квадрат или прямоугольник над той зоной, которую вы хотите убрать. Как вы видите на примере ниже, если поставить Специальные Тайлы таким образом, красная линия определяет зону где тайлы исчезают.
В файле Lvlprest.txt есть два столбца которые имеют отношение к этому:
Pops – число «исчезаемых зон» которые вы используете на карте. Например, в домике в Акте 1 используется 2 зоны, а в Башня Графини 1 зона.
PopPads – регулирует линию триггера исчезаемой зоны. Другими словами это оффсеты которые измеряются в саб-тайлах
PopPads не определяет размер исчезаемой зоны. Он определяет, где игра приведет в действие механизм исчезания. Если ввести здесь 0, исчезаемость будет точно по линии Специальных Тайлов (красные границы). Если например ввести число 3, тогда зона тригера увеличится на три саб-тайла (синие границы). Если использовать негативное число -3, зона тригера уменьшится на три саб-тайла (зеленые границы).
Очень важно помнить, что зона триггера увеличивается или уменьшается только в двух направлениях: Юг и Восток. Итак, как мы видим на этом изображении, тайлы которые находятся в красной зоне исчезают, когда вы проходите по зеленой или синей границе (в зависимости от числа в PopPads).
Если вы хотите сделать собственные исчезаемые крыши или стены, помните одну очень важную вещь: каждый Специальный Тайл работает со своим собственным Основным индексом. Например, если мы взглянем на крышу дома в Акте 1, мы увидим что крыши имеет Основной Индекс 46, и используются Специальные Тайлы #59 и #62. Это означает что эти два Специальных Тайла не будут работать з другими Основными Индексами. А если Специальный Тайл убирает крышу и стены одновременно (как #47 в городе Акт 4), тогда крыша и стены должны иметь одинаковый Основной Индекс. Если вы посмотрите в городе Акт 4, стены и крыша которые исчезают, имеют Основной Индекс 2 а стены которые остаются, имеют Основной Индекс 4. Детальнее о Специальных Тайлах ниже.
Почти все что было известно о Специальных Тайлах до сейчас было частично неверно. Наши знания основывались на двух предположениях взятых с единственной темы на форуме
1. Специальные Тайлы работают только в одном акте (тайлы из акта 4 не работают в акте 1)
2. Специальные Тайлы убирают конкретный слой стен.
Оба этих предположения оказались неправильными. Акты и слои не имеют значения. Любой Специальный Тайл может использоваться в любом акте и убирать любой слой стен. Единственное что имеет значение это Основной Индекс. Специальные Тайлы проверяет только Основной Индекс тайлов которые стоят в их зоне.
Одна из вечных проблем моддеров была поставить в городе два дома рядом и сделать так чтобы их крыши исчезали отдельно. Всегда они исчезали или вместе или исчезала только одна а вторая вообще никогда не исчезала. Это возможно? – Да. И не только два. Вы можете иметь до 4-ех отдельно исчезаемых зон одновременно.
В редакторе карт специальные тайлы #47-74 распределены по Основному Индексу 8, 9, 10, 12, 13, 16 и 20.
Все эти тайлы нужно разделить на 4 группы:
1. Группа 1 – Специальные Тайлы с Основным индексом 8, 9, и 10.
2. Группа 2 – Специальные Тайлы с Основным индексом 12 и 13.
3. Группа 3 – Специальные Тайлы с Основным индексом 16.
4. Группа 4 – Специальные Тайлы с Основным индексом 20.
Но как нам знать какой Основной индекс убирают Специальные Тайлы? Вот это очень интересно. Саб индекс Специального тайла равняется Основному Индексу которые он убирает. Например, Саб индекс Специального Тайла #47 это 2. Это означает Специальный Тайл #47 убирает все тайлы в которые имеют Основной Индекс 2. Специальный Тайл #48 убирает тайлы с Основным Индексом 7. Специальный Тайл #49 убирает тайлы с Основным Индексом 8 и тд. Теперь, взгяните на Специальные Тайлы #54, #60 и #63 – у них одинаковый Саб Индекс 23. Это означает что все они убирают тайлы с Основным индексом 23. Но зачем нам аж три специальных тайлы с одинаковой функцией? Ответ: для того чтобы иметь возмоножсть формировать сложные фигуры которые нельзя сделать с помощью одного Специального Тайла. С этими тремя Специальными тайлами вы можете создать абсолютно любые сложные фигуры для своих исчезаемых крыш или стен. Эти три Специальных Тайла находятся в одной группе, поэтому они будут убирать все одновременно.
А теперь взгляните на Специальные Тайлы #66 и #74. У них тоже одинаковый Саб индекс 23. Но они принадлежать к разных группам (#54, #60 и #63 из Группы 1, #66 из Группы 2, #74 из Группы 4). Это означает что они будут убирать тайлы отдельно.
Но помните: не используйте Специальные тайлы с одинаковым Основным Индексом вместе (например #47 и #48). Будут глюки!
Подведем итог: если вы будете использовать Специальные Тайлы из 4 разных групп, вы можете иметь 4 исчезаемые зоны одновременно. Вам лишь нужно выставить подходящий Основной индекс для соответствующего Специального Тайла.
В таблице ниже вы можете найти всю информацию о Специальных тайлах #47-74.
Группа |
Основной индекс |
№ Специального Тайла |
Убирает Основной Индекс |
Группа 1 |
8 |
#47 |
2 |
#49 |
8 |
||
#50 |
12 |
||
#51 |
14 |
||
#52 |
16 |
||
#53 |
22 |
||
#54 |
23 |
||
#55 |
31 |
||
#56 |
40 |
||
#57 |
41 |
||
#58 |
42 |
||
#59 |
46 |
||
9 |
#60 |
23 |
|
#61 |
40 |
||
#62 |
46 |
||
10 |
#63 |
23 |
|
Группа 2 |
12 |
#64 |
13 |
#65 |
14 |
||
#66 |
23 |
||
#67 |
24 |
||
#68 |
41 |
||
13 |
#69 |
13 |
|
Группа 3 |
16 |
#70 |
25 |
#71 |
40 |
||
#72 |
41 |
||
#73 |
42 |
||
Группа 4 |
20 |
#74 |
23 |
4. Прозрачность Стен
Далее, я расскажу об одной вещи которая оставалась в тайне несмотря на 10 с лишним лет Д2 моддинга. Я имею ввиду прозрачность стен. Это происходит когда персонаж стоит за высокой стеной и стена стает немного прозрачной чтобы вы видели своего персонажа за стеной. Для большинства Д2 моддеров это может показаться несущественным, но для тех кто интенсивно работает с картами это очень важно. А также, очень легко пропустить сундук или монстра если его не видно за стеной, а если вы играете не хардкоре то это вообще очень опасно.
Теперь объясним, как это работает на примере карты Inner Cloister. Весь секрет состоит в том, что прозрачность происходит только тогда когда стены соединены в одну непрерывную цепочку. Если удалить один тайл стены и прервать цепочку – прозрачность исчезает.
Цепочка может иметь любой размер. На одной карте можно иметь несколько цепочек.
В файле Lvlprest.txt, есть один важный параметр, столбец Logicals. 0-отключить прозрачност для этого уровня, 1- включить прозрачность для этого уровня.
Также мой знакомый Ogodei узнал что для того чтобы стены исчезали еще нужно чтобы параметр «Tile Sound» в настройках .ini файла имел значение 0. Если у вас что-то другое кроме 0, стены не будут исчезать.
На сегодня все. Надеюсь вам та информация будет полезной.
P.S.
На этих видео вы можете наглядно увидеть демонстрацию всего, что я описал в статье.
*** кстати я выпустил плагин с этими домами. Его можно скачать и вставить в игру. Ссылка
4 отдельно исчезаемые зоны одновременно:
Демонстрация нового города с исчаземой крышей:
Дополнительные ресурсы:
- Коллекция тайлсетов из игры «Арканум» для Д2 (тема постоянно обновляется);
- Горы из Акта 1 переделаны как обрыв скалы
Автор: JetaMan
Смотрите также: | ||
|
Комментарии
Реклама:
Ответить