Jump to content
Korean Random

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


GPCracker

Recommended Posts

Гнать точку впереди танка - это называется "хана твоему ФПС". На словах все Львы Толстые...

Едиснственный реальный вариант - шкала в прицеле. А это уже флэш. Обдумывалось раз сто, и почти всеми скриптовиками)

 

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

 

Да какой флэш, дядя, BW GUI вам в помощь, шкалу запилить без проблем. Флэш в клиенте прикручен исключительно для красивостей, а не потому что BW GUI чего-то там не позволяет реализовать.

Link to comment
Short link
Share on other sites

Да какой флэш, дядя, BW GUI вам в помощь, шкалу запилить без проблем. Флэш в клиенте прикручен исключительно для красивостей, а не потому что BW GUI чего-то там не позволяет реализовать.

По реалу бы просто отметки в прицеле сделать, которые будут отодвигаться от центра прицела при ускорении цели и находиться в центре для неподвижной цели.
Link to comment
Short link
Share on other sites

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

 

Вот обычный экранный бокс - SimpleGUIBox. Координаты от цента экрана. Засунуть в него можно любую картинку dds с прозрачностью. И двигать её можно по всему экрану.

    GUI_TEXTLABLES['i1'] = GUI.Simple( 'objects/i1.dds' )
    GUI_TEXTLABLES['i1'].widthMode = GUI_TEXTLABLES['i1'].heightMode = \
    GUI_TEXTLABLES['i1'].verticalPositionMode = GUI_TEXTLABLES['i1'].horizontalPositionMode = 'PIXEL'
    GUI_TEXTLABLES['i1'].horizontalAnchor = 'LEFT'
    GUI_TEXTLABLES['i1'].size = (150, 100)
    GUI.addRoot( GUI_TEXTLABLES['i1'] )
    GUI_TEXTLABLES['i1'].position = (100, 500, 0.15)
    GUI_TEXTLABLES['i1'].visible = False
Link to comment
Short link
Share on other sites

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

Link to comment
Short link
Share on other sites

Маркер упреждения действительно очень подвижен.

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

Edited by MakcT40
Link to comment
Short link
Share on other sites

снаряд может уйти в "белый свет".

Ты имеешь в виду перелет? Были у меня случаи метров с 200-300 снимал на КВ2 светляков) Основная проблема - как раз рассчитать упреждение и маршрут цели, проблему с перелетом решает мод)
Edited by GPCracker
Link to comment
Short link
Share on other sites

Вот обычный экранный бокс - SimpleGUIBox. Координаты от цента экрана. Засунуть в него можно любую картинку dds с прозрачностью. И двигать её можно по всему экрану.

@StranikS_Scan, у меня картинка получается полупрозрачная.... а как сделать ее полностью непрозрачной? В альфа-каналах вроде все норм, пробовал даже BMP ему подкинуть - то же самое, полупрозрачное изображение получается...
Link to comment
Short link
Share on other sites

Попробуй добавить строку (в терминах примера от StranikS_Scan): GUI_TEXTLABLES['i1'].materialFX = 'BLEND'

В точку! Спасибо. Разобрался с альфа-каналом заодно)

post-21078-0-23620500-1415741451_thumb.jpg

Upd. Нашел способ привязки GUI к глобальным координатам. Надо сделать текстурку маркера и немного оптимизировать код.

Upd 2. Есть прототип маркера упреждения. Сильно дерганый получается. Нужно оптимизировать) Плюс нужно тестировать на точность. Доделывать еще много(

Edited by GPCracker
  • Upvote 1
Link to comment
Short link
Share on other sites

  • 3 weeks later...

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

На конце вектора что то типа кружка с перекрестием.

Хотя получится как в самолетах.

 

Можно ли получить прототип для тестирования?

Edited by Scharfhobel
Link to comment
Short link
Share on other sites

Нашел способ привязки GUI к глобальным координатам.

BoundingBoxGUIComponent или что-то другое имел ввиду? 

 

 

Хотя получится как в самолетах.

 

А кстати то как там маркер сделан не так уж и плохо выглядит. Круг и линия. 

Edited by StranikS_Scan
Link to comment
Short link
Share on other sites

BoundingBoxGUIComponent или что-то другое имел ввиду?

У тебя рабочего примерчика не завалялось на BoundingBoxGUIComponent? А то разгребать вручную как-то лень)

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

BoundingBox, как я понимаю, автоматически привязывается к модели, по логике он не должен так сильно дергаться, обновление можно производить реже) Вот только как стабилизировать движение танка...

Можно ли получить прототип для тестирования?

Пока все работает "с пинка" и с мусором в лог, ничего еще толком не оптимизировано, так что пока об общем тестировании говорить рановато.

