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 – Палатка Акары
* Палатка Акары состоит из двух тайлов Ориентации 12 Странно не так ли? Почему на 1 или 2?

Акт 1 – Длинная Палатка + Крыша

Акт 1 – Мавзолей
*Часть лестницы сделана как пол, чтобы игрок мог подойти к входу.

Акт 1 – Крипта
**** Часть лестницы сделана как пол, чтобы игрок мог подойти к входу.

Акт 1 – Башня Графини
*** Это здание состоит из двух слоев стен. Когда вы заходите внутрь, верхний слой исчезает. По неизвестной нам причине южная угловая стена имеет ориентацию 2 вместо 7.

Акт 3 – Дом Ашеары
*** Левая крайняя стена с Ориентацией 6 вдвое дольше обычного, поэтому занимает два квадрата. ***Внутри дома есть стена с изображением дракона, по какой-то причине она имеет ориентацию 6 вместо 1. *** В этом здании используется специальные тайлы чтобы убрать верхний слой стен, открывая интерьер дома.

Акт 3 – Пирамида
*** Я был очень удивлен когда я понял насколько просто сделано это здание. Зад пирамиды сделан непроходимым, поэтому игрок не видит этого. Также, на пирамиде есть прозрачные пиксели и если бы игрок бегал сзади пирамиды, то его было бы видно, а это не очень красиво.

Акт 2 - Таверна
*** Перед этого здания состоит из двух слоев стен + крыша. Чтобы убрать верхний слой стен и крышу используется Специальный Тайл #49. Это здание интересно тем что верхний слой стены стоит выше нижнего, таким образом создавая эффект двойной высоты стен.

 

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 отдельно исчезаемые зоны одновременно:



Демонстрация нового города с исчаземой крышей:



Дополнительные ресурсы:


Автор: JetaMan




Комментарии

Ddos 2018-11-29 13:50:09
Спасибо

Ответить
? +5 ?
Страницы:

Ваше имя
Комментарий



Реклама:

Наша командаРазработка глобального обновления

При поддержке Сил Преисподней
2008-2024