Перейти к содержанию

Моддинг MW4 - изучение внутренностей


Рекомендуемые сообщения

Всем привет!

В общем я таки занялся изучением моддинга MW4. В частности изменением баланса оружия, ибо надо для осенней павильонной игры.

Требуемой цели я уже достиг и баланс оружия теперь можно поправить в полуавтоматическом режиме.

Основная задача - узнавание смысла параметра по его значениям. Все базовые параметры я уже выявил, но есть несколько параметров, сакрального смысла которых я не понял.

Если есть желание покопаться со мной и высказать свои предположения - пишите в личку)

Ссылка на комментарий
  • 3 месяца спустя...

Разбираюсь с настройками MW4 и существенно в этом деле продвинулся. С одной стороны по фану посмотреть механику, с другой - у меня есть необходимость в быстрой и простой корректировке MW4 для игры на базе, чтобы эмулировать диверсии в мехах перед боем.

Результаты раскопок:

1. Известно расположение следующих настроек оружия:

tonnage, cost, slots, id, heat, ammo, damage, distance, recycle, speed, targetingTime, heatDamage

2. Мех:

acceleration, deceleration, turnRate, heatCapacity, battleKillBonus, battleDamageRatio, minSpeed, maxSpeed, reverseSpeed, chassisWeight, gyroWeight, jjWeight, id, cost

3. Торс:

torsoTwist, elevationLimit, twistSpeed

4. Двигатель:

minEngineWeight, speedEnchanceByEngineUpgrade

5. Системы:

reactiveArmorPpT, reflectiveArmorPpT

Так же есть пара интерфейсных изменений:

1. В заголовке главного меню выводится информация о билде.

Clipboard01.png

2. Добавил в списке мехов мехлаба сводку о мехе вида "тоннаж/принадлежность/специфика вооружения".

А вот отсортировать список по тоннажу слишком сложно оказалось(

Специфика вооружения: Laser, Ballistic, Rocket, Universal. Соответственно L, B, R, U, LB, LR, ...

Clipboard02.png

Идеи и впечатления

В процессе раскопок экспериментировали с балансом. Мы сделали слонобойку с дамагом 50, 35 секундной перезарядкой и 4 снарядами на тонну.

Перебалансировали огнемёт - теперь он стреляет со скоростью 5 раз в секунду, но наносит меньший разовый нагрев при попадании.

Усилили IRL - теперь она действительно полезна. Порезали HRL потому что слишком высокий дпм.

К сожалению лечащая пушка с отрицательным дамагом не прокатила. Так же не прокатили пушки с отрицательным нагревом. Только уже имеющиеся в игре охладители охлаждают при использовании.

Разогнал мехов в 1,5 раза - все стали бегать как ужаленные)

Заклинил торс в одном положении и все стали прицелиаться всем мехом.

Потом наоборот увеличил возможный градус поворота в 1,5 раза. Многие мехи стали крутить торсом на 360 градусов.

На удивление очень немного оружия наносят урон нагревом. Фактически только инферно и SRM. На мой взгляд большему количеству оружия можно выставить урон нагревом. И судя по всему урон нагревом в игре нигде не публикуется.

И последнее - очень впечатлился количеством параметров за которые можно начислять очки в бою. В том числе полученный дамаг, количество попаданий в разные части меха противника, общее количество выстрелов и общее количество попаданий. Можно достаточно гибко настроить систему начисления очков даже в стандартном бою.

post-2398-0-14392900-1373037894_thumb.pn

post-2398-0-94489200-1373037901_thumb.pn

post-2398-0-14392900-1373037894_thumb.png

post-2398-0-94489200-1373037901_thumb.png

Ссылка на комментарий
  • 3 месяца спустя...

Небольшое объявление - я реализовал патчер параметров оружия и мехов в MW4 + прикрутил к этому делу клиент-сервер обновлений.

Я понимаю, что MW4 уже заброшен по большей части и что ему на смену пришел как минимум MWLL, но это тот симулятор, который вполне невозбранно можно было расковырять, по сравнению с MWO и MWLL, и замодить.

