Тема для фанов Warcraft 3 времен, когда в ходу были MPQ архивы. Итак... тема не нова, но по моему мнению, раскрыта недостаточно всеобъемлюще. Максимум, что удавалось найти, это комментарии о том, что подгрузка стандартных MPQ архивов осуществляется следующим образом:
Примерно для roc: war3.mpq > war3patch.mpq > map.w3m (карта по сути тоже mpq архив)
Примерно для tft: war3.mpq > war3x.mpq > war3xlocal.mpq > war3patch.mpq > campaign.w3n (опционально) > w3x/w3m.
Понятно, что помимо mpq архивов, warcraft 3 v1.26a подгружает еще и dll библиотеки на разных этапах и если в них встраивать MPQ, то вроде-как эти пользовательские архивы тоже будут подгружаться. Прибавим к этому пользовательские MPQ архивы в War3.exe и MIX файлах.
Но существует ли подгрузка MPQ архивов определенной картой по некоторому условию? Хотелось бы услышать ответ от знатоков. В частности, внутри war3.mpq и war3x.mpq существуют другие MPQ архивы под литерами A, B, C и т.д.... На каком этапе подгружаются тогда они?
...и можно ли составлять некоторые структуры из наборов пользовательских MPQ архивов, чтобы подгружая их в разных последовательнастях и выборках, карты выглядели иначе?
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
18
2 года назад
Отредактирован EugeAl
0
Архивы под литерами A, B, C - это ландшафтные Mpq, весьма полезная штука. Их буквы соответствуют имени ланда, А Ашенваль, С Ситискейп (Город), Л Лордерон итд. Их можно запихнуть в war3patch.mpq, и тогда у них будет приоритет выше, чем у остальных war3 mpq. Их можно использовать для создания ландшафтных заменяемых моделей/текстур/иконок/звуков и музыки, скажем, для создания зимних текстур у зданий на зимнем ландшафте. Или чтобы у юнита в Лордероне была одна модель, а в Ашенвале другая. Как это работает, можно посмотреть в архивах на примере текстур клиффов и уберсплатов. Но! Чтобы работало, НЕ нужно запихивать модель/текстуру итд в основной war3patch.mpq, ибо приоритет у него выше.
Данная методика для одиночных карт не актуальна, она сгодится для глобальных модов и собственных стандартных кампаний
0
3
2 года назад
Отредактирован borissuworov
0
Архивы под литерами A, B, C - это ландшафтные Mpq, весьма полезная штука. Их буквы соответствуют имени ланда, А Ашенваль, С Ситискейп (Город), Л Лордерон итд. Их можно запихнуть в war3patch.mpq, и тогда у них будет приоритет выше, чем у остальных war3 mpq. Их можно использовать для создания ландшафтных заменяемых моделей/текстур/иконок/звуков и музыки, скажем, для создания зимних текстур у зданий на зимнем ландшафте. Или чтобы у юнита в Лордероне была одна модель, а в Ашенвале другая. Как это работает, можно посмотреть в архивах на примере текстур клиффов и уберсплатов. Но! Чтобы работало, НЕ нужно запихивать модель/текстуру итд в основной war3patch.mpq, ибо приоритет у него выше.
Данная методика для одиночных карт не актуальна, она сгодится для глобальных модов и собственных стандартных кампаний
Понятненько... А почему данная методика не актуальна для конкретных карт? Правильно-ли я понял, что в случае с A.mpq, B.mpq и C.mpq - это как раз таки и есть подгрузка архива по условию (в данном случае по условию о том, какой ландшафт мы используем). Взять хотя-бы глобальный мод Dota-HQ, который концептуально создан модифицировать лишь одну Доту, которая как раз таки в Ашенвале и развернута. То есть автору Dota-HQ стоило впринципи модифицировать только A.mpq и все его рескины действовали бы исключительно на ландшафте Ашенваля.
Также вроде в war3.mpq есть три архива с приписками medium, low и high, которые используются на выбор согласно уровню детализации выставленному в опциях. Стало быть теоретически это тоже является опциональным подключением.
На этом сайте я нашел очень любопытный MIX файл под названием MPQLoader. Необычность его в том, что он по сути является некоторой ссылкой на MPQ архив, который всегда следует держать рядом с MPQ Loader-ом для корректности его работы. Что если, взять MIX файл этого MPQLoader-а и положить в карту, а MPQ архив, по логике идущий в тандеме с этим файлом, кинуть в корень игры Warcraft 3 TFT v1.26a (разумеется включив опцию подгрузки локальных данных). Не будет-ли тогда наш MPQ архив (или целый перечень MPQ архивов), цепляться исключительно к конкретной карте, в которую мы положили MPQLoader? Извините, лично проверить данную теорию в ближайшее время не могу.
0
18
2 года назад
0
borissuworov, Для конкретных карт не актуально, потому что все нужные файлы можно залить в саму карту. Что касается архивов по детализации - да, это тоже можно заюзать теоретически, например наделать моделек высокополигональных, средне- и низко, и залить туда)
Что касается микс архивов, я ими не пользуюсь, потому что в случае глобального мода можно просто использовать модифицированный war3patch.mpq, ну а саму карту технически можно растягивать до любого размера (в мегабайтах, в смысле).
0
17
2 года назад
0
0
3
2 года назад
Отредактирован borissuworov
0
borissuworov, Для конкретных карт не актуально, потому что все нужные файлы можно залить в саму карту. Что касается архивов по детализации - да, это тоже можно заюзать теоретически, например наделать моделек высокополигональных, средне- и низко, и залить туда)
Что касается микс архивов, я ими не пользуюсь, потому что в случае глобального мода можно просто использовать модифицированный war3patch.mpq, ну а саму карту технически можно растягивать до любого размера (в мегабайтах, в смысле).
Стараюсь мыслить чуть шире. К примеру я создал первый mpq архив в котором содержится информация об аккуратной модификации параметров расы альянса через slk таблицы, включая некоторые рескины. Во втором mpq архиве я создал модификацию для расы Нежити через систему как в w3n файле (насколько мне известно, содержимое менеджера объектов в w3n файле хранится иначе чем в карте), ну а в третьем файле модифицировал расу орков по всем стандартам менеджера объектов обычной карты. И вот в теории эти три mpq архива должны дополнять друг друга при одновременном подключении. Задача лишь состоит в том чтобы как-то комбинировать их подключения в нужных картах. И вот даже если я сделаю кастомные тайлсэты для избранного десятка карт, мне не нужно чтобы они хранилились непосредственно в карте и не нужно чтобы разом применялись ко всем картам, как предлагает N1ghtSiren. Если мы найдем ответ на вопрос избирательного подключения mpq архивов, то сможем генерировать различные модификации всем знакомых карт, подгружая не только скины, но и мелкие модификации триггеров и параметров объектов ПАКЕТНО для разнообразия геимплэя и без открытия целевой карты в World Editor-e.
0
18
2 года назад
0
borissuworov, В таком случае можно сделать проще - создать несколько вариантов слк таблиц для юнитов, предметов, абилок итд, под разные ландшафты, например, и распихать их по разным ландшафтным mpq, и тогда на разных ландах параметры будут разные. А мелочи, уникальные для карты, делать уже в редакторе объектов. По крайней мере в теории. Не проверял ещё.
Ну и главный момент- как делать динамические модификации без замены файлов? Настроек ведь таких нет. Ну кроме кода, конечно же
0
3
2 года назад
Отредактирован borissuworov
0
borissuworov, В таком случае можно сделать проще - создать несколько вариантов слк таблиц для юнитов, предметов, абилок итд, под разные ландшафты, например, и распихать их по разным ландшафтным mpq, и тогда на разных ландах параметры будут разные. А мелочи, уникальные для карты, делать уже в редакторе объектов. По крайней мере в теории. Не проверял ещё.
Ну и главный момент- как делать динамические модификации без замены файлов? Настроек ведь таких нет. Ну кроме кода, конечно же
Да... Это расширяет возможности, но недостаточно. Хочется быть не ограниченным ID, ландшафта. И, кстати, помимо ID ландшафта, в самой карте существует кучи других ориентиров на которые в теории можно опериться (как то, версия редактора, кол-во игроков, да и название карты не стоит вычеркивать из перечня).
Коды/строки тоже поддаются импорту через файлы в MPQ архиве. Всё это осуществимо. Вспомнить хотя-бы как китайцы карты переводят (они депротектят карты, чтобы добраться до исходников в менеджере объектов, создают кампанию и ложат депротекченную карту туда, затем в менеджере объектов кампании переводят интересующие их параметры, сохраняют кампанию и затем из сохраненной кампании переносят в запротекченную карту уже свои модификации перевода в файле CampaignStrings), при условии что карта открывается MPQ редактором, пусть даже с unknown файлами (в случае побитого listfile).
В идеале круто было бы создать пустой w3x файл (типа контейнер), в который можно было бы внедрить последовательность подгрузки MPQ архивов так, чтобы на выходе получилась уникальная карта.
Предположим у меня есть пять заготовленных MPQ архивов:
Первый MPQ архив содержит в себе уникальный тайлсет.
Второй MPQ содержит в себе модификацию всех стандартных абилок до статуса уникальных (без триггеров).
Третий MPQ, альтернатив которому можно наделать сотни, содержит исключительно ландшафт определенной melee карты со всеми расставленными на нём объектами (стартовыми точками, декором и нейтралами).
Четвертый, содержит файл игровых констант для расширения лимитов и триггеры.
Пятый, допустим, будет содержать рескины определенных юнитов и т.д.
Я классифицирую эти архивы по совместимости и останется просто подгружать их в определенной последовательности чтобы играть в определенную карту с уникальным набором модификаций. Такова конечная цель, которая ведет к колоссальной оптимизации ресурсов в сборках с огромным количеством карт.
0
18
2 года назад
0
borissuworov, да, коды и строки тоже можно редачить, стандартные Кампании например.
Но вот чтобы так, как вы хотите, чтобы подгружать архивы - тут явно надо кодинг посерьёзнее, желательно с доступом к коду игры, потому что именно там прописан порядок подгрузки. Ни к сожалению здесь я ничем не могу помочь. Здесь вам явно надо обратиться к таким людям, как авторы MMengine, Render Edge и так далее.
0
3
2 года назад
0
borissuworov, да, коды и строки тоже можно редачить, стандартные Кампании например.
Но вот чтобы так, как вы хотите, чтобы подгружать архивы - тут явно надо кодинг посерьёзнее, желательно с доступом к коду игры, потому что именно там прописан порядок подгрузки. Ни к сожалению здесь я ничем не могу помочь. Здесь вам явно надо обратиться к таким людям, как авторы MMengine, Render Edge и так далее.
MM Engine не нравится, ибо забагован и безпричинно вылетает в кастомных картах. Это как-то связано с утечками памяти там-сям. Автор данного проекта под ником Ev3nt имеет на своих плечах еще несколько поделок, одна из которых называется Warcraft 3 Portable (где-то на xgm выложен). В ходе реализации портэйбла, Eve3nt разложил на исходный код файл war3.exe. И теперь при должном умении, можно модифицировать war3.exe как угодно. Однако тоже не без багов.
А вот с автором Render Edge пытаюсь связаться в настоящее время.
0
18
2 года назад
0
borissuworov, Хм, war3exe это уже интересно. Это дизассемблированный файл? Кстати, а рабочий ли он? Это важно.
Если сможете связаться с автором Render edge, спросите у него, пожалуйста, как вшить файлы рендер эдже в варик, и можно ли. И скажите мне. Буду весьма признателен. Просто я ему писал, он не ответил.
0
3
2 года назад
0
borissuworov, Хм, war3exe это уже интересно. Это дизассемблированный файл? Кстати, а рабочий ли он? Это важно.
Если сможете связаться с автором Render edge, спросите у него, пожалуйста, как вшить файлы рендер эдже в варик, и можно ли. И скажите мне. Буду весьма признателен. Просто я ему писал, он не ответил.
Вот... В этой теме засветился несколько модифицированный код исходника: xgm.guru/p/wc3/warcraft-iii-portable
Не разбираюсь в кодах и не могу сказать, получен-ли был этот код в ходе реверс-инженеринга и т.п...
Ev3nt уже начал ковырять исходники, и пытался отвязать warcraft 3 от реестра. Но я тестил, и на текущем этапе дело до конца не доведено. В частности, ветка "Video" исправно сохранятся в файл, но при запуске игры, отказывается считываться... Эх! Еслиб кто закончил начатое!
0
18
2 года назад
0
borissuworov, О да, крутая тема. Интересно, можно ли туда уникальные абилки вписать?
Ну я закончить не смогу, ибо в С++ не могу, увы.
0
8
2 года назад
Отредактирован goodlyhero
0
Доступ к ресурсам в архивах осуществляется в зависимости от приоритета при загрузке этих архивов. Более того, такой архив можно грузить из карты или любого другого архива.
Есть достаточно много способов грузить свой архив, например мемхаком или миксом.
Можно грузить и несколько архивов с разными приоритетами, если на то есть желание.
0
3
2 года назад
Отредактирован borissuworov
0
Доступ к ресурсам в архивах осуществляется в зависимости от приоритета при загрузке этих архивов. Более того, такой архив можно грузить из карты или любого другого архива.
Есть достаточно много способов грузить свой архив, например мемхаком или миксом.
Можно грузить и несколько архивов с разными приоритетами, если на то есть желание.
Про приоритеты вкурсе. Предположим у нас есть намертво запротекченная карта. Я хочу сделать так, чтобы исключительно при ее загрузке подгружались некоторые мелкие MPQ архивы лежащие по четко обозначеным путям в нужной последовательности. Как это реализовать?

borissuworov, О да, крутая тема. Интересно, можно ли туда уникальные абилки вписать?
Ну я закончить не смогу, ибо в С++ не могу, увы.
Абилки обычно вписываются в slk таблицы и в файл blizzard.j, если потом их в редакторе хочешь пощупать. Для чего-то экстраординарного следует в game.dll лезть.
0
18
2 года назад
0
borissuworov, Не совсем так. В листе ability data slk, прописаны общие параметры, поля данных прописаны в ability meta data slk, а вот сами коды работы абилок спрятаны в коде игры и запускаются исходя из равкода абилок, в столбце aliasCode таблицы. То есть, нельзя просто так сделать абилку с новыми данными и скриптом, остаётся только комбинировать из стандартных (или новых на основе стандартных).
А что находится в game.dll?
0
20
2 года назад
0
А что находится в game.dll?
Вся логика игры и World Editor, в Storm.dll находится вся логика работы с файлами, пакетами и прочим (на которую ссылается game.dll). В Рефорджеде эти дллки либо вшили в .exe либо перенесли весь код .dll в .exe.
2
18
2 года назад
2
Unryze, Понял, спасибо!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.