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

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...
34
Годно. Часто ограничения не дают творить во всю. Мб где-нибудь и заюзаю.
33
Варкрафт 3 на главной🙃
21
Прикольно. Особенно спасибо за объяснение текстур типа cOc2 итд. А ты пробовал добавить новые клифы в slk? Что получилось? И как быть с перезаписью файла w3e при сохранении карты? И если этот файл править, по дефолту новые клифы в карте появятся в WE после загрузки карты в WE?
Replies (7)
16
EugeAl, Добавлять новые не пробовал, т.к. другую цель преследовал, но по идее можно и тайлы и клифы так добавлять. Когда карта пересохраняется все норм, клифы на своих местах остаются как и должны, просто нет способа "из коробки" нормально новые клифы добавить поэтому приходится редачить w3e. Последние вопрос не понял, что имеешь ввиду?
21
OVOgenez, Понял, спасибо. Последний вопрос уже не актуален, раз пересохраняется нормально, значит и загрузится в WE нормально.
Просто хочу сделать "из коробки" )
16
EugeAl, Имеешь ввиду плагин свой написать для этого?
21
OVOgenez, Нет, никакого плагина не надо, к счастью) В общем, эксперимент показал, что можно добавить новые клиффы "из коробки"! Для этого нужно по аналогии с остальными клиффами создать клифф, дать ему новый равкод (допустиv CLro), cliffClass c3, а текстуру можно так же по разным ландам в архивы A-Z mpq распихать, и обозвать ее например Cliff2, либо свою какую нибудь. И все это дело засунуть в Патч Мпку или микс. Без правки w3e(!). И вот результат! )
П.С. На остальные изменения в игре не обращай внимания, они на клифы не влияют. По итогу можно вообще разгуляться и наделать хренову гору разных клифов... Редактор карт обычный, и кстати говоря, если в нем заменить ланд карты, и в другом ланде нового клифа нет, новый клиф заменится на второй, что стоит в другом ланде. Но лучше все же наделать 3+ клифф для Всех ландов, меньше возни будет потом.
16
EugeAl, Ну это как я понял ты расширяешь стандартный набор клифов для конкретных ландов, поэтому само подсасывает. Если нужно взять клиф из другого ланда то придется уже редачить w3e.
21
OVOgenez, ну в таком случае да, придётся.
15
Годная статья, спасибо, может пригодится!
16
Так же если вы особый извращенец, то можно сделать свой вид клифа (по типу искусственных/природных) - перелопатить все эти модели и создать на их основе новые вариации. Например покрытые льдом клифы - копипастнуть меш клифа и наложить его вторым слоем чуть выше первого, юзануть для него текстуру льда/кристалла и сделав полупрозрачным. Вообщем, на что фантазии хватит, но вот оно наверное нахрен не уперлось никому когда есть декор.
Replies (2)
3
Так же если вы особый извращенец, то можно сделать свой вид клифа (по типу искусственных/природных) - перелопатить все эти модели и создать на их основе новые вариации. Например покрытые льдом клифы - копипастнуть меш клифа и наложить его вторым слоем чуть выше первого, юзануть для него текстуру льда/кристалла и сделав полупрозрачным. Вообщем, на что фантазии хватит, но вот оно наверное нахрен не уперлось никому когда есть декор.
Способ указанный в статье изменит только природный клиф или искусственный тоже может быть изменен?
16
Ytr, В статье я только использовал существующие клифы в карте а не изменял их, но если ты захочешь изменить/добавить клифы в .slk то это легко делается. Не важно искусственный или природный - это регулируется полями cliffModelDir и rampModelDir в TerrainArt\CliffTypes.slk - там где есть приставка "City" это искусственные, без этой приставки природные.
35
клиффы всегда заноза в жопе, ландшафтники обычно просто высотами плоскости решают их корявость, спасибо за подробное объяснение.
21
А вот эта фишка из ROC, где сделано Y_Cliff, Z_Cliff и прочие А_имятекстуры, работает в 1.26? Или убрали её ради A-Z mpq архивов?
Replies (6)
16
EugeAl, честно говоря не понял вопроса
21
Кроме как во вложенных .mpq архивах (A.mpq, B.mpq, C.mpq) текстуры клифов из дополнения ROC хранятся в директории war3.mpq по пути ReplaceableTextures\Cliff\
И картинка внизу.
В 1.26 так же можно сделать? Или надо только через вложенные .mpq архивы?
И работает ли подобное в 1.26 с моделями, например? Чтобы у модели прописать путь к текстуре Gggg.blp, а в mpq засунуть A_Gggg.blp, L_Gggg.blp итд, и чтобы оно заработало на разных ландшафтах
Чтобы разные шкурки у зданий делать, к примеру
16
EugeAl, так а что сделать то? ты о чем?
Тут же писал что оно подгружает данные их архива в зависимости от базового типа ланда. Имена оно никак не меняет. Можешь сделать в моделе путь к текстуре Nigga.blp, и во вложенные архивы разные текстуры с этим же именем запихнуть.
Подобное уже есть, например текстура Units\Creeps\GrizzlyBear\BrownBear.blp в зависимости от ланда подгружается.
21
OVOgenez, сделать без подгрузки вложенных архивов, но с разными ландами.
С вложенным архивами мне известно.
16
А вот эта фишка из ROC, где сделано Y_Cliff, Z_Cliff и прочие А_имятекстуры, работает в 1.26? Или убрали её ради A-Z mpq архивов?
Тогда я вообще не понял о какой фишке идет речь) по тому пути находятся текстуры, да, но они тупо не используются, они просто есть.
21
OVOgenez, Всё понял, не работает эта фишка, раньше работала, а текстуры остались. Спасибо)
To leave a comment please sign in to the site.