Тема для фанов 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 года назад
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.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.