А кстати то как там маркер сделан не так уж и плохо выглядит. Круг и линия.

у меня пока для этих целей маленький синий ромбик... но в принципе там любую текстурку на маркер поставить можно.

 

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

Edited by GPCracker
Link to comment
Short link
Share on other sites

У тебя рабочего примерчика не завалялось

 

Ладно, шило в мешке все равно не утаить, вот смотри пример, это то ли из хамелеона, то ли из horn или harm, забыл который разтудыть его в качель:

   I1 = GUI.BoundingBox ('objects/transparent.dds' )
   I1.size = (0.05 , 0.05 )
   I1.my_string = GUI.Text ('\cBFBFBFFF;' + unicode (BigWorld.player ().arena.vehicles.get (vehID ) ['vehicleType' ].type.shortUserString , 'utf-8' ) )
   I1.my_string.colourFormatting = True
   I1.my_string.colour = (255 , 0 , 0 , 255 )
   I1.my_string.font = 'default_small.font'
   I1.my_string.horizontalPositionMode = I1.my_string.verticalPositionMode = 'CLIP'
   I1.my_string.widthMode = I1.my_string.heightMode = 'PIXEL'
   I1.my_string.verticalAnchor = 'CENTER'
   I1.my_string.horizontalAnchor = 'CENTER'
   I1.source = self._StippleManager__stippleToAddDescs [vehID ] [0 ].bounds
   I1.my_string.position = (0.5 , 0.75 , 0 )
   GUI.addRoot (I1 )

 Поясняю, свойство bounds есть у любой модели например entity(vehicle.id).appearance.modelsDesc['turret']['model'].bounds. Развлекайся ))))))

 

BoundingBox, как я понимаю, автоматически привязывается к модели, по логике он не должен так сильно дергаться, обновление можно производить реже)

 

К чему привяжешь так дергаться и будет. 

Edited by StranikS_Scan
Link to comment
Short link
Share on other sites

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

SystemPowerStatus.zip

Закидываем в папку с игрой, в ярлык для танков дописываем в начале "%WOTDir%\SystemPowerStatus.pyw"

Если запускать ярлык при работе от батареи, вываливается сообщение.

Edited by GPCracker
  • Upvote 1
Link to comment
Short link
Share on other sites

В точку! Спасибо. Разобрался с альфа-каналом заодно)

attachicon.gifshot_002.jpg

Upd. Нашел способ привязки GUI к глобальным координатам. Надо сделать текстурку маркера и немного оптимизировать код.

Upd 2. Есть прототип маркера упреждения. Сильно дерганый получается. Нужно оптимизировать) Плюс нужно тестировать на точность. Доделывать еще много(

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

Link to comment
Short link
Share on other sites

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

Не нужно путать некоторые вещи. Flash - это все красивости, анимации GUI и т.д. Перемещение и размещение флэша на экране - это уже не флэш, а Scaleform. Если у тебя прицел инертный (именно прицел, а не сведение) (реагирует не сразу, тормозит) - посмотри FPS, скорее всего процессор или видеокарта не справляется с нагрузкой. ЕМНИП, Scaleform жрет достаточно много ресурсов (сравни FPS с графическим интерфейсом и без (кнопка V), там разница где-то в 1,5-2 раза будет точно)

 

Что касается дергания маркера упреждения, это возникает по двум причинам.

 

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

 

2. Положение маркера в пространстве (он считается ИМЕННО в пространстве, а потом уже проецируется на экран) зависит не только от координат танка, но и от его скорости, учитывая первый пункт, т.к. обе базовые величины (координаты и вектор скорости) "дерганые", то что ты хочешь от маркера?

  • Upvote 1
Link to comment
Short link
Share on other sites

Обновился список запрещённых модов.

12. Модификация, изменяющая алгоритм работы автоприцела

Данная модификация меняет поведение автоприцела, меняя как точку прицеливания, так и/или сам алгоритм выбора точки прицеливания.

Преимущества игроков, у которых стоит данная модификация:

Упрощает ведение огня по определённым модулям;

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

Данный мод НИКАК не затрагивает алгоритм автоприцела. Мод вообще не трогает автоприцел.

Максимум что будет в ближайших патчах - это захват цели в автоприцел рентгеном, то есть наводишь прицел на примерное место расположения танка (ориентируясь по маркеру с ХП танка) нажимаешь правую мыши, если попал - цель захватывается. Ничего читерного тут нет. Если это кому и облегчит жизнь, то только ЛТ-водам, кому и так непросто живется...

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

 

А если конкретно, бан направлен на этот мод

  • Upvote 2
Link to comment
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...