Перейти к содержанию
⚠️ Обновление форума - Feedback ⚠️ ×

Новый simEngine.dll Решаем проблему с паффингом техники


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

Переношу сюда тему из основного форума.

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

На данный момент возможности записать видео и выложить на ютуб нет (живу в Китае), так что постараюсь объяснить всё картинками.

"Вежливая техника на службе псов лжеимператора"
Вежливому дредноуту отдают приказ на движение, но он стесняется толкать своих друзей (обращаем внимание на таймер)

relic00039.jpg relic00040.jpg relic00041.jpg relic00042.jpg

Даже приказ на атаку не вдохновляет вежливого дредноута толкаться

relic00055.jpg relic00056.jpg

Друг вежливого дредноута - вежливый предатор, аналогичен по свойствам - старается объехать, а не мешаться

relic00053.jpg

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

Ссылки тут. Для коробочной и стим версии файлы разные. Файл для коробочной версии игры сейчас тестируется, возможны проблемы, если версия игры не подходит (пиратка/лицензия/патч).

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

Предварительные тесты проблем не показали.

"Найденные проблемы"

- жалоба на вылет из стандартного скирмиша в Unification mod (сложный вопрос, мод-комбайнер)

- Steam-версия и коробочная версия имеют разные dll. По идее просто нужно проделать аналогичное изменение в обоих версиях dll-файла (файл доступен для тестов)

Изменено пользователем Руконогийдровосек
Ссылка на комментарий
Поделиться на другие сайты

Сразу отвечу на пару вопросов, возникших в прошлой теме.

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

"У меня не так. Тестируете на ванильном дов?"
На картинках мои отряды свободно проходят сквозь другие

relic00058.jpg relic00059.jpg

Можешь подробнее описать, что и как ты менял в 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

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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

Очень интересно!

Молодец, что нашел нужное сравнение. Я, как дойдут руки, тоже поэкспериментирую с этими инструкциями.

Через что открывал? IDA PRO?

Ссылка на комментарий
Поделиться на другие сайты

Понял в чем дело. Один отряд гвардейцев пробегает сквозь другой, когда они бегут навстречу друг другу или вместе. Но когда один отряд стоит, а другой бежит на него, то бегущий обегает стоящий как технику. То же самое с паком сестер. А вот сквозь пак сестер остальная пехота может пробегать в любом случае. И гвардейцы, и сестры используют формации, в которых scale<3 (гвардейцы scale=2.8, сестры scale=2.9). Поставил 3 и теперь могут спокойно пробегать сквозь друг друга.

Ссылка на комментарий
Поделиться на другие сайты

Молодец, что нашел нужное сравнение. Я, как дойдут руки, тоже поэкспериментирую с этими инструкциями.

Через что открывал? IDA PRO?

На самом деле я хотел

mov	 eax, [esi+70h]
исправить на
mov	 eax, edi

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

Пользовался IDA Pro и Hex Editor Neo.

Понял в чем дело. И гвардейцы, и сестры используют формации, в которых scale<3 (гвардейцы scale=2.8, сестры scale=2.9). Поставил 3 и теперь могут спокойно пробегать сквозь друг друга.

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

Изменено пользователем Руконогийдровосек
Ссылка на комментарий
Поделиться на другие сайты

to SpeedRay

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

Нашел другой способ исправить непробегаемость. Можно не трогать scale формации сестер или гварды, а изменить координаты спавна юнита в нем. Например, берем позицию spot_02 и изменяем pos_x и pos_y так, что бы не было целых чисел. Вместо 1 нужно 1.1, вместо 0 ставить 0.1. На схеме: черная стрелка - юнит, который занимает spot_02 с измененными координатами, оранжевая стрелка - место, откуда будет пробегать выделенный отряд.

"+"
post-70053-1569512441_thumb.jpg

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

Ссылка на комментарий
Поделиться на другие сайты

Т.е. по твоему, когда 100500 берсов/прочих милишников, убиваются об тачку с 2 паками стрелков, без потерь со стороны последних, это нормально? Вот это бред и с точки зрения баланса и с точки зрения играбельности и...просто со всех точек зрения. Кроме точки зрения ринодрочера.

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

но поскольку не умею, то сделал, что смог.

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Вежливые огненные драконы и целестианки? Ну уж нет.

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

А почему не умеешь? Не компилируется или что?

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

Изменено пользователем Руконогийдровосек
Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

Один человек с moddb жалуется на вылеты в unification моде. Определить что там юзер накомбайнил сложно, к тому же комбайнеры всегда были очень нестабильны, однако всё равно вылет представляется странным. Скачавшие файл тут вылетов не обнаруживали?

UPD. Там же пожаловались на невозможность запустить не Steam версию игры под этим длл.