Возможности Мектека в плане модинга MW4 мне не светят, но для меня главное, что я довел свою работу до конца. Я не хотел добавлять в игру новых мехов или оружия. Я хотел сделать огнемет действительно похожим на огнемет. Я хотел исправить имбовый HRL до уровня, чтобы им можно было пользоваться. Я хотел сместить баланс от штурмовых мехов к средним и тяжам. Я хотел чтобы бои стали длиннее, потому что MW4 заточен под регулярный респавн и мне это удалось. Мне удалось сделать MW4 другим.

Мой друг - автор полноценной смены баланса MW4 хотел ещё большего, но я не смог этого сделать за имеющийся промежуток времени. Он хотел изменить механизмы работы спец систем, в частности длину полета у прыгов, радиус радара и принцип работы реактивной и рефлексивной брони, но где и как это поменять я так и не разобрался.

Несмотря на то что MW4 имеет закрытые исходники почти автоматизировать процесс моддинга ТТХ мехов и вооружения реально.

При этом мы изменили баланс только для вооружения внутренней сферы. Возможно в будущем мы переработаем баланс для кланов и здесь моя цель не каноничное "клановское-лучше", а "клановское-другое".

Я думаю, что в целом я достиг потолка интересующих меня возможностей в изменении MW4. Его можно сделать другим, но нельзя сделать принципиально лучше будучи любителем и не будучи мектеком и майкрософтом.

Поэтому я жду новостей из стана Импа, что его проект дорастет до зрелости и в нем появится больше возможностей для развития, игры и экспериментов. Возможно тогда мой опыт моддинга MW4 пригодится.

Ссылка на комментарий

Расскажи каким образом тебе удалось расковырять файлы и как там чего редактировать? Удалось найти только открывалку для .mw4, но .data файлы так ничем и не читаются.

Немного о MW4eXtractor и формате mw4 для тех кто не в теме. mw4 файлы это хитро устроенный архив. В нем помимо файлов имеется индекс. У каждого файла уникальный номер в этом индексе. Если файлы распаковать с индексами, то потом файлы можно будет изменить и запаковывать обратно.

Тонкость первая - при соединении по сети с mw4 файлов на клиенте берется контрольная сумма и если она не совпадает с суммой на сервере, то коннект не пройдет. Соответственно после модификации файлов их надо будет раскидать всем желающим. Этот процесс автоматизируем.

Тонкость вторая - индексы нужны не просто так. Индексы используются как ссылки между файлами. Например, внутри 3495_ultraac2.data{gamemodel} есть ссылки на файлы анимации и звуки для данного оружия. То есть в теории можно добавить новый файл анимации или звука с новым номером в индексе, поменять ссылку в конфиге оружия и оно подцепится.

Теперь по содержанию файлов data. Это файлы данных, выровненные по 4 байта. Те файлы, которые я разбирал, имеют вид выгруженной на диск структуры данных. В начале файла идет строка с названием и какой-нибудь безсодержательной сопровождающей информацией, потом идут непосредственно полезные данные.

Обычно это целые числа, вещественные числа и ссылки на другие файлы.

Соответственно что делал я - я брал некоторые 4 байта и преобразовывал их в читабельное значение из байтов в например вещественное число. Если в итоге получалось что-то вроде 1.0, значит я угадал формат. Аналогично с целыми числами и ссылками.

Другими словами у меня нет редактора в котором можно напрямую посмотреть что там хранится и поменять параметры. Вместо этого я составлял карты типов, что допустим с 100 по 103 байт находится целое число. Такой принцип хранения данных не подразумевает смещений в памяти. То есть не может оказаться так, что в одном файле у пушки в позиции 100 целое число, а в другом у другой пушки вещественное.

Получив карты параметров и исходя из знаний и фантазии мы сопоставили параметрам конкретные ТТХ вооружения и мехов. Многие параметры хранятся прямо как есть. Другие более оригинальны, например скорость поворота торса хранится в радианах, хотя приводится в игре в информации от комстара в градусах. Ещё более оригинален способ указания боезапаса - он указывается как "боезапас в игре"*"количество слотов оружия"*3.

