Jump to content
Sign in to follow this  
Zif_Stone

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

Recommended Posts

Всем привет!

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

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

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

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

Share this post


Link to post
Share on other sites

Разбираюсь с настройками 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

Share this post


Link to post
Share on other sites

Plasma rifle пробовал? Вот оно хорошо греет.

Ковыряю MP3.1:028, а плазма в хардкоре только есть.

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Расскажи каким образом тебе удалось расковырять файлы и как там чего редактировать? Удалось найти только открывалку для .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 байта идет дальность. Значит можно её во-первых прочитать, а во-вторых изменить.

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Оригинальный баланс делать не нужно. Уже есть мод NetMech, где реализовано все в меру возможностей модинга игры.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

MW4_for_BT3_v1.3.5 - light.zip.

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

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

MW4_for_BT3_v1.3.5 - light.zip

Share this post


Link to post
Share on other sites

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

Такой вопрос, сколько тепла рассеивают хетсинки в секунду? В пересчете на единички мехлаба кажись 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 раза в секунду.

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Всем привет!

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

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

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

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

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

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

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

binaryPatcher.zip

binaryPatcher.zip

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

Edited by Zif_Stone
Добавлено важное замечание по использованию.
  • Upvote 1

Share this post


Link to post
Share on other sites

Круто!! Для других игр подобное не делаешь?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

ЭЛК

Мы, «Эриданская лёгкая кавалерия» - сообщество поклонников вселенной BattleTech. Главной своей целью ставим общение и объединение всех приверженцев идей оригинальной Звёздной Лиги в БТ и поклонников легендарного канонического подразделения Eridani Light Horse. Мы активное комьюнити, ведущее игровую деятельность в лигах по MechWarrior. Мы сюжетно ориентированный, ролевой юнит и предпочитаем ролевые "планетарные" лиги киберспортивным. Игровые достижения не являются для нас самоцелью, тем не менее, мы поддерживаем солидную игровую школу и всегда стремимся к победам.

.
.

Ссылки

Сайт ЭЛК

×
×
  • Create New...