Изменено пользователем Руконогийдровосек
Ссылка на комментарий
Поделиться на другие сайты

Доступен simEngine.dll для коробочной версии игры. Ссылка тут и в первом посте. Теперь фикс должен работать и на коробочной версии, однако возможны проблемы (лицензия/пиратка/патч). Просьба всех опробовавших не стесняться и отписаться в случае наличия или отсутствия проблем.

Ссылка на комментарий
Поделиться на другие сайты

Добавлены фиксы для ДК, ВА и ваниллы. Ссылки те же.

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

Ссылка на комментарий
Поделиться на другие сайты

  • 5 недель спустя...

После некоторого количества тестов стало ясно, что, скорее всего, простой замены dll для фикса паффинга может не хватить. Есть несколько проблем, связанных с этим.

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

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

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

Исходя из вышеуказанных проблем можно предложить следующие выходы:

1. Оставить только стим-версию. Но, если разные языковые версии тоже имеют разные dll, то придётся переписать файл под каждую.

2. Сделать программу-установщик, которая делает бэкап и вносит изменения в нужную часть файла. Сами изменения dll-файла минимальны и в обеих версиях игры [ну уж нет]одятся в одном и том же месте (если не говорить о различных дополнениях дова). Этот вариант нравится мне больше.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Выскажусь по поводу различий между тем фиксом, что стоит на тандер моде и этим, поскольку не все люди поняли в чём разница.

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

1. Модельки начинают "проваливаться" друг в друга

2. Когда встречаются две большие модели рукопашников, они сначала подходя друг к другу так, чтобы соприкоснуться физическим размером, а потом "разъезжаются" до стандартного расстояния между ними. Получается своеобразный "поцелуй" перед боем. Такое случается не всегда, но имеет место быть. Всё потому что расстояние между модельками в рукопашной прописано в нескольких параметрах. Если что - они изменяемые, но редактирование этих параметров может здорово подпортить внешний вид игры.

3. Иногда у техники, которую окружила пехота fx стрельбы начинают выворачиваться неестественным образом в попытке выстрелить в юнита, который "провалился" внутрь модели этой техники. Случается не часто и вообще можно этого не заметить.

4. (лично для меня не проблема, но для некоторых - проблема) технику можно окружить пехотой и не дать ей выехать из окружения.

Данный фикс в этой теме позволяет сохранить реальный физический размер техники и монстров, то есть никаких "провалов в модель", "поцелуев" и "вывернутых fx" не будет. Но, окружать технику можно в обоих фиксах. С этим ничего нельзя поделать - либо техника расталкивает пехоту, либо она в ней застревает.

Плюс фикса из тандер мода (опять же не для меня, но для любителей наркомании) в том, что технику с маленьким физическим размером сложнее зажимать в пехоте. В данном фиксе техника зажимается на ура, даже своими собственными отрядами. Я конечно понимаю, что 90% играющих в дов не слышали о слове "контроль" и наслаждаются игрой с 2 апм, но настаивать ни в коем случае не собираюсь, спорить с такими - только время терять.

Надеюсь я ясно дал понять, в чём отличия фиксов и что любителям "техникадалжнадавитьпихоту" и "тупачтотехникаокружацапихотой" тут делать нечего. В 99% стратегий техника не толкает и не давит пехоту. Откуда это пошло - не знаю. Наверно из какой-то сверх-популярной киберспортивной игры. А нет, в киберспорте такого нет, извините.

Ссылка на комментарий
Поделиться на другие сайты

В c&c (вроде во всех) техника давит пехоту. В RA3 пошли дальше, там тяжелая техника давит легкую технику)

Ссылка на комментарий
Поделиться на другие сайты

В dune 2 the battle for arrakis техника давила пехоту. Играл тут, броневоз который не может проехать мимо бегущего впереди раба хаоса, смотрится просто осень плохо, раб пробегает чуть вперёд и едет броневоз и упирается в него, и опять раб чуть вперёд и броневоз в него, как машины в пробке. Так раб ещё и выглядит то так, такой глист со штыками в спине который еле еле двигается, а там сзади такая техника и не может ничего сделать, паровозиком двигаются

Изменено пользователем Vova126
Ссылка на комментарий
Поделиться на другие сайты

Ну в сс нельзя делать давать возможность давить пехоту, это весь "баланс" испортит. В том же c&c ехника в разы дороже пехоты, в сс все иначе.

Ссылка на комментарий
Поделиться на другие сайты

Ну в сс нельзя делать давать возможность давить пехоту, это весь "баланс" испортит. В том же c&c ехника в разы дороже пехоты, в сс все иначе.

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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

Я бы хотел чисто ради лулзов чтобы вся орочья толпа была укатана фаст химерой и мы увидели очередную стену плача о имбовых иг.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...