Новый simEngine.dll Решаем проблему с паффингом техники, Ломаем паффинг с 2004 года! |
Здравствуйте, гость ( Авторизация | Регистрация )
Форумы работают на сервере |
Новый simEngine.dll Решаем проблему с паффингом техники, Ломаем паффинг с 2004 года! |
26.09.2019, 14:20
Сообщение
#1
|
|
Maniac! Раса: Eldar Армия: Farseer Группа: Пользователь Сообщений: 1 840 Регистрация: 14.10.2009 Пользователь №: 20 344 Репутация: 186 |
Переношу сюда тему из основного форума.
Для тех кто не в курсе, я своими кривыми руконогами и конечно же топором попробовал исправить очень неприятный момент с паффингом в игре, а именно - расталкивание мелких моделек (обычно пехоты) крупными (техника и демоны). Старые фиксы были либо полурабочими, либо вызывали какие-то визуальные проблемы. На данный момент возможности записать видео и выложить на ютуб нет (живу в Китае), так что постараюсь объяснить всё картинками. "Вежливая техника на службе псов лжеимператора" Техника немного тупит, пытаясь обходить пехоту, но она вроде бы всегда так тупила. Ссылки тут. Для коробочной и стим версии файлы разные. Файл для коробочной версии игры сейчас тестируется, возможны проблемы, если версия игры не подходит (пиратка/лицензия/патч). Кидается в папку соулсторма, конечно же сделайте бэкап, поскольку возможны проблемы. О неестественном поведении, кроме заявленного выше прошу сообщать. Предварительные тесты проблем не показали. "Найденные проблемы" - жалоба на вылет из стандартного скирмиша в Unification mod (сложный вопрос, мод-комбайнер) - Steam-версия и коробочная версия имеют разные dll. По идее просто нужно проделать аналогичное изменение в обоих версиях dll-файла (файл доступен для тестов) Сообщение отредактировал Руконогийдровосек - 07.10.2019, 08:38 -------------------- 99 little bugs in the code
99 little bugs in the code Take one down, patch it around 117 little bugs in the code |
|
|
26.09.2019, 14:35
Сообщение
#2
|
|
Maniac! Раса: Eldar Армия: Farseer Группа: Пользователь Сообщений: 1 840 Регистрация: 14.10.2009 Пользователь №: 20 344 Репутация: 186 |
Сразу отвечу на пару вопросов, возникших в прошлой теме.
Цитата Один пак не может пройти сквозь другой. Если два отряда стоят близко к друг другу, то третий как бы протискивается между этими двумя. Проверял на гвардейцах. "У меня не так. Тестируете на ванильном дов?" Цитата Можешь подробнее описать, что и как ты менял в SimEngine? Сложно описать то, что сам не до конца понимаешь. В коде, отвечающем за "расталкивание" есть 3 сравнения. Два из них приводят к одному и тому же варианту решения: в eax записывается edi, а вот третий вариант пишет в eax значительно отличающуюся константу. Код выглядит так: Код .text:10084110 this = dword ptr 4 .text:10084110 .text:10084110 mov eax, [esp+this] .text:10084114 mov eax, [eax+18h] .text:10084117 test eax, eax .text:10084119 push edi .text:1008411A mov edi, 1 .text:1008411F jz short loc_10084141 .text:10084121 push esi .text:10084122 mov esi, [eax+248h] .text:10084128 test esi, esi .text:1008412A jz short loc_10084147 .text:1008412C mov edx, [esi] .text:1008412E mov eax, [edx+4] .text:10084131 mov ecx, esi .text:10084133 call eax .text:10084135 test eax, eax .text:10084137 jnz short loc_10084147 .text:10084139 mov eax, [esi+70h] .text:1008413C pop esi .text:1008413D pop edi .text:1008413E retn 4 .text:10084141; --------------------------------------------------------------------------- .text:10084141 .text:10084141 loc_10084141: ; CODE XREF: GroundDynamicsUtils::GetEntitySize(Entity const *)+F↑j .text:10084141 mov eax, edi .text:10084143 pop edi .text:10084144 retn 4 .text:10084147; --------------------------------------------------------------------------- .text:10084147 .text:10084147 loc_10084147: ; CODE XREF: GroundDynamicsUtils::GetEntitySize(Entity const *)+1A↑j .text:10084147 ; GroundDynamicsUtils::GetEntitySize(Entity const *)+27↑j .text:10084147 pop esi .text:10084148 mov eax, edi .text:1008414A pop edi .text:1008414B retn 4 Всё, что я сделал, это поменял Код .text:10084137 jnz short loc_10084147 на Код .text:10084137 jz short loc_10084147 Если не разбираетесь в ассемблере, то я просто перевернул третье сравнение, которое видимо и отвечало за присваивание технике более высокого приоритета. Теперь независимо от сравнения выход происходит на два одинаковых варианта приоритета. Куда девался третий и используется ли он вообще я сказать, к сожалению не могу. Поэтому и прошу помощи с тестированием. -------------------- 99 little bugs in the code
99 little bugs in the code Take one down, patch it around 117 little bugs in the code |
|
|
26.09.2019, 15:05
Сообщение
#3
|
|
Flooder Группа: Пользователь Сообщений: 597 Регистрация: 08.06.2011 Пользователь №: 29 239 Репутация: 167 |
Не терпится потестить как будет вести себя вежливая техника, если окружить её паком штормей из 4, 5 ... n юнитов. Найдет ли она объезд или будет стоять? Можно ли таким же способом стопить её юнитами, или она нормально объедет?
-------------------- |
|
|
26.09.2019, 15:58
Сообщение
#4
|
|
Master Flooder Группа: Пользователь Сообщений: 715 Регистрация: 02.12.2010 Пользователь №: 26 099 Репутация: 276 |
Очень интересно!
Молодец, что нашел нужное сравнение. Я, как дойдут руки, тоже поэкспериментирую с этими инструкциями. Через что открывал? IDA PRO? -------------------- |
|
|
26.09.2019, 15:59
Сообщение
#5
|
|
Master Группа: Пользователь Сообщений: 258 Регистрация: 28.07.2019 Из: регион 21 Пользователь №: 70 053 Репутация: 37 |
Понял в чем дело. Один отряд гвардейцев пробегает сквозь другой, когда они бегут навстречу друг другу или вместе. Но когда один отряд стоит, а другой бежит на него, то бегущий обегает стоящий как технику. То же самое с паком сестер. А вот сквозь пак сестер остальная пехота может пробегать в любом случае. И гвардейцы, и сестры используют формации, в которых scale<3 (гвардейцы scale=2.8, сестры scale=2.9). Поставил 3 и теперь могут спокойно пробегать сквозь друг друга.
-------------------- |
|
|
26.09.2019, 17:14
Сообщение
#6
|
|
Maniac! Раса: Eldar Армия: Farseer Группа: Пользователь Сообщений: 1 840 Регистрация: 14.10.2009 Пользователь №: 20 344 Репутация: 186 |
Молодец, что нашел нужное сравнение. Я, как дойдут руки, тоже поэкспериментирую с этими инструкциями. Через что открывал? IDA PRO? На самом деле я хотел Код mov eax, [esi+70h] исправить на Код mov eax, edi но поскольку не умею, то сделал, что смог. Возможно это и вызывает те проблемы, которые описывает Тестер. Если получится сделать вышеуказанное исправление вместо моего "фикса", то будет даже лучше - все будут иметь один и тот же приоритет при любых исходах сравнения. На самом деле правильнее было бы избавиться от этого приоритета совсем, но такое для меня слишком сложно. Пользовался IDA Pro и Hex Editor Neo. Понял в чем дело. И гвардейцы, и сестры используют формации, в которых scale<3 (гвардейцы scale=2.8, сестры scale=2.9). Поставил 3 и теперь могут спокойно пробегать сквозь друг друга. Это хорошее наблюдение. Стоит поиграть с кодом и сделать так, чтобы все считали друг друга пехотой, а не техникой. Главное, что нашёлся код, ответственный за этот самый паффинг, а уж довести его до ума совместными усилиями у нас получится. Текущий вариант уже неплох. Если, конечно, не найдётся каких-то проблем, связанных с ним. Сообщение отредактировал Руконогийдровосек - 26.09.2019, 17:31 -------------------- 99 little bugs in the code
99 little bugs in the code Take one down, patch it around 117 little bugs in the code |
|
|
26.09.2019, 17:23
Сообщение
#7
|
|
Priest Раса: Imperial Guard Армия: Harakoni Warhawks Группа: Пользователь Сообщений: 1 105 Регистрация: 16.10.2018 Пользователь №: 64 707 Репутация: 140 |
Я все потестил, ВСЕ РАБОТАЕТ!! Это просто шедевр, оно действительно работает!! ТСМЫ ЗАЛЕЗЛИ В РИНКУ находясь в движении и ринка и ТСМ! Это действительно новый уровень исправления паффинга, уровень модификации движка игры. Теперь абсолютно не нужны костыльные фиксы от JGHAMO с неадекватными размерами техники!! Просто заменил один файлик в папке с игрой и техника начинает вести себя адекватно. Поставил бы миллиард плюсов, если бы мог...
Единственное, что заметил, это то, что техника не сможет выбраться если ее окружить пехотой. Это тоже не всегда есть хорошо, поскольку обычные гвардейцы могут не дать лендрейдеру выехать. С другой стороны, можно назвать это новой фичой игры, это все равно лучше чем незалезающие в ринку юниты. PS: Раз у тебя получилось поправить движок, может сможешь пойти дальше? Некст левел это сделать чтобы пехота разбегалась в страхе от техники(чтобы техника могла выезжать), но при этом разбегаясь, она не входила в ступор. (то есть, условно говоря, могла стрелять, залезать в ринку и прочее) PS2: Хотел прикрепить скриншот с лендрейдером и гвардейцами, но увы, стим опять благополучно сьел мои скриншоты и их нигде нет *_* |
|
|
26.09.2019, 17:36
Сообщение
#8
|
|
Maniac! Группа: Пользователь Сообщений: 1 090 Регистрация: 04.02.2008 Пользователь №: 12 629 Репутация: 247 |
to SpeedRay
Как вариант - добавить технике абилку сквиггота на расталкивание пехоты. Будет опция - въехать в толпу разбросав ее, но терпеть от окружения или свалить, но если окружили опять - сам дурак. -------------------- Полная английская озвучка SoulStorm. Распаковать в папку с игрой.
|
|
|
26.09.2019, 17:42
Сообщение
#9
|
|
Priest Раса: Imperial Guard Армия: Harakoni Warhawks Группа: Пользователь Сообщений: 1 105 Регистрация: 16.10.2018 Пользователь №: 64 707 Репутация: 140 |
|
|
|
26.09.2019, 18:29
Сообщение
#10
|
|
Guardsman Раса: Imperial Guard Армия: Nova Kursk Аssault Brigades Группа: Пользователь Сообщений: 1 181 Регистрация: 28.05.2011 Из: Екатеринбург Пользователь №: 29 137 Репутация: 527 |
Цитата Некст левел это сделать чтобы пехота разбегалась в страхе от техники(чтобы техника могла выезжать), но при этом разбегаясь, она не входила в ступор. Вот этого совершенно не нужно. Ринодрочерам достаточно того, что в рину все сразу влазит. Довольно издевательств над милишниками было за последние 10к лет. Да даже не над милишниками, над просто ребятами, у которых рейндж стрельбы меньше чем у риновозика. Ну либо возвращать посадку в рину из ваниллы дов - сквад залазит в транспорт по одной модельке. |
|
|
26.09.2019, 18:58
Сообщение
#11
|
|
Master Группа: Пользователь Сообщений: 258 Регистрация: 28.07.2019 Из: регион 21 Пользователь №: 70 053 Репутация: 37 |
Нашел другой способ исправить непробегаемость. Можно не трогать scale формации сестер или гварды, а изменить координаты спавна юнита в нем. Например, берем позицию spot_02 и изменяем pos_x и pos_y так, что бы не было целых чисел. Вместо 1 нужно 1.1, вместо 0 ставить 0.1. На схеме: черная стрелка - юнит, который занимает spot_02 с измененными координатами, оранжевая стрелка - место, откуда будет пробегать выделенный отряд.
"+" Этим же способом (изменением координат) решил баг котла архонта, когда один-два юнита из отряда не атаковали, ступорились. Баг не работает на орках и хаосе, из-за хаотичности их формаций. Для всех остальных ступор начинается с 4 юнита в отряде. -------------------- |
|
|
26.09.2019, 19:04
Сообщение
#12
|
|
Priest Раса: Imperial Guard Армия: Harakoni Warhawks Группа: Пользователь Сообщений: 1 105 Регистрация: 16.10.2018 Пользователь №: 64 707 Репутация: 140 |
Вот этого совершенно не нужно. Ринодрочерам достаточно того, что в рину все сразу влазит. Довольно издевательств над милишниками было за последние 10к лет. Да даже не над милишниками, над просто ребятами, у которых рейндж стрельбы меньше чем у риновозика. Ну либо возвращать посадку в рину из ваниллы дов - сквад залазит в транспорт по одной модельке. То есть по-твоему если две пачки обычных гвардейцев полностью заблокируют вражеский лендрейдер(он никак не выедет), это нормально? Это бред как с точки зрения баланса, так и реалистичности. Сообщение отредактировал SpeedRay - 26.09.2019, 19:05 |
|
|
26.09.2019, 19:37
Сообщение
#13
|
|
Guardsman Раса: Imperial Guard Армия: Nova Kursk Аssault Brigades Группа: Пользователь Сообщений: 1 181 Регистрация: 28.05.2011 Из: Екатеринбург Пользователь №: 29 137 Репутация: 527 |
Т.е. по твоему, когда 100500 берсов/прочих милишников, убиваются об тачку с 2 паками стрелков, без потерь со стороны последних, это нормально? Вот это бред и с точки зрения баланса и с точки зрения играбельности и...просто со всех точек зрения. Кроме точки зрения ринодрочера.
|
|
|
26.09.2019, 19:49
Сообщение
#14
|
|
Master Группа: Пользователь Сообщений: 258 Регистрация: 28.07.2019 Из: регион 21 Пользователь №: 70 053 Репутация: 37 |
Ну или что бы стрелки или отряд в стрелковом режиме не мог блокировать технику, а рукопашники или отряд в рукопашном режиме - мог. Как-то так.
-------------------- |
|
|
26.09.2019, 20:09
Сообщение
#15
|
|
Grotesque Раса: Dark Eldar Армия: Bloodied Claw Kabal Группа: Пользователь Сообщений: 330 Регистрация: 04.04.2018 Из: Екатеринбург Пользователь №: 60 669 Репутация: 74 |
но поскольку не умею, то сделал, что смог. А почему не умеешь? Не компилируется или что? Насколько я помню, edi - регистр, в котором хранится адрес, и его не во все регистры можно записать (вроде только в ebx, но это не точно) -------------------- Чем меньше человек играет в СС, тем больше его заботит баланс
|
|
|
26.09.2019, 20:17
Сообщение
#16
|
|
Maniac! Раса: Eldar Армия: Farseer Группа: Пользователь Сообщений: 1 840 Регистрация: 14.10.2009 Пользователь №: 20 344 Репутация: 186 |
Цитата То есть по-твоему если две пачки обычных гвардейцев полностью заблокируют вражеский лендрейдер(он никак не выедет), это нормально? Это бред как с точки зрения баланса, так и реалистичности. Когда это дов был примером баланса и реалистичности? То есть когда голая бабёнка в одних труселях получает в лицо залп лазпушки и даже не чешется - это реалистично? Только не надо про то, что таким образом правилось отсутствие модификаторов по точности. В дов2 такие модификаторы есть, за реалистичностью - туда. Цитата Ну или что бы стрелки или отряд в стрелковом режиме не мог блокировать технику, а рукопашники или отряд в рукопашном режиме - мог. Как-то так. Вежливые огненные драконы и целестианки? Ну уж нет. Вообще, я хотел избавиться от паффинга именно для того чтобы можно было нормально играть рукопашным антитехом. К тому же, когда лишняя ринка просто отключает тебе отряды - это совсем уж не балансно. Да пусть иг или даже вонючие гроты под невидимостью блокируют вражеский (или свой) бейнблейд, я буду этому очень рад. Фикс скорее для себя самого делался, такой паффинг - очень отталкивающая от игры вещь. Цитата А почему не умеешь? Не компилируется или что? Потому что только учусь. Начал заниматься этим делом пару дней назад. Сообщение отредактировал Руконогийдровосек - 26.09.2019, 20:22 -------------------- 99 little bugs in the code
99 little bugs in the code Take one down, patch it around 117 little bugs in the code |
|
|
26.09.2019, 21:22
Сообщение
#17
|
|
Priest Раса: Imperial Guard Армия: Harakoni Warhawks Группа: Пользователь Сообщений: 1 105 Регистрация: 16.10.2018 Пользователь №: 64 707 Репутация: 140 |
Забавный факт: если заменить SimEngine, то вас пустит в онлайн, но будет вылетать Sync-Error в самый неожиданный момент) Я забыл его вернуть и весь вечер ловлю синк-ерроры, ток щас понял причину))
|
|
|
27.09.2019, 07:12
Сообщение
#18
|
|
Master Группа: Пользователь Сообщений: 258 Регистрация: 28.07.2019 Из: регион 21 Пользователь №: 70 053 Репутация: 37 |
Некст левел это сделать чтобы пехота разбегалась в страхе от техники(чтобы техника могла выезжать), но при этом разбегаясь, она не входила в ступор. (то есть, условно говоря, могла стрелять, залезать в ринку и прочее) Вспомнил про то, что из-за паффинга у фв открывается стрельба на ходу -------------------- |
|
|
01.10.2019, 10:49
Сообщение
#19
|
|
Maniac! Раса: Eldar Армия: Farseer Группа: Пользователь Сообщений: 1 840 Регистрация: 14.10.2009 Пользователь №: 20 344 Репутация: 186 |
Один человек с moddb жалуется на вылеты в unification моде. Определить что там юзер накомбайнил сложно, к тому же комбайнеры всегда были очень нестабильны, однако всё равно вылет представляется странным. Скачавшие файл тут вылетов не обнаруживали?
UPD. Там же пожаловались на невозможность запустить не Steam версию игры под этим длл. Сообщение отредактировал Руконогийдровосек - 01.10.2019, 15:18 -------------------- 99 little bugs in the code
99 little bugs in the code Take one down, patch it around 117 little bugs in the code |
|
|
07.10.2019, 08:41
Сообщение
#20
|
|
Maniac! Раса: Eldar Армия: Farseer Группа: Пользователь Сообщений: 1 840 Регистрация: 14.10.2009 Пользователь №: 20 344 Репутация: 186 |
Доступен simEngine.dll для коробочной версии игры. Ссылка тут и в первом посте. Теперь фикс должен работать и на коробочной версии, однако возможны проблемы (лицензия/пиратка/патч). Просьба всех опробовавших не стесняться и отписаться в случае наличия или отсутствия проблем.
-------------------- 99 little bugs in the code
99 little bugs in the code Take one down, patch it around 117 little bugs in the code |
|
|
Текстовая версия | Сейчас: 20.04.2024 - 03:37 |
Написать письмо администратору |