Как выглядит в итоге прошивка баланса - я копирую новый баланс из экселя в текстовый файл, моя прога его разбирает и в нужные позиции в нужных файлах ставит необходимые значения. Для этого ещё указывается карта соответствий - какой параметр в какой области файла хранится и в каком формате. Дальше пересобранные файлы я запаковывал экстрактором.

З.Ы. не все data файлы содержат что-то полезное, во многих файлах я ничего полезного не нашел, хотя я не сильно целенаправленно все везде искал.

З.Ы.Ы. Совсем живой пример: файл 15915_ac2.data{gamemodel}. С позиции 88 идет 4 байта: 0,0, 122, 68. Разворачиваем их в обратном порядке: 68, 122, 0, 0. Пытаемся преобразовать во float и получаем значение 1000. Методом исключения узнаем, что этот параметр отвечает за дальность. Вывод: у любого оружия в *.data{gamemodel} с 88 байта идет дальность. Значит можно её во-первых прочитать, а во-вторых изменить.

Ссылка на комментарий

Может поделишься тогда программой?

Хочется починить баланс оружия, в ванильном варианте клановское оружие хуже сфероидного как ни странно.

Есть ряд моментов и уточняющих вопросов:

1. Я не хочу распылять усилия сообщества, поэтому я не хочу выносить программу в свободный доступ, чтобы все желающие сделали 100500 вариантов MW4 в которые никто не будет играть.

2. Разработка нового баланса подразумевает усилия заинтересованной команды игроков. Насколько это твой случай? Или ты просто хочешь поэкспериментировать с новым балансом против ботов?

3. Программа сейчас не дружелюбная к пользователю. Поэтому насколько тебе реально нужна программа? Тебе действительно нужно делать много вариантов баланса или тебе нужно буквально 1-2 и ты знаешь что и как изменить? Тогда тебе проще написать что ты хочешь и я соберу тебе нужный кор файл.

Ещё вопрос: что ты хочешь исправить в балансе и что в итоге должно получиться? Просто я заинтересован в развитии своего проекта и в том, чтобы разных вариаций баланса было немного и они были проработаны. Мне интересно, чтобы ты к нам присоединился и мы вместе проработали и выпустили версию альтернативного баланса или может быть тебя устроит наша собственная проработка.

Если тебе не интересно работать с нами, то смотри прикрепленный файл WeaponBalancer_1.01. Это одна из ранних версий ребалансера, которую я собрал для мехшторма - мне там помогли ковырять файлы MW4. Инструкция по использованию есть в теме http://www.mechstorm.com/forum/viewtopic.php?f=3&t=2294&start=10. Можешь его взять, потыкать, поспрашивать меня. Если надо могу инструкцию с басурманского на русский перевести. С его помощью можно менять следующие параметры у оружия: id,distance,speed,recycleTime,slots,damage,tonnage,heat,cost,ammo.

Если нужно больше возможностей - пиши, будем изучать вопрос.

WeaponBalancer_1.01.zip

WeaponBalancer_1.01.zip

WeaponBalancer_1.01.zip

Ссылка на комментарий

Попробовал заюзать команду вытаскивающую статы оружия - кодирование изменилось в файлах походу. Параметры либо ноль либо 9.1834E-41. У тебя какая версия мехвара? У меня фри релиз 0029. А тема по ссылке удалена.

С балансом поэкспериментировать в каком виде он был бы хорош. Присоединиться - тут все зависит как раз от взглядов на баланс на версию игры и тд.

Ссылка на комментарий

Попробовал заюзать команду вытаскивающую статы оружия - кодирование изменилось в файлах походу. Параметры либо ноль либо 9.1834E-41. У тебя какая версия мехвара? У меня фри релиз 0029. А тема по ссылке удалена.

С балансом поэкспериментировать в каком виде он был бы хорош. Присоединиться - тут все зависит как раз от взглядов на баланс на версию игры и тд.

Тема не удалена, на неё редирект кривой идет. Можешь поискать на форуме, называется "Mod requirements and discussion - Solaris Battles".

