WARFORGE

Здравствуйте, гость ( Авторизация | Регистрация )

Форумы работают на сервере
2 страниц V   1 2 >  
Ответить на темуЗапустить новую тему
Новый simEngine.dll Решаем проблему с паффингом техники, Ломаем паффинг с 2004 года!
Руконогийдровосе...
сообщение 26.09.2019, 14:20
Сообщение #1


Maniac!
************

WH40k: Dawn of War II
Раса: 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!
************

WH40k: Dawn of War II
Раса: 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
Перейтик к верху страницы
 
+Цитировать сообщение
Anibus
сообщение 26.09.2019, 15:05
Сообщение #3


Flooder
*********

Группа: Пользователь
Сообщений: 597
Регистрация: 08.06.2011
Пользователь №: 29 239



Репутация:   167  


Не терпится потестить как будет вести себя вежливая техника, если окружить её паком штормей из 4, 5 ... n юнитов. Найдет ли она объезд или будет стоять? Можно ли таким же способом стопить её юнитами, или она нормально объедет?


--------------------
Перейтик к верху страницы
 
+Цитировать сообщение
SF_elamaunt
сообщение 26.09.2019, 15:58
Сообщение #4


Master Flooder
**********

Группа: Пользователь
Сообщений: 715
Регистрация: 02.12.2010
Пользователь №: 26 099



Репутация:   276  


Очень интересно!
Молодец, что нашел нужное сравнение. Я, как дойдут руки, тоже поэкспериментирую с этими инструкциями.
Через что открывал? IDA PRO?


--------------------
Мой реплей пак link
Реплей менеджер link
Редактор горячих клавиш link
Проблемы блока в локальной сети link
Перейтик к верху страницы
 
+Цитировать сообщение
Фрегат из Горизо...
сообщение 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!
************

WH40k: Dawn of War II
Раса: Eldar
Армия: Farseer
Группа: Пользователь
Сообщений: 1 840
Регистрация: 14.10.2009
Пользователь №: 20 344



Репутация:   186  


Цитата(SF_elamaunt @ 26.09.2019, 16:58) *
Молодец, что нашел нужное сравнение. Я, как дойдут руки, тоже поэкспериментирую с этими инструкциями.
Через что открывал? IDA PRO?

На самом деле я хотел
Код
mov     eax, [esi+70h]

исправить на
Код
mov     eax, edi

но поскольку не умею, то сделал, что смог. Возможно это и вызывает те проблемы, которые описывает Тестер. Если получится сделать вышеуказанное исправление вместо моего "фикса", то будет даже лучше - все будут иметь один и тот же приоритет при любых исходах сравнения. На самом деле правильнее было бы избавиться от этого приоритета совсем, но такое для меня слишком сложно.
Пользовался IDA Pro и Hex Editor Neo.
Цитата(Тестер @ 26.09.2019, 16:59) *
Понял в чем дело. И гвардейцы, и сестры используют формации, в которых 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
Перейтик к верху страницы
 
+Цитировать сообщение
Пользователь №78...
сообщение 26.09.2019, 17:23
Сообщение #7


Priest
************

Warhammer 40,000
Раса: Imperial Guard
Армия: Harakoni Warhawks
Группа: Пользователь
Сообщений: 1 105
Регистрация: 16.10.2018
Пользователь №: 64 707



Репутация:   140  


Я все потестил, ВСЕ РАБОТАЕТ!! Это просто шедевр, оно действительно работает!! ТСМЫ ЗАЛЕЗЛИ В РИНКУ находясь в движении и ринка и ТСМ! Это действительно новый уровень исправления паффинга, уровень модификации движка игры. Теперь абсолютно не нужны костыльные фиксы от JGHAMO с неадекватными размерами техники!! Просто заменил один файлик в папке с игрой и техника начинает вести себя адекватно. Поставил бы миллиард плюсов, если бы мог...

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

PS: Раз у тебя получилось поправить движок, может сможешь пойти дальше? Некст левел это сделать чтобы пехота разбегалась в страхе от техники(чтобы техника могла выезжать), но при этом разбегаясь, она не входила в ступор. (то есть, условно говоря, могла стрелять, залезать в ринку и прочее)

PS2: Хотел прикрепить скриншот с лендрейдером и гвардейцами, но увы, стим опять благополучно сьел мои скриншоты и их нигде нет *_*
Перейтик к верху страницы
 
+Цитировать сообщение
RuWlRamRoud
сообщение 26.09.2019, 17:36
Сообщение #8


Maniac!
************

Группа: Пользователь
Сообщений: 1 090
Регистрация: 04.02.2008
Пользователь №: 12 629



Репутация:   247  


to SpeedRay

Как вариант - добавить технике абилку сквиггота на расталкивание пехоты. Будет опция - въехать в толпу разбросав ее, но терпеть от окружения или свалить, но если окружили опять - сам дурак.


