Исследования игрового формата карт - Printable Version +- Wake of Gods Forum | Форум Во Имя Богов (http://wforum.heroes35.net) +-- Forum: Герои Меча и Магии 3.5 WoG/ERA (/forumdisplay.php?fid=99) +--- Forum: Карты (/forumdisplay.php?fid=183) +--- Thread: Исследования игрового формата карт (/showthread.php?tid=1023) |
Исследования игрового формата карт - MaGoth - 07.07.2011 23:13 Berserker, Не могбы ты пояснить по какому принципу сортируются карты в игре, как их лучше и проще каталогизировать? И еще один момент хотел бы у вас спросить, никто не планировал присобачить костыль или хук для Хиросов на предмет расшерения каталога maps, до вида как это реализовано в Хиросах 4? Т.е. Чтобы можно было нормально систематизировать карты по их принадлежности к частям/дополнениям, примерно до такого вида: ...\Герои Меча и Магии III Полное собрание\Maps \maps: ..\(RoE) - Restoration of Erathia ..\(AB) - Armageddon's Blade ..\(SoD) - Shadow of Death ..\(WoG) - in the Wake of Gods ..\(ТЕ) - Tournament Edition Т.е. все карты и компании этих частей и типов изданий распаковать по соответствующим каталогам ?! При большом объеме карт это хотя бы частично решило бы проблему вылетов с числом карт в каталоге больше предназначенного. Имхо. Исследования игрового формата карт - hippocamus - 08.07.2011 00:08 Так ведь есть кнопки для фильтрации!.. RE: ERA II - MaGoth - 08.07.2011 00:17 hippocamus, Фильтрации где, в игре?! А на кой эта убогая и кастрированная система нужна? Я немного про другое говорил, про каталоги ориентированные конкретно на определенный аддон, с предназначенным ему содержимым. Тогда часть проблемы с количественным содержимым в одном каталоге файлов разрешилась бы, хоть от части. Эта наверное проще реализовать, чем лохматить двиг на предмет поддержи например 30 000 карт в одном каталоге?! RE: ERA II - hippocamus - 08.07.2011 00:22 Тогда лучше в ini-файле указывать перечень путей с допустимыми для аддона картами. А для таких модов как Атлантис, 300 спартанцев, A Tribute to Warcraft - будет по 1 карте. RE: ERA II - MaGoth - 08.07.2011 00:30 Да и еще, помощь треба по этому вопросу: Нужны адреса где хранятся нужные значения, например, по адресу 0x000D в RescuingAsh(AB).h3m и [Ligue-AB] 22 - Envol des Behemoths.h3m одинаковое, а в Lucky Fate (AB).h3m другое. Вот что оно значит я без понятия. Может ктонить эти моменты пояснить? Зы, если не в той теме отписал, соррь, укажите на нужную. RE: Исследование героев - Berserker - 08.07.2011 00:48 У меня определённый сжимающийся список для реализации, так что подобные предложения перенаправляю авторам плагинов и иным добровольцам. Моя задача выпустить относительно безбажную платформу, минимальный инструментарий и sdk RE: Исследование героев - MaGoth - 08.07.2011 00:56 Berserker, а с адресами не подсобишь в плане пояснений ? Зы, и все-же, возможность расширенного каталога для мапов, многим пришлась бы по душе. имхо. RE: Исследование героев - etoprostoya - 08.07.2011 00:59 Quote:Нужны адреса где хранятся нужные значения, например, по адресу 0x000D в RescuingAsh(AB).h3m и [Ligue-AB] 22 - Envol des Behemoths.h3m одинаковое, а в Lucky Fate (AB).h3m другое. Вот что оно значит я без понятия.Я вообще не понял, о чём ты спросил. Идентификаторы принадлежности к аддону (RoE, AB, SoD, WoG)? Что-то другое? RE: Исследование героев - MaGoth - 08.07.2011 01:10 etoprostoya, Quote:Идентификаторы принадлежности к аддону (RoE, AB, SoD, WoG)?да, мне нужно понять как двиг игры читает карты по их принадлежности к той или иной версии части игры. Где эти значения хранятся для каждой из частей и т.д. и т.п. RE: Исследование героев - etoprostoya - 08.07.2011 01:17 Это самый первый байт. В Воге он 33h, в СоД - 1Ch. RE: Исследование героев - MaGoth - 08.07.2011 01:24 etoprostoya, Спасиб, а в остальных? AB, RoE? RE: Исследование героев - etoprostoya - 08.07.2011 01:26 15h - RoE, 0Eh - AB, видимо. Сейчас посмотрел. RE: Исследование героев - MaGoth - 08.07.2011 01:28 Спасибо, будем ковырятся в коде далее. RE: Исследование героев - baratorch - 08.07.2011 08:32 у меня давно маячит мысля добавить в список сэйвов папки и возможность по ним переходить (дабл клик и кнопка "вверх"). Можно то же сделать и для списка карт. Но не знаю, найдется у меня на это время когда-нибудь. RE: Исследование героев - etoprostoya - 08.07.2011 10:10 Quote: Длина Описание (код) RE: Исследование героев - MaGoth - 08.07.2011 13:14 baratorch, Quote:у меня давно маячит мысля добавить в список сэйвов папки и возможность по ним переходить (дабл клик и кнопка "вверх"). Можно то же сделать и для списка карт. Но не знаю, найдется у меня на это время когда-нибудьВот какраз об этом я просил в теме, чтобы реализовали, а в купе с сортировщиком карт, + нормально реализованным инсталлером это было бы оч хорошим решением. Нет желания начать действия/разработку в этом направлении? etoprostoya, спасиб еще раз. RE: Исследование героев - FallenAngel - 09.07.2011 14:09 Такая вещь будет незаменима для судей разных турниров. RE: Исследование героев - hippocamus - 11.07.2011 13:18 (08.07.2011 10:10)etoprostoya Wrote: 4 Идентификатор формата 1D 00 00 00 - Heroes Chronicles RE: Исследование героев - AKuHAK - 13.08.2011 22:59 можно такой вопрос - как сделать чтобы карты из Хроник героев открывались в стандартном редакторе? Просто выдаёт вот такую ошибку Вот к примеру карта, буду очень благодарен, если будет указан адрес и правило, по которому надо его менять. RE: Исследование героев - Berserker - 13.08.2011 23:19 Нужен редактор из хроник. Убрать проверку-то труда не составит, но если формат новый, то это грозит порчей карты. RE: Исследование героев - etoprostoya - 13.08.2011 23:37 http://zalil.ru/31549674 - вот исправил карту, открывается редактором карт Дыхания Смерти. Там всего-то нужно было распаковать карту и исправить первый байт с 1Dh на 1Ch. Сразу скажу, изменять и сохранять карту не пробовал. RE: Исследование героев - AKuHAK - 14.08.2011 01:01 (13.08.2011 23:37)etoprostoya Wrote: http://zalil.ru/31549674 - вот исправил карту, открывается редактором карт Дыхания Смерти. Там всего-то нужно было распаковать карту и исправить первый байт с 1Dh на 1Ch.Большое Спасибо!! Ещё вопрос - чем надо распаковывать? RE: Исследование героев - etoprostoya - 14.08.2011 01:04 Это GZIP-архив, распаковывается, соответственно, его распаковщиками. Я распаковывал в тотал коммандере. ВинРар и 7z должны поддерживать этот формат, хотя и могут выдавать ошибки. RE: Исследование героев - AKuHAK - 14.08.2011 01:08 (14.08.2011 01:04)etoprostoya Wrote: Это GZIP-архив, распаковывается, соответственно, его распаковщиками. Я распаковывал в тотал коммандере. ВинРар и 7z должны поддерживать этот формат, хотя и могут выдавать ошибки.ооо гигантское спасибо!!! вопросов пока больше не имею!!! RE: Исследование героев - AKuHAK - 14.08.2011 02:19 Только вопрос совсем уж дурацкий - как упаковать файлы обратно? карты упаковываются нормально (если выбрать режим сжатия нормальный), а вот кампании уже нет. То есть мне пока не удалось запаковать кампанию обратно, чтобы она стала читаемой. Речь сейчас не о хрониках, а о стандартных кампаниях для третьих героев. RE: Исследование героев - Flashback - 14.08.2011 14:07 сейвы тоже сжаты в гзип и после распаковки их можно обратно не упаковывать, мб, и карты тоже можно не жать. RE: Исследование героев - etoprostoya - 14.08.2011 14:22 Можно открыть карту в редакторе SoD и пересохранить: она автоматически упакуется. RE: Исследование героев - AKuHAK - 14.08.2011 16:23 О, проделал исследование и выяснил, что карты и кампании сжаты в гзип без сохранения заголовков Code: gzip -n при распаковке и сжатии обратно файлы идентичны. Кстати, если запаковать без использования флага -n, то карта будет открываться в игре, только если мы не будем переименовывать файл. Кампании сперва следует разбить на части, можно просто открыв в гекс редакторе и найдя gzip заголовки, я лично использовал H3RExtrator.exe, так как это намного быстрее. Потом можно при желании отредактировать карты, каждую запаковать при помощи команды выше и склеить их (например при помощи copy /b ...+...+... ...). При распаковке кампаний видно, что они построены весьма просто - сперва идут свойства всей миссии в целом, а затем уже тупо по очереди идут карты. К сожалению частенько после таких махинаций редактор кампаний отказывается открывать их, но ничего страшного - в игре никаких багов не наблюдается и кампании остаются вполне играбельными. Сейчас борюсь со свойствами всей миссии в целом... upd Распакованные кампании не признаются игрой. Карты признаются. RE: Исследование героев - hippocamus - 18.08.2011 21:46 А что - Хроники могут открывать карты? Я знаю, что у них первый байт другой, 1D. Вообще отличие этих карт от СОДовских вроде только в уменьшенном количестве героев (127?). И в наличии героя с именем Тарнум. В общем я точно не помню, но вроде в Хрониках нет никаких особых объектов, ни особых условий побед-поражений-переходов в кампаниях. Или есть? Просто самого интересует, я ведь редактор делаю. RE: Исследование героев - etoprostoya - 18.08.2011 22:02 Новых каких-то объектов там нет, я даже лоды Хроник и Дыхания Смерти сравнивал: все объекты, что есть в Хрониках, есть и в Дыхании Смерти. А там с Тарнумом? Он кого заменяет? RE: Исследование героев - AKuHAK - 19.08.2011 01:22 В общем проделал ещё немного исследований и выяснил, что кампании полностью совместимы, если проделать некоторые изменения:
С Тарнумом вообще дело тёмное. Если открыть первую карту в редакторе и тут же сохранить её, то обнаружится, что 12 байтов связанных с Тарнумом и Рабаком изменились по непонятным причинам. Карта по прежнему не загрузится, поскольку игре нужны не эти непонятные 10 байтов, а "легальный" портрет Тарнума. Портрет вообще хранится в другом месте и занимает ровно два байта, если отредактировать его вручную и не трогать эти непонятные 10 байтов, то карта превосходно загружается. К сожалению надо тестировать не произойдёт ли чего плохого во время геймплея, а это долго и нудно. Так что по идее можно сократить количество изменённых байтов ещё на 12 штук. Итого набирается 12 байтов обязательных и ещё где-то 16 байт на размеры карт. Вот кому интересно, может глянуть http://zalil.ru/31574865, я пока не нашёл подвоха. На выходных выложу хроники. Кстати интересно нельзя ли расширить список портретов вместо того чтобы тупо заменять уже существующие? upd - в хрониках же наоборот больше портретов или я что-то путаю? RE: Исследование героев - hippocamus - 19.08.2011 02:01 Портретов больше, героев меньше? Тарнум заменяет вроде первого из героев кампании СОД. Хотя я не уверен. RE: Исследование героев - baratorch - 19.08.2011 08:38 AKuHAK, спасибо большое, очень полезная информация. Давно хочу сделать пак для ХД, полноценно добавляющий хроники в СоД. RE: Исследование героев - AKuHAK - 19.08.2011 21:46 http://zalil.ru/31578703 Вот хроники героев практически идентичные, с самыми минимальными изменениями. Номера портретов уменьшены на 0Е. Тарнум в каждой кампании заменяет нового героя (это в хрониках так, это не моё творчество) )) По поводу редактора карт он меняет все карты хроник по одинаковому, так что я менял только портреты. Заголовок кампании распакованный, а карты упакованные. RE: Исследование героев - AKuHAK - 10.09.2011 22:20 Вопрос - никто не знает, где хранятся координаты кусочков карты показываемой перед кампанией? Вот например здесь К примеру я узнал, что координаты левого верхнего угла "верхнего" острова 170 пикселей от верхнего края и 55 пикселей от левого, в каком виде это хранится в игре? Мне бы хотя бы гекс отображение. RE: Исследование героев - solitaire345 - 14.09.2011 22:14 (10.09.2011 22:20)AKuHAK Wrote: Вопрос - никто не знает, где хранятся координаты кусочков карты показываемой перед кампанией? Вот например здесь The pointers for campaign areas are at 0063BC50. Each entry points to tables for each campaign map. Each table holds n structures, where n is number of scenarios in particular campaign map. The structures are like this: Code: 00000000 X dd ? X and Y are coordinates, other entries are addresses of image file names. RE: Исследование героев - Sav - 25.09.2011 22:57 Кто-нибудь знает, что делает воговский хук на адрес 0x04C4141 (вернее, с этого места начинается правка, а сам хук чуть дальше)? Неужели только исключает из списка карт карты с идентефикатором, большим 0x33? RE: Исследование героев - Berserker - 26.09.2011 00:36 // проверка на защищенную карту {0x4C4143,0,DP(LoadProtected)} Содержимое функции - чистый асм. Насколько я помню, кто-то делал прогу для типо-защиты карт от просмотра в редакторе и некорретный тип карты должен правиться на лету для загрузки. RE: Исследование героев - Sav - 26.09.2011 02:18 Ясно, спасибо. RE: Исследование героев - hippocamus - 02.10.2011 15:14 Ага, там случайное количество мусора вначале вставлялось. Так без хука эти карты не открываются? Тогда всё ясно, а то я в шоке был, когда эти карты увидел, думаю - это ж надо что герои такой эвристикой обладают! И наверное это не просто мусор, а ассемблерный код? RE: Исследование героев - Berserker - 02.10.2011 15:23 Я бы предположил мусор с где-то указанной длиной. RE: ERA II - hippocamus - 28.11.2013 21:10 С тех пор, как ХотА сменил идентификаторы своих карт (30 и 32 теперь десятичные, 30 идентично содовскому) - Эра крэшится при входе в меню выбора карт. Раньше они отлично дружили в одной папке, и ничто им не мешает и сейчас мирно сосуществовать, кроме этой реакции. Нельзя ли это исправить? ХотА, например, игнорирует карты ВОГ и МОП, как и любые другие с неизвестным идентификатором. Боюсь, что та же проблема будет с сохранениями. RE: ERA II - Berserker - 28.11.2013 21:45 Вылетает никто иной, как СоД. В крайнем случае ВоГ. Прости, Хиппо, но пусть энтузиасты ищут место, где идёт сравнение версий и нехорошие действия. Тут и своих проблем хватает. Если программисты Хоты научили игру не вылетать, пусть они и делятся соответствующими заплатками, чтобы хотовские карты адекватно воспринималиь другими версиями игры. RE: ERA II - hippocamus - 28.11.2013 21:56 Ясно, спрошу у Сава. RE: ERA II - Sav - 28.11.2013 22:08 Сод не вылетает. У Вога изменена проверка версии, которая видимо пропускает хотовскую 32 как допустимую (а там формат изменён и естественно карта корректно не считывается). Сам искать что-то в воговском коде не буду. RE: ERA II - Berserker - 28.11.2013 23:14 {0x4C4143,0,DP(LoadProtected)}, {0x5849C7,0x0,DP(CheckFileTypeN)}, Записал на следующий выпуск. 32 используется вогом (1C). #define SODMAPTYPE 0x1C RE: ERA II - Sav - 28.11.2013 23:24 32 это 0x20 вообще-то) 0x1C - это содовский формат и есть. RE: ERA II - Berserker - 28.11.2013 23:55 Да, ошибся. Нужно чтобы Все, кроме воговских защищённых карт и 32 игнорировались, так? RE: ERA II - Sav - 29.11.2013 00:08 По идее нужно, чтобы все форматы, которые не равны 14 (рое), 21 (аб), 28 (сод) и воговского (или воговских если их несколько) - не включались в список карт, то есть обрабатывались так же, как форматы > 28 в Соде. Отдельной проверки для Хоты не должно быть нужно. Я не знаю, как работает этот алгоритм защиты карт и что вообще правил Вог. Если он просто бинарными патчами исправил все проверки на > 28 на воговский формат - то я могу дать хотовский код увеличения количества поддерживаемых форматов, которым эти правки можно заменить. В ином случае надо копать что-то в самом Воге и либо править там, либо убедиться, что все проверки формата происходят в коде оригинала. RE: ERA II - Berserker - 29.11.2013 00:17 Я сделаю, как ты написал выше (14, 21, 28 + воговские). RE: ERA II - hippocamus - 29.11.2013 19:59 29 и 30 можно включить в принципе. 29 это Хроники, 30 это старый хота, который по формату ничем не отличается от сод, а значит и грузиться будет, если нужные дефы есть в лодах (как и в случае с вог, впрочем). RE: ERA II - GrayFace - 29.11.2013 21:42 А Хроники разве совместимы? Вот эта проверка: {0x4C415E,DS0(0x73),1}, // переходы (>=0x1C, а не =0x1C) RE: ERA II - Berserker - 30.11.2013 02:41 Компании хроник вроде играются, хотя не в курсе, какая там версия карт. RE: ERA II - AKuHAK - 30.11.2013 04:05 Кампании хроник может и играются - но в них используются герои с номерами за пределами ранга (137-143). Тип карт - 29 (как уже написали), тип кампании - 07 (06 - СОД, 05 - АБ,...), тип подкомпании - 00. Помнится у меня просто появлялся вместо тарнума пустой герой без картинки и с нулевыми статами. Что меня удивило игра вылетать и не думала )) RE: ERA II - fireman - 27.01.2014 16:10 (26.01.2014 01:03)Berserker Wrote: Заплатка, умоляющая Хотовские карты пощадить старика ВоГа. Роешные карты могут пошаливать при этом, не проверял. Файл пихать в папка_с_игрой\Mods\WoG\EraPlugins\AfterWoG . Роешные загружаются, где именно краш может быть? RE: ERA II - Bes - 27.01.2014 17:29 (26.01.2014 01:03)Berserker Wrote: Заплатка, умоляющая Хотовские карты пощадить старика ВоГа..Патч, устраняющий вылет ERA при наличии в игровой папке "Maps" карт HotA 1.3.x Download Тип: Мод для ERA Размер: 97 КБ RE: ERA II - hippocamus - 02.02.2014 00:07 Респект за игнор ХотА карт! RE: ERA II - Berserker - 02.02.2014 01:34 Да уж, неудачно для простого патча вышла версия карт у Хоты. 32 против 33 у вога и меньших у сода ) RE: ERA II - hippocamus - 04.02.2014 23:45 У Вога 51 ведь! А у хоты был запланирован идентификатор 56 (чтоб после Вога, и потому что в оригинале все кратны 7). Но Сав взял 29, который потом срочно переправили на 30, ибо 29 это Хроники. 31 был техническим, 32 закрепился. 30 используется и сейчас, это формат СОД, но с хотовскими объектами. По идее его можно не игнорировать, интерпретировать как ВОГ. RE: ERA II - Berserker - 05.02.2014 01:13 В любом случае Хотовский больше содовского, но меньше воговского. Такую сложную проверку двоичным патчем не сделать. RE: Исследование героев - Berserker - 14.07.2019 23:59 Формат файлов кампаний: Code: Heroes 3 Campaign (h3c) format after unpacking (gz). RE: Вопросы по моддингу - feanor - 27.04.2021 12:39 Слушайте, а кто-нибудь занимался добавлением/редактированием карт кампаний? Ну, на всякий случай, чтобы лишнюю работу не делать? (И да, таблицу я нашел, только к таблице не всё сводится) RE: Вопросы по моддингу - daemon_n - 27.04.2021 14:19 feanor, я занимался, если ты говоришь о простом изменении. Просто извлекаем карты через редактор кампаний, затем редачим в редакторе карт, затем обратно упаковываем. Если не оно, то иду дальше мимо RE: Вопросы по моддингу - feanor - 27.04.2021 16:17 Ээ, нет. Имеются в виду те карты, которые сбоку. Раскладки, шаблоны, черт его знает, как их назвать. Интересует изменение количества карт в шаблоне и добавление новых, в первую очередь. RE: Вопросы по моддингу - XEPOMAHT - 27.04.2021 17:29 (27.04.2021 16:17)feanor Wrote: Интересует изменение количества карт в шаблоне и добавление новых, в первую очередь. Номер шаблона меняешь и дозапаковываешь новые карты. Максимум - 12 карт на кампанию, если скляроз не изменяет. RE: Вопросы по моддингу - feanor - 28.04.2021 11:36 Ээ, а смысл, если можно просто сделать сразу в нужном? Дело в том, что в стоке шаблон с 11 картами один, кажца, а нужно два минимум. Quote:Максимум - 12 карт на кампанию, если скляроз не изменяет.11, кажется, где-то в SoD. А технически, наверное, 16, там битовое поле двухбайтовое. Ладно, понял. Просто я расширяю таблицу, копирую данные, меняю индекс в файле кампании, а оно вылетает, причем где-то в совершенно иррелевантном месте. И даже если делаю то же c существующим слотом (копирую данные от другого шаблона с другим количеством карт) - та ж фигня. То ли там еще какая-то таблица/свитч, то ли что-то пошло не так. RE: Вопросы по моддингу - XEPOMAHT - 28.04.2021 14:40 (28.04.2021 11:36)feanor Wrote: Просто я расширяю таблицу, копирую данные, меняю индекс в файле кампании, а оно вылетает, причем где-то в совершенно иррелевантном месте. И даже если делаю то же c существующим слотом (копирую данные от другого шаблона с другим количеством карт) - та ж фигня. Проще добавить собственный диалог кампаний на DL например (в MoP хоть 100 новых диалогов в главное меню суй - игра с ними работает без проблем с помощью WERD), нежели пытаться пропатчить существующий (там выделяется стековая память на данные диалога + традиционные захардкоренные геройские _dlg_-структуры с адресами на загрузку/выгрузку/уничтожение и т.д., лично я такие штуки стараюсь не трогать). |