У меня фри релиз 028. Формат хранения от версии к версии не меняется. Я проверил распаковка идет нормально. Подозреваю, что у тебя неправильно указан путь к папке со статами.

Правильный пример:

java -jar mw4weaponBalancer.jar -mainFldr "<unpacked path>\weaponsubsystems" -resFile stats.txt getStats

Озвучь твой взгляд на баланс - что нужно в нем изменить?

Ссылка на комментарий

О, с кавычками гораздо лучше.

Для начала в балансе стоит поправить что кланнерское оружие почему-то греется сильнее сфероидного и стреляет с меньшей скоростью ибо это просто бред. Как сделать его "другим" не знаю, вообще в целом поправить бы безобразие с MRM которые нифига на себя не похожи, а стрейк MRM это вообще нонсенс. Хотя для такого программы мало.

Можно подумать над балансом тепловыделения, сомневаюсь что сейчас он соответствует таковому в настолке. Во всяком случае в использовании гауссов смысла мало. А те же пулеметы наоборот какая-то неадекватная имба - в настолке у них радиус ничтожен а тут больше чем у тяжелых лазеров.

Сейчас экспериментирую с приведением оружия к канону с базовой перезарядкой 5 секунд (из нее рассчет прочих параметров), более легким образцам повысив скорострельность. Гауссам напротив подняв скорость снаряда и альфу, понизив роф. Что касается оружия кланов то в лазерах оно дальнобойнее и мощнее с несколько большим нагревом при одинаковой скорострельности, как и положено ЕР лазерам, баллистика кланов немного скорострельнее аналогов при одинаковом дпм. Дальность из рассчета 30 метров на единичку.

В принципе все это больше рассчитано на сингл чем на мультиплеер, если не вводить правила балансировки аналогичные настольным.

Обнаружил что что-то не ладно с боеприпасами. понизил в 4 раза боезапас AC/20, но все равно принудительно догружает доп боеприпасы до 20, снимая хетсинки.

Ссылка на комментарий

Ну по крайней мере посмотреть что из этого получится.

Тебе какая-то помощь или консультация нужна ещё? Если нет, то когда планируешь выкатить баланс?

ЗЫ Я не играл в настол по БТ, поэтому я не знаю какой там оригинальный баланс, что в него заложено и чем принципиально ванильный МВ4 баланс от него отличается.

Ссылка на комментарий

Сегодня думаю пробную версию запилю. Нетмех черт его знает что там описания нет а сайт мода с форумом и всеми файлами удален и запущен заново.

Настоятельно рекомендую документировать свои изменения.

См. пример в приложенном файле

MW4_for_BT3_v1.3.5 - light.zip.

Первая таблица - исходные данные, вторая изменненые, третья собирается из первых двух и подсвечивается зеленым, если параметр улучшен и красным, если если ухудшен. Особые случаи - скорость ноль это бесконечная скорость. Обратите внимание на исходную скорость рокет лаунчеров - анимация в игре правильная, а рассчет попадания мгновенный.

На втором листе приведен калькулятор показывающий графики альфы и дпм у урона, нагрева и теплоурона в зависимости от дальности.

MW4_for_BT3_v1.3.5 - light.zip

MW4_for_BT3_v1.3.5 - light.zip

Ссылка на комментарий

Такую таблицу дольше делать чем саму модификацию, если менять все оружие )))

Лучше уж просто 2 файла сохранить с измененными статами и оригинальными.

Такой вопрос, сколько тепла рассеивают хетсинки в секунду? В пересчете на единички мехлаба кажись 0.4?

Дамаг ракет как я понял указывается в файле на 1 ракету, притом LRM20 пускает 4 ракеты, а 10 - две.

В целом результат выглядит неплохо, сниженная дальность лучше подходит для местных карт - обилие препятствий и холмов делает дальнобойное оружие неактуальным, оттого отчасти и страдали гауссы. Ну и 16 пулеметов больеш не будут непобедимой имбой.

Ссылка на комментарий

Такую таблицу дольше делать чем саму модификацию, если менять все оружие )))

Лучше уж просто 2 файла сохранить с измененными статами и оригинальными.