--------------------
Полная английская озвучка SoulStorm. Распаковать в папку с игрой.
Перейтик к верху страницы
 
+Цитировать сообщение
Пользователь №78...
сообщение 26.09.2019, 17:42
Сообщение #9


Priest
************

Warhammer 40,000
Раса: Imperial Guard
Армия: Harakoni Warhawks
Группа: Пользователь
Сообщений: 1 105
Регистрация: 16.10.2018
Пользователь №: 64 707



Репутация:   140  


Цитата(Руконогийдровосек @ 26.09.2019, 17:14) *
Пользовался IDA Pro и Hex Editor Neo.

Советую присмотреться еще к snowman, это плагин к IDA Pro, который генерирует псевдо с++ код, так будет проще ориентироватся.
Перейтик к верху страницы
 
+Цитировать сообщение
Made in USSR
сообщение 26.09.2019, 18:29
Сообщение #10


Guardsman
************

Warhammer 40,000
Раса: 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 с измененными координатами, оранжевая стрелка - место, откуда будет пробегать выделенный отряд.
"+"
Прикрепленный файл  20190926181621_1.jpg ( 424.7 килобайт ) Кол-во скачиваний: 29


Этим же способом (изменением координат) решил баг котла архонта, когда один-два юнита из отряда не атаковали, ступорились. Баг не работает на орках и хаосе, из-за хаотичности их формаций. Для всех остальных ступор начинается с 4 юнита в отряде.


--------------------
Перейтик к верху страницы
 
+Цитировать сообщение
Пользователь №78...
сообщение 26.09.2019, 19:04
Сообщение #12


Priest
************

Warhammer 40,000
Раса: Imperial Guard
Армия: Harakoni Warhawks
Группа: Пользователь
Сообщений: 1 105
Регистрация: 16.10.2018
Пользователь №: 64 707



Репутация:   140  


Цитата(Made in USSR @ 26.09.2019, 18:29) *
Вот этого совершенно не нужно. Ринодрочерам достаточно того, что в рину все сразу влазит. Довольно издевательств над милишниками было за последние 10к лет. Да даже не над милишниками, над просто ребятами, у которых рейндж стрельбы меньше чем у риновозика. Ну либо возвращать посадку в рину из ваниллы дов - сквад залазит в транспорт по одной модельке.

То есть по-твоему если две пачки обычных гвардейцев полностью заблокируют вражеский лендрейдер(он никак не выедет), это нормально? Это бред как с точки зрения баланса, так и реалистичности.

Сообщение отредактировал SpeedRay - 26.09.2019, 19:05
Перейтик к верху страницы
 
+Цитировать сообщение
Made in USSR
сообщение 26.09.2019, 19:37
Сообщение #13


Guardsman
************

Warhammer 40,000
Раса: 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  


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


--------------------
Перейтик к верху страницы
 
+Цитировать сообщение
penguin_of_linux
сообщение 26.09.2019, 20:09
Сообщение #15


Grotesque
*******

Warhammer 40,000
Раса: Dark Eldar
Армия: Bloodied Claw Kabal
Группа: Пользователь
Сообщений: 330
Регистрация: 04.04.2018
Из: Екатеринбург
Пользователь №: 60 669



Репутация:   74  


Цитата(Руконогийдровосек @ 26.09.2019, 19:14) *
но поскольку не умею, то сделал, что смог.

А почему не умеешь? Не компилируется или что? Насколько я помню, edi - регистр, в котором хранится адрес, и его не во все регистры можно записать (вроде только в ebx, но это не точно)


--------------------
Чем меньше человек играет в СС, тем больше его заботит баланс
Перейтик к верху страницы
 
+Цитировать сообщение
Руконогийдровосе...
сообщение 26.09.2019, 20:17
Сообщение #16


Maniac!
************

WH40k: Dawn of War II
Раса: 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
Перейтик к верху страницы
 
+Цитировать сообщение
Пользователь №78...
сообщение 26.09.2019, 21:22
Сообщение #17


Priest
************

Warhammer 40,000
Раса: 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  


Цитата(SpeedRay @ 26.09.2019, 17:23) *
Некст левел это сделать чтобы пехота разбегалась в страхе от техники(чтобы техника могла выезжать), но при этом разбегаясь, она не входила в ступор. (то есть, условно говоря, могла стрелять, залезать в ринку и прочее)

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


--------------------
Перейтик к верху страницы
 
+Цитировать сообщение
Руконогийдровосе...
сообщение 01.10.2019, 10:49
Сообщение #19


Maniac!
************

WH40k: Dawn of War II
Раса: 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!
************

WH40k: Dawn of War II
Раса: 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
Перейтик к верху страницы
 
+Цитировать сообщение

2 страниц V   1 2 >
Ответить на темуЗапустить новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 16.04.2024 - 13:33