Jump to content
Korean Random
GPCracker

Улучшенная система прицеливания / Advanced Aiming System

Recommended Posts

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

Подумаю еще на досуге, как можно ее залатать, если это таки возможно.

Пофиксил рентген, и сообщения над миникартой, внизу и над прицелом (пока работаю только с либой, до самого мода еще не добрался).

Осталось два файла - менеджер техники (используется в "контурах" и планируется на "миникарту" после апдейта) и обработчик миникарты. В AAS они не используются, первый в принципе должен еще рабоатать, второй - залатали хотфиксом, так что хрен с ним (пока).

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

  • Upvote 5

Share this post


Link to post

Short link
Share on other sites

Хао всем! Пока наш GPCracker пилит мод не покладая рук, поделюсь с вами модом, который сильно уступает AAS, но выполняет свою главную задачу - захватывает дистанцию до цели (правда в ручном режиме). Ссыль оставлю только с разрешения GPCracker. Пока нет улучшенной системы прицеливания, приходится катать с тем, что есть

Share this post


Link to post

Short link
Share on other sites

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

Ты про BalCalc из соседней темы?

Share this post


Link to post

Short link
Share on other sites

Расложил матрицу коробки на scale, rot, tramsl составляющие. Теперь будем думать, что с этим делать. Rot правильный, все остальное надо фиксить.

  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

GPCracker, где вообще клиент использует этот bounds? Внутри exe?

Ну как-бы получает доступ из питона, но отправляет в модули движка, причем в те классы, которых в документации 15.3.1 нет.

scripts/client/AvatarInputHandler/DynamicCameras/ArcadeCamera.py

def __setModelsToCollideWith(self, vehicles)

 

И улетает в классы

BigWorld.ThirdPersonProvider()

BigWorld.HomingCamera()

 

Ни у кого случаем доки на BW поновее 15.3.1 не завалялось?

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Самое что интересное, у картохи вроде как все ок работает, или они не используют этот bounds... Хотя, зачем тогда слать как аргумент.

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

BigWorld.camera().setDynamicColliders([])
То можно "заглянуть внутрь своего танка". Точнее залететь камерой внутрь корпуса. Без этого кода камера будет не попадать внутрь танка, а отлетать вперед/назад.

Решил по приколу заскейлить в 2 раза bounds, перед тем, как отдавать его в составе коллайдеров... Ничего не изменилось. Такое ощущение, что он вообще не юзается. Даже если в 10 раз увеличить.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Вот самое интересное. Дифф между двумя патчами.

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

 

Upd. Чисто случайно наткнулся. У сервера свои коллижн-модели танков. Теперь понятно "как непробил!?" (шутка). А правда, в чем интересно разница между клиентскими и серверными моделями?

Edited by GPCracker
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

В общем, можно сделать так

JMvZsBb540_thumb.jpgjU5E81DgQ8_thumb.jpg

Но толку от этого все равно пока мало. Считать групповую коробку пока не получается. Но картинка прикольная :)

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

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

Edited by GPCracker
  • Upvote 2

Share this post


Link to post

Short link
Share on other sites

А правда, в чем интересно разница между клиентскими и серверными моделями?

Экипаж/модули

Share this post


Link to post

Short link
Share on other sites

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

CbUb728p69_thumb.jpg Mep159x3wR_thumb.jpg

Таки нашел я способ вычислить матрицу коробочки в динамике. Чисто математические преобразования. Не без костылей правда, но по большому счету там по мелочи, в виде трансляционных матриц вместо точек и минмакс по циклу, поскольку движок сравнивать больше 2х за раз не умеет. Нужно еще будет подвезти оптимизацию, ибо пока только в dev-режиме. Да, для тех, кому очень интересно - коробка динамическая, сама следует за танком, и считается на движке. При желании часть компонентов (например пушку) можно будет выкинуть на мороз из расчета, тем самым немного сократив количество точек в расчете.

Рисовал правда только для своего танка, пока никакого заметного падения ФПС не обнаружил. На досуге запущу для всех союзников, понаблюдаю за результатом. Для противников пока не вариант, ибо нужно контролить засвет, иначе "здравствуйте, я краш вашего клиента".

BoundingBox - Quadratisch. Praktisch. Gut.

Upd. 15 коробок работают стабильно, влияния на ФПС не замечено. Хм... Даже клиент не вылетает, если танк пропадает из засвета. Просто теряет свою коробку где-нить и все.

Edited by GPCracker
  • Upvote 5

Share this post


Link to post

Short link
Share on other sites

 

 

Upd. Чисто случайно наткнулся. У сервера свои коллижн-модели танков. Теперь понятно "как непробил!?" (шутка). А правда, в чем интересно разница между клиентскими и серверными моделями?

 

Идентичны. Это просто издержки технологии ВГ. Они как бы работают с клиентом, в котором есть всё и многое. А затем вырезают от туда лишнее, и получается уже клиент для игроков.


 

 

Рисовал правда только для своего танка, пока никакого заметного падения ФПС не обнаружил.

 

Берешь Fraps прогоняешь с ним реплей без мода и пишешь в лог фпс, затем повторяешь уже с модом. После чего строишь графики и видишь результат.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Берешь Fraps прогоняешь с ним реплей без мода и пишешь в лог фпс, затем повторяешь уже с модом. После чего строишь графики и видишь результат.

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

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

ФПС больше на эффектах проседает, чем на расчете коробочек.

Share this post


Link to post

Short link
Share on other sites

В общем, продолжение веселых скринов про коробочку.

Пока сие создается при помощи некоторых костылей со смещением (скорее всего проблема связана с неправильным экспортом модельки, уточняю), но вообще подобный режим планируется как замена стандартной "коробочки" в местах, где важна производительность - коллижн тест (True/False) по сфере выполняется значительно быстрее.

X6j9W4Yc59_thumb.jpg aU5czkQMt5_thumb.jpg

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

Попутно проапгрейдил пару внутренних классов AAS. Кстати, существует весьма немаленькая вероятность, что первые версии после обновы будут вообще без GUI, ибо есть некоторые вопросы, по поводу того, как его правильно прикрутить в новых условиях.

Share this post


Link to post

Short link
Share on other sites

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

При помощи отладчика запустил все это дело на реплее. Результаты в общих чертах такие.

Note: Буферизацию расчета матрикс провадера коробочки "от засвета до отсвета" пока не пилил, он в текущем виде считается (точнее собирается набором функций строк в 50 кода) каждый раз при запросе, что не есть гуд (жрет ресурсы, сколько - пока не ясно, но полагаю, что существенно), но для отладки сойдет.

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

Note: Сканер целей работает в режиме непрерывного цикла, периодически запрашивает информацию у различных сканирующих модулей. В тестовом режиме (и скорее всего в релизе будет так же) интервал опроса 0.04 сек без учета времени выполнения запроса (интервал между стартами запросов).

Note: Для тех, кто в танке. Повышение интервала опроса сканеров уменьшает их частоту, влияние сканеров на ФПС при этом значительно снижается. Но при если частота запросов будет меньше 24-25 раз/сек, то сканер будет работать в "импульсном" режиме, повышается шанс его несрабатывания в случаях, когда цель была обозначена на короткое время.

 

Нормальный режим (наведение непосредственно на танк, при котором подсвечивается контур) при указанной частоте на ФПС заметного влияния не оказывает.

Рентген (наведение непосредственно на танк, но находящийся за каким-то непрозрачным препятствием, контур не подсвечивается) - снижения ФПС тоже не замечено.

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

Эллипс-сфера в тех же условиях, что и коробочка (по сути тот же небуферизованный MP, округление в худшую сторону, те же 15 танков), дает падение со 120 до 105. Опять же пока не ясно, сколько из этого падения вытащит оптимизация.

 

З.Ы. Это всего лишь ориентировочный отладочный сравнительный тест с целью проверки работоспособности кода.

З.Ы.Ы. "Эллипс-сфера" дает весьма ощутимый выигрыш в скорости вычислений, но при этом ничем не хуже "коробочки" при захвате цели. Скрины того и другого (с единичным скейлом, при захвате используется обычно 1,5+) есть в постах выше.

Share this post


Link to post

Short link
Share on other sites

Вот самое интересное. Дифф между двумя патчами.

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

 

Upd. Чисто случайно наткнулся. У сервера свои коллижн-модели танков. Теперь понятно "как непробил!?" (шутка). А правда, в чем интересно разница между клиентскими и серверными моделями?

а может как и серверный прицел - расчёт движения и положения "коробки" серверной чуток отличается от клиентского. ну, образно говоря, на пол-сантиметра. и вот, едет, допустим, серверная "коробка" и единовременно едет клиентская "коробка". а в момент засвета серверная чутка уезжает вперёд или стопорится (гусли), а клиентская более тормознутая, получает информацию о рассинхроне и проходит n миллисекунд, чтобы сопоставить координаты клиентской и серверной "коробок" и синхронизировать их положение для клиента по серверным данным. может, потому и лампа с задержкой в три секунды - чисто как маяк того, что возможно будет маааахонький такой рассинхрон . отсюда и непробилы-рикошеты, как на том офф(!) видео с рикошетом кумуля от башни грилля (sic!) :-) а если лампа срабатывала бы сразу - вывод логичен - да у них все сервак бы упал от такого количества синхронизаций. кстати, как то раз это и произошло, когда маусы в одном бою стреляли как барабаны - отключилась служба мониторинга перезарядки на серваке. движку-то сто лет в обед, малохольный он...

чисто имхо! )) но зато писча для размышлений)

Edited by iogami

Share this post


Link to post

Short link
Share on other sites

а может как и серверный прицел - расчёт движения и положения "коробки" серверной чуток отличается от клиентского.

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

Коробка в оригинальном понимании - это всего лишь умноженная слева на статическую матрицу матрица vehicle.

В текущей (по крайней мере моей) реализации коробка еще и обновляется в соответствии с изменением углов башни и орудия техники.

Понятия "серверная коробка" не существует в принципе.

Потихоньку пересобираю модик, попутно исправляя некоторые косяки прошлых версий. Различных нововведений так-то солидно получается, если брать все в куче. Из самого интересного, это наверное возможность произвольно (ну не совсем произвольно конечно, соблюдая правила, само собой) делить конфиг на файлы и переназначать секции, возможность выноса части строк в файлы локализации (упрощение конфига в некоторых местах, плюс за счет этого можно избавиться от некоторых не особо прикольных костылей с поддержкой HTML).

Ну а так из нововведений будет то, что захват целей полностью выделен в модули TargetInfo и TargetScanner, которые теперь будут пилотироваться сами по себе, вне зависимости от остального. У последнего получается весьма приличное количество параметров, наиболее интересные вынес в конфиг. Модуль теперь полностью глобальный, и его работа от режима прицеливания больше никак не зависит. Многие модули, которые так или иначе зависели от сканеров, теперь перебазированы на TI. То-есть цель теперь будет не искаться сканерами в приватном порядке в соответствии с настройками, а просто тянуться из TargetInfo.

По сути осталось допилить несколько хуков, решить вопрос с костылем по части провала сведения, ну и разрулить с GUI, последнее самая масштабная задача.

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

По науке, надо бы флешку запилить... но не знаю, как получится. Главное, чтобы сама система завелась, а там уже будем думать.

  • Upvote 5

Share this post


Link to post

Short link
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.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...