Утилита выводит значения отбитые табами, поэтому вывод утилиты можно просто скопировать в эксель файл и наоборот из экселя в текстовую утилиту. Просто со временем начинаешь забывать что где менял. Второй вариант - просматривать текстовые файлы через утилиту сравнения. Например в notepad++ есть неплохой файловый компаратор.

Такой вопрос, сколько тепла рассеивают хетсинки в секунду? В пересчете на единички мехлаба кажись 0.4?

По ТТХ температуры отпишусь чуть позже - там все хитро.

Дамаг ракет как я понял указывается в файле на 1 ракету, притом LRM20 пускает 4 ракеты, а 10 - две.

Про рассчет дамага от ракет нужно по факту посмотреть. Обрати внимание на характеритики ammoPerShot1 и ammoPerShot2 в экселе, который я выложил. Первый параметр это расход боеприпасов на залп, второй это расход боеприпасов на выстрел (может кто подскажет как это правильно называть?) и в выстреле несколько залпов. Я подозреваю что дамаг указан именно для залпа.

Ссылка на комментарий

Такой вопрос, сколько тепла рассеивают хетсинки в секунду? В пересчете на единички мехлаба кажись 0.4?

Что ты имеешь ввиду под пересчетом в единички мехлаба?

Что я наковырял про систему нагрева:

в мехлабе при конфигурации меха указываются две величины Heat Efficiency (H_Eff) и Rel Heat Efficiency (Rel_H_Eff).

H_Cap - у каждого меха есть показатель Heat Capacity.

Pass_Cooling - константа пассивного охлаждения Passive Cooling.

HS_Cooling - константа охлаждения хитсинка.

HS_Number - количество хитсинков.

Wpn_Heat - общий нагрев от оружия.

То что мы видим в мехлабе расчитывается следующим образом:

H_Eff = (Pass_Cooling + HS_Cooling * HS_Number) / Wpn_Heat

Rel_H_Eff = (60 * H_Eff) / H_Cap

Pass_Cooling у всех мехов одинаковый и равен примерно 5,55.

HS_Cooling равен примерно 0,555 - десятая часть от пассивного охлаждения.

Как придумали эти константы я не знаю. Есть идеи?

Пересчет температуры меха выполняется 2 раза в секунду.

Ссылка на комментарий

"единички мехлаба" - это цифра что в мехлабе показывает нагрев каждого оружия.

Эксперимент показал что 7 хетсинков поглощают тепло от оружия с нагревом 14 за 5 секунд. Нужно еще потестить.

Ссылка на комментарий

"единички мехлаба" - это цифра что в мехлабе показывает нагрев каждого оружия.

Эксперимент показал что 7 хетсинков поглощают тепло от оружия с нагревом 14 за 5 секунд. Нужно еще потестить.

Что-то тема подзаглохла. Есть подвижки?

Ссылка на комментарий
  • 1 год спустя...

Всем привет!

Тема хоть и не популярная, но периодически на меня выходят люди, интересующиеся моддингом четвертых мехов. За сим я пересмотрел концепцию своего ребалансера и сделал новый.

Называется: BinaryPatcher

Он принимает на вход файл со статами и путь к папке с данными.

Файл со статами описывает семейства параметров. В каждом семействе хранится фильтр файлов, чтобы выбирать только нужные и набор статов. Стат описывается именем, начальным байтом и типом данных.

Соответственно BinaryPatcher умеет все это выгружать в таблички CSV или JSON и потом прошивать обратно. Единственное, для работы с таблицами лучше использовать LibreOffice Calc, а не Excel.

Инфофайлы можно модифицировать, чтобы работать только с нужными данными.

Выкладываю здесь патчер. Кому нужен инфофайл - пишите в ЛС,

binaryPatcher.zip

binaryPatcher.zip

Напоминалка 10.2016: для патчера файлы должны быть распакованы с индексами, то бишь установлена галка "Use ID names"

binaryPatcher.zip

Изменено пользователем Zif_Stone
Добавлено важное замечание по использованию.
Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Расскажите друзьям

    Нравится Эриданская лёгкая кавалерия? Расскажите друзьям!
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...