Добавление клифов в карту

Added by , published
Раздел:
Ландшафт

О статье

В этой статье постараюсь объяснить как добавить более 2-ух клифов в редактор/карту. Сразу скажу что не всё так хорошо как хотелось бы и для этого нам понадобится самоподключающийся .mix архив, нижу распишу почему.
Тестировалось только на 1.26.

Подготовка

Немного базы

Клифы, в отличие от тайлов, представляют из себя модели с Replaceable (заменяемой) текстурой и хранятся по путям:
  • Doodads\Terrain\CityCliffTrans - искусственные клифы для переходов между уровнями рельефа;
  • Doodads\Terrain\CityCliffs - искусственные клифы;
  • Doodads\Terrain\CliffDoodad - клифы-декорации, по типу пещер, трещин и т.д.;
  • Doodads\Terrain\CliffTrans - природные клифы для переходов между уровнями рельефа;
  • Doodads\Terrain\Cliffs - природные клифы.
В папках очень много файлов с именами по типу CliffsAAAB0.mdx - разные вариации клифов, игра сама решает какой из них применять в той или иной ситуации.
Из всего этого видно что клифы разделяются на 2 основных типа - Искусственные (с ровными краями) и Природные (с кривыми краями).
Думаю разница что где ясна.
Данные о клифах хранятся в файле TerrainArt\CliffTypes.slk.
Названия говорят сами за себя но вот список обозначений:
  1. CliffId - идентификатор клифа, именно он определяет какие клифы будут использоваться (в war3map.w3e);
  2. cliffModelDir - директория с моделями клифов;
  3. rampModelDir - директория с моделями клифов для переходов между уровнями рельефа;
  4. texDir - директория с текстурами клифов;
  5. texFile - файл текстуры клифа;
  6. name - имя клифа отображаемое в редакторе;
  7. groundTile - нижний тайл который будет рисоваться у подножья клифа;
  8. upperTile - верхний тайл который будет рисоваться у вершины клифа, если указан прочерк то используется groundTile;
  9. cliffClass - нечто вроде классификации клифов, по умолчанию c1 для Cliff1 и c2 для Cliff0;
  10. oldID - похоже нечто вроде старого идентификатора, у новых клифов дополнения TFT выставлен на -1 так что смею предположить что не используется.

Небольшой ликбез

В mpq архивах игры war3.mpq и War3x.mpq лежат еще несколько mpq архивов с именами A.mpq, B.mpq, C.mpq и т.п. - эти архивы и хранят текстуры клифов, воды, некоторых уберсплатов и иногда некоторых юнитов. Имя архива это начальная буква типа ландшафта который использует карта (A.mpq - Ashenvale), суть в том что игра подгружает нужный из этих архивов в зависимости от базового типа ланда.

Нужный инструментарий

  1. Любой MPQ редактор (я юзаю Ladik's MPQ Editor).
  2. Любой редактор для работы с SLK таблицами (тот же Microsoft Excel).
  3. Любой HEX редактор (нам подойдет и Notepad++ с плагином HEX-Editor). Опционально

Добавляем типы клифов

По стандарту в редакторе доступны 2 клифа, однако их точно так же как и тайлы можно растянуть до 16 штук, главное чтобы в карте присутствовали тайлы указанные в groundTile и upperTile. У стандартных клифов эти значения обычно одинаковы, однако есть исключение - клиф COrd (Бездна) использует тайл Oaby для подножья и Osmb для вершины, создавая эффект бездны (как ни странно).
Вообще ландшафт Глушь сам по себе интересен, например у него нет воды а вместо глубоководья черная дымка.
В данной статье мы будем добавлять к ландшафту Города стандартные тайлы и клифы Глуши.

Способ I - Через редактор варика

Сразу скажу что через Дополнительно - Изменить тип ландшафта кнопка Добавить не активна если выбрать тайл с клифом (это те что с красным квадратиком) даже если хватает стандартного места.
Тут для видимости удалены большинство тайлов.
Остается вариант через Extensions - Edit Tiles, для этого выбираем нужные нам тайлы которые используют клифы, нажимаем Ok, сохраняем и перезапускаем редактор.
Справа на палитру должно было добавится 2 новых клифа, но добавился только 1.
Вот этот вот Edit Tiles какой-то баганый - не показывает красным квадратиком что есть клиф а только можно ли строить на тайле (синий квадратик), хотя при наведении мыши на тайл всплывает подсказка с названием тайла и "(Cliff)" справа от названия, и то не всегда.

Способ II - Через эдит файла ландшафта

Вообще как я понял исходя из файла тайлов TerrainArt\Terrain.slk там тайлы логически разделяются на 2 типа, те которые используются клифами и те которые не используются.
Тут нам интересны первые два поля:
  1. tileID - идентификатор тайла, тайлы которые обычно используются дефолтными клифами начинаются с первой буквы ландшафта (Ldrt, Fdrt, Wgrs...) а их cliffSet равен -1;
  2. cliffSet - если не равен -1, то это вот те тайлы которые будут отображаться в пунктиках Дополнительные текстуры - Базовые текстуры склонов (см выше скрин где мы пытались добавлять стандартными средствами редактора) а их tileID начинаются с буквы "c", второй буквой идет ландшафт (cAc2, cBc1, cOc1...).
Короче, к чему это, почему в I способе добавился только 1 клиф вместо 2? Если открыть файл ландшафта war3map.w3e в HEX редакторе то можно будет глянуть какие ID тайлов и клифов использует карта (статья где расписано что из себя представляет этот файл).
Что нужно сделать:
  • В списке тайлов YdrtYbtlYsqdYdtrYblmYrtlYgsbYhdgYwmbOdrtcOc2cOc1 последние 3 это добавленые нами тайлы в I способе, из них клифами используется только Odrt, остальные же cOc2 и cOc1 надо заменить на их аналог Osmb и Oaby (их можно найти в том же TerrainArt\Terrain.slk).
  • В списке клифов CYdiCYsqCOdi нужно добавить клиф COrd (его можно найти в том же TerrainArt\CliffTypes.slk) и увеличить кол-во типов клифов на 1.
Порядок выберите сами, но я в редакторе сместил новые тайлы в самое начало списка.
Закидываем war3map.w3e в архив карты, открываем ее, видим что теперь клифов стало 4 но при этом они используют базовые текстуры клифов текущего ландшафта, хотя groundTile/upperTile отображает правильно.
Для правильного отображения придется редактировать TerrainArt\CliffTypes.slk и запихивать его в mix, т.к. эта таблица подгружается до карты и в импорт ее кидать толку нет, анлаки(

Заставляем нормально отображать текстуры

На этом моменте создаем пустой .mix архивчик по этой статье и назовем его например CliffFix.mix.
Смотря на TerrainArt\CliffTypes.slk можно сразу заметить что их путь текстуры texFile имеет только 2 значения - Cliff0 и Cliff1, т.е. так задумано что на 1 карту будет использоваться всего 2 типа клифа. Как было написано выше в ликбезе, текстуры по этим путям (ReplaceableTextures\Cliff\Cliff0.blp и ReplaceableTextures\Cliff\Cliff0.blp) подгружается в зависимости от базового типа ланда, поэтому придется изменить значения этого поля.
Кроме как во вложенных .mpq архивах (A.mpq, B.mpq, C.mpq) текстуры клифов из дополнения ROC хранятся в директории war3.mpq по пути ReplaceableTextures\Cliff\.
Остальные же текстуры из дополнения TFT хранятся в этих вложенных архивах, нужно их оттуда достать и закинуть в наш CliffFix.mix по тому же пути, обозвав их по примеру выше. Можно было конечно сделать это и в импорте карты, но мы один хрен .mix делаем.
Далее необходимо отредачить TerrainArt\CliffTypes.slk и так же закинуть его в CliffFix.mix.
Здесь мы изменили путь текстуры texFile с "относительного" на "абсолютный" а так же сделали для всех клифов уникальный cliffClass - во время тестов выяснилось что если этого не сделать то при любом изменении палитры тайлов, замене клифов и прочих действиях которые будут вызывать перерисовку/ретекстур ландшафта будут сбиваться добавленные клифы до базовых (внутри это как-то с этим полем чекается наверн).
Закидываем CliffFix.mix в корень игры, запускам мапу и уот:
Для того чтобы клифы так же отображались в редакторе надо немного "пропатчить" .mpq вара таким же образом как и наш CliffFix.mix.
`
LOADING AD...
3
33
1 week ago
3
Годно. Часто ограничения не дают творить во всю. Мб где-нибудь и заюзаю.
4
32
1 week ago
4
Варкрафт 3 на главной🙃
2
19
1 week ago
2
Прикольно. Особенно спасибо за объяснение текстур типа cOc2 итд. А ты пробовал добавить новые клифы в slk? Что получилось? И как быть с перезаписью файла w3e при сохранении карты? И если этот файл править, по дефолту новые клифы в карте появятся в WE после загрузки карты в WE?
Replies (7)
0
14
1 week ago
0
EugeAl, Добавлять новые не пробовал, т.к. другую цель преследовал, но по идее можно и тайлы и клифы так добавлять. Когда карта пересохраняется все норм, клифы на своих местах остаются как и должны, просто нет способа "из коробки" нормально новые клифы добавить поэтому приходится редачить w3e. Последние вопрос не понял, что имеешь ввиду?
0
19
1 week ago
Edited by EugeAl
0
OVOgenez, Понял, спасибо. Последний вопрос уже не актуален, раз пересохраняется нормально, значит и загрузится в WE нормально.
Просто хочу сделать "из коробки" )
0
14
1 week ago
0
EugeAl, Имеешь ввиду плагин свой написать для этого?
3
19
1 week ago
3
OVOgenez, Нет, никакого плагина не надо, к счастью) В общем, эксперимент показал, что можно добавить новые клиффы "из коробки"! Для этого нужно по аналогии с остальными клиффами создать клифф, дать ему новый равкод (допустиv CLro), cliffClass c3, а текстуру можно так же по разным ландам в архивы A-Z mpq распихать, и обозвать ее например Cliff2, либо свою какую нибудь. И все это дело засунуть в Патч Мпку или микс. Без правки w3e(!). И вот результат! )
П.С. На остальные изменения в игре не обращай внимания, они на клифы не влияют. По итогу можно вообще разгуляться и наделать хренову гору разных клифов... Редактор карт обычный, и кстати говоря, если в нем заменить ланд карты, и в другом ланде нового клифа нет, новый клиф заменится на второй, что стоит в другом ланде. Но лучше все же наделать 3+ клифф для Всех ландов, меньше возни будет потом.
Uploaded files
0
19
1 week ago
0
OVOgenez, скрин slk забыл
Uploaded files
0
14
1 week ago
0
EugeAl, Ну это как я понял ты расширяешь стандартный набор клифов для конкретных ландов, поэтому само подсасывает. Если нужно взять клиф из другого ланда то придется уже редачить w3e.
0
19
1 week ago
0
OVOgenez, ну в таком случае да, придётся.
1
15
1 week ago
1
Годная статья, спасибо, может пригодится!
0
14
1 week ago
0
Так же если вы особый извращенец, то можно сделать свой вид клифа (по типу искусственных/природных) - перелопатить все эти модели и создать на их основе новые вариации. Например покрытые льдом клифы - копипастнуть меш клифа и наложить его вторым слоем чуть выше первого, юзануть для него текстуру льда/кристалла и сделав полупрозрачным. Вообщем, на что фантазии хватит, но вот оно наверное нахрен не уперлось никому когда есть декор.
Replies (2)
0
3
1 week ago
0
Так же если вы особый извращенец, то можно сделать свой вид клифа (по типу искусственных/природных) - перелопатить все эти модели и создать на их основе новые вариации. Например покрытые льдом клифы - копипастнуть меш клифа и наложить его вторым слоем чуть выше первого, юзануть для него текстуру льда/кристалла и сделав полупрозрачным. Вообщем, на что фантазии хватит, но вот оно наверное нахрен не уперлось никому когда есть декор.
Способ указанный в статье изменит только природный клиф или искусственный тоже может быть изменен?
1
14
1 week ago
1
Ytr, В статье я только использовал существующие клифы в карте а не изменял их, но если ты захочешь изменить/добавить клифы в .slk то это легко делается. Не важно искусственный или природный - это регулируется полями cliffModelDir и rampModelDir в TerrainArt\CliffTypes.slk - там где есть приставка "City" это искусственные, без этой приставки природные.
4
35
1 week ago
4
клиффы всегда заноза в жопе, ландшафтники обычно просто высотами плоскости решают их корявость, спасибо за подробное объяснение.
To leave a comment please sign in to the site.