Форумы Серверы Суспільство
Игры Серверы VBIOS General Soft & Hard Увлечения А поговорить... Культура Полезная информация Межигір'я Чат

Пользователь Сообщение: Теория большого рега        (Тема#75081)
Desert Eagle 
по епичней
Desert Eagle
: Blondies WTF?
С нами с 23.05.10
Посты: 3584
16.09.13 14:59 Ukraine #1624242
Дабы не было, лишних вопросов и тем по этому поводу. Я решил создать тему здесь, на вбиосе.

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

Итак, что же такое этот самый "рег", о котором так много говорят?
На игровом сленге это некий процент засчитанных сервером попаданий в цель (от англ. Hit registration\Hit detection)
Выражение "хороший рег" говорит о высоком проценте ожидаемых попаданий, в свою очередь "плохой рег", обозначает обратную ситуацию, когда попадание по всем признакам должно было произойти, но этого не случилось.
Но прежде чем говорить от чего зависит "рег", давайте освежим в памяти баллистику геймплея BF2.

HITBOX



Хитбокс (hitbox - примитивный каркас модели противника, попадания в который засчитываются* и наносят урон)
Различные зоны хитбокса имеют разные вполне очевидные показатели урона при попадании, но нам интересна его физика* Многие знают о присутствии bulletdrop (параболической траектории пули), но это отнюдь не главный фактор отклонения в BF2. У каждой единицы оружия есть коэффициент разброса, т.е. расстояние на которое может отклоняться пуля от полета по прямой, значение просчитывается по "формуле девиации" со значениями из "таблицы отклонений" на сервере, в результате мы имеем погрешность, с которой сейчас полетит данная конкретная пуля. И хоть радиус разброса захардкорен в таблице параметров, точка попадания в этих пределах выглядит невероятным рандомом. Этот "рандом" математически предсказуем, из-за чего стало возможно появление "сверхточных" аимботов и все же с точки зрения человеческого восприятия, баллистика в battlefield это нечто ужасное.


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

Коэффициент разброса данной модели оружия
M24
ObjectTemplate.deviation.setFireDev 3.5 2 0.5
ObjectTemplate.deviation.minDev 5
ObjectTemplate.deviation.setTurnDev 0 0 0 0
ObjectTemplate.deviation.setSpeedDev 3 0.2 0.2 1
ObjectTemplate.deviation.setMiscDev 2.5 2.5 0.2
ObjectTemplate.deviation.devModStand 2
ObjectTemplate.deviation.devModCrouch 1.5
ObjectTemplate.deviation.devModLie 0.8
ObjectTemplate.deviation.devModZoom 0.005

Так в конфигурационных файлах сервера (и клиента) прописаны параметры "точности" винтовки M24
Формула расчета отклонения в bf2 имеет упрощенно такой вид (mindev*(mindevmodzoom)+firedev+speeddev+turndev+miscdev)*devmodzoom*stancemod, учитывая множество факторов, влияющих на разброс стрельбы (также см. коментарии к таблице характеристик оружия)

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


В зависимости от дистанции выстрела в штатной ситуации нужно стрелять в проекции C-E
Вся "прелесть" ситуации в том, что хитбокс противника не всегда находится там, где он должен быть и можно учесть абсолютно все внутриигровые факторы и все равно сделать промах! Хитбокс может находится и на проекции А

По факту, анимация попадания на клиенте верна лишь в случае одиночной игры (singleplayer mode, когда клиент = сервер), во всех остальных случаях это лишь неинформативный визуальный эффект отрисованный вашим компьютером. Почему? Вернемся к факторам игрового рега.

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

ПИНГ/PING


Пинг (Лаг)- как многие не совсем корректно полагают, и есть единственный виновник плохого "рега", однако по факту пинг это RTT (Round Trip Time) двусторонние задержки по маршруту, они дают понимание лишь о некой "предрасположенности", являясь своеобразной "виртуальной линейкой". Большой пинг часто, но не всегда = "плохой рег". Именно эту задержку компенсирует сервер при перерасчетах, зависеть пинг может от скорости, типа соединения, загруженности каналов на всём маршруте клиент <--> сервер, загруженности машины клиента\сервера. Чем меньше пинг игрока, тем ближе его видение игрового поля к тому как оно выглядит в реальности* и это важный, хотя и субъективный момент.

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

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


UDP (User Datagram Protocol) используется большинством многопользовательских шутеров из-за большей скорости работы, однако особенностью протокола является простая модель передачи данных без упорядочивания и гарантии целостности, подтверждение получения также отсутствуют. Что это значит для нас на практике?
Возьмем простое и понятное понятие "выстрел" - это всего один пакет, отправленный на сервер, если он не был доставлен, или был поврежден в процессе доставки, сервер о вашем выстреле ничего не знает итд итп Это в очередной раз говорит нам о силе влияния качественного соединения на геймплей.

Потери пакетов - если они значительны, это практически приговор. Множество точных решающих выстрелов было затеряно в "плохих" узлах на маршрутах до серверов, сотни неразорвавшихся гранат было брошено и бесчисленное множество техники разбито.
Чем больше потери, тем больше экстраполированных событий в вашем видении игрового поля.
Без лишних слов, packet loss - злейший враг "рега".

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

BER (Bit Error Ratio) - вероятность\частота ошибок, выражается в количестве ошибочных битов от общего числа принятых. Стоит на втором месте в списке основных проблем передачи данных в сетях интернет и нашем реитинге в частности.
определить процент "битых" пакетов приходящих на сервер вы не сможете (это возможно сделать лишь на стороне самого сервера), все что в ваших силах, при должном уровне знаний,- проанализировать качество входящего трафика, изучив параметры пакетов в подходящем анализаторе.

Инструментарий


Традиционно одной из лучших утилит для визуализации и анализа в реальном времени остается pingplotter
Пинг, джиттер, потери пакетов на каждом узле маршрутов, все наглядно и просто в использовании.

Сетевая часть движка BATTLEFIELD
Ну, в целом разобрались, но я предлагаю пойти дальше и узнать "почему"

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


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


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

Предсказание ввода.
Предположим у вас пинг 120, вы жмете "W" и информация об этом уходит на сервер, там она обрабатывается и модель игрока перемещается вперед в игровом пространстве, что и увидят остальные игроки в следующем "снимке игрового мира". Получается, что и сам игрок увидит свое движение более чем через 120мс, и эта задерка будет касаться любых его действий, значительно затрудняя игру. Предсказание ввода на клиенте это способ убрать эту задержку, вместо того, чтобы ждать, пока сервер обновит положение модели, клиентская часть игры просто просчитывает (аналогично серверу) результат движения и перемещает модель на новые координаты немедленно (для сервера игрок все еще находится на старом месте).
Через 150мс+ с сервера приходит обновленный "снимок игрового мира", предсказанные координаты сравниваются с серверными и при необходимости позиция модели корректируется (что бывает достаточно редко).

Компенсация задержки
Скажем игрок сделал выстрел по цели в 12:00:00.00 Это действие было помещено в пакет и отправлено на сервер. Пока данный пакет находился в пути, сервер продолжал просчитывать игровой мир и цель могла изменить свое местоположение. Пакет достиг сервера в 12:00:00.12, однако попадание не засчитается, даже если игрок сделал выстрел "точно в цель".
Именно эти ошибки и призвана исправлять система компенсация задержки, она хранит историю недавних координат всех объектов и игроков в буфере ~1с и пересчитывает события игрового мира для каждого игрока с учетом его задержки (пинга)

Автоматический режим огня
первые 3 пули "считаются как одна", т.е. отправляются в одном пакете, как одиночный выстрел + автоматически просчитанные исходя из характеристик оружия пуля 2 и 3.
В одиночном режиме каждая пуля является независимым объектом и отсылается отдельным пакетом.

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

Тут еще была "портянка" анализа зависимости успеха игрока в тактических FPS (First Person Shooter - шутер от первого лица) и BF2 в частности, но это все же совсем другая история...

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

©

Прикрепления: bf_hitbox.png (19.06 KB) 109 Просмотр(ы)
Прикрепления: bf2_aim_.png (21.79 KB) 99 Просмотр(ы)
Прикрепления: m24.jpg (3.72 KB) 86 Просмотр(ы)
Прикрепления: bf2_run.png (9.85 KB) 84 Просмотр(ы)
Прикрепления: bf2_ping.png (1.03 KB) 87 Просмотр(ы)
Прикрепления: bf2_packet.png (4 KB) 86 Просмотр(ы)
Прикрепления: bf2_pingplotter.png (56.1 KB) 94 Просмотр(ы)
Прикрепления: bf2_networking.png (4.59 KB) 95 Просмотр(ы)
Прикрепления: bf2_ext_int.png (6.31 KB) 103 Просмотр(ы)

drymchuk 
майор
drymchuk
Возраст: 34
: Poland
С нами с 24.09.11
Посты: 1237
16.09.13 15:35 [Re: Desert Eagle] Poland #1624249
Хорошая тема
KillMachine UA 
генералиссимус
KillMachine UA
Возраст: 44
: Київ
С нами с 10.12.07
Посты: 25376
16.09.13 15:58 [Re: drymchuk] Ukraine #1624252
много букв )
ROKO 
белка-маньяк
ROKO
Возраст: 37
: UA, Kiev
С нами с 21.03.06
Посты: 14770
16.09.13 16:07 [Re: KillMachine UA] Ukraine #1624258
Так-с, напишите что надо сделать чтобы рег был как у Лорда_Лехи, Ультимана и т.д.
AnarchistPANICS 
майор
AnarchistPANICS
С нами с 14.08.08
Посты: 1160
16.09.13 16:17 [Re: ROKO] Ukraine #1624266
нужно ровнять руки
black2white 
просто тапок
black2white
Возраст: 15
С нами с 10.08.09
Посты: 3008
16.09.13 17:12 [Re: AnarchistPANICS] Russian Federation #1624287
а как объяснить, когда моделька игрока выполняет действия, которые игрок не делал?
KillMachine UA 
генералиссимус
KillMachine UA
Возраст: 44
: Київ
С нами с 10.12.07
Посты: 25376
16.09.13 17:25 [Re: black2white] Ukraine #1624291
восстание компьютеров?
Leman 
лейтенант
Leman
С нами с 22.05.13
Посты: 421
16.09.13 17:38 [Re: KillMachine UA] Belarus #1624297
По параболе только танковые снаряды летают в ваниле. Пули имеют только скорость, и летят по прямой.
ROKO 
белка-маньяк
ROKO
Возраст: 37
: UA, Kiev
С нами с 21.03.06
Посты: 14770
16.09.13 17:40 [Re: Leman] Ukraine #1624298
не поверишь, но пули тоже так летают, хотя многие о этом не знают, особенно горе-снайперы
ROKO 
белка-маньяк
ROKO
Возраст: 37
: UA, Kiev
С нами с 21.03.06
Посты: 14770
16.09.13 17:41 [Re: AnarchistPANICS] Ukraine #1624299
  • AnarchistPANICS :
нужно ровнять руки :)

ровнял кувалдой, дверями...не помогло...
а вот алкоголь немного помогает)
UnPunished_VB_BF2 
майор
UnPunished_VB_BF2
С нами с 16.09.08
Посты: 1770
16.09.13 17:41 [Re: Leman] Ukraine #1624300
  • Leman :
По параболе только танковые снаряды летают в ваниле. Пули имеют только скорость, и летят по прямой.

да? а у снайпера тоже?
Untraceable 
капитан
Untraceable
: Киев
С нами с 23.09.12
Посты: 782
16.09.13 17:48 [Re: UnPunished_VB_BF2] Ukraine #1624303
можно заметить параболическую траекторию(и то не явную) только у саппорта на дальние расстояния (на картах с малым туманом-хорошим обзором),снайпер - куда стрельнул туда попал(в стоячие ),стрелять выше нужно только на хз каком расстояние...На инфантри в принципе нету где такое делать(не те карты)...
KillMachine UA 
генералиссимус
KillMachine UA
Возраст: 44
: Київ
С нами с 10.12.07
Посты: 25376
16.09.13 18:02 [Re: Untraceable] Ukraine #1624308
у м95, например, пули очень тяжёлые, и заметно падают

а у л96 просто прицел удобнее, и не так заметно
Vagrant 
ефрейтор
Vagrant
С нами с 16.09.13
Посты: 57
16.09.13 18:27 [Re: Untraceable] Ukraine #1624320
  • цитата:
Так-с, напишите что надо сделать чтобы рег был как...

Пинг должен быть стабильный,ну и,естественно,потерь пакетов быть не должно..Когда играл в BF2142 пинг был 100 +/-20,но если в течении матча держался стабильно,скажем на 120мс,то рег был в норме..
  • Untraceable :
На инфантри в принципе нету где такое делать(не те карты)...
По моему,густая дымка только на Карканде..
"Dalian Plant" дистанция между флагами "Construction Site" и "Reactors" 250 м.
Если стрелять из "Тип 88" c позиции TOW на реакторах, по бойцу залегшему на 2-м этаже КС,то целясь прямо в бойца пуля уйдёт ниже перекрытия; "положив" горизонтальную планку прицела на голову бойцу,пуля попадёт в перекрытие,а взяв на 2 пикселя выше....бла-бла-бла тут и так все это знают....
Но вот после КоДа или мыл.рушного недоразумения под названием "Ворфейс"(надеюсь,за упоминание этой гадости тут не банят) баллистика батлы требует время на адаптацию..
Aletonik 
новичок
С нами с 27.11.09
Посты: 47
16.09.13 18:51 [Re: Desert Eagle] Ukraine #1624339
  • Desert Eagle :

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

©


И как на основе вышеизложенного я могу получить какое-либо преимущество? Разве что менять провайдера? - как оригинально.
l.bak.l 
лена
l.bak.l
Возраст: 30
С нами с 23.01.13
Посты: 1004
16.09.13 19:56 [Re: Aletonik] Ukraine #1624362
ты можиш получить преимущество играя кв фв, довести себя до уровня высокого, познакомишся с пацанами тебе еще апгрейд зделают) но уметь играть без апгрейда это круче и сложней) к примеру играть без спота прикольно)
Accident 
мне пофиг, мне нравиться
Accident
С нами с 16.04.07
Посты: 16700
16.09.13 20:34 [Re: l.bak.l] Ukraine #1624377
  • l.bak.l :
ты можиш (можешь) получить преимущество играя кв фв, довести себя до уровня высокого, познакомишся (познакомишься) с пацанами тебе еще апгрейд (апдейт) зделают (сделают)) но уметь играть без апгрейда (апдейта) это круче и сложней) к примеру играть без спота прикольно)



Садись, кол!
Untraceable 
капитан
Untraceable
: Киев
С нами с 23.09.12
Посты: 782
16.09.13 20:49 [Re: Accident] Ukraine #1624382
  • Accident :
  • l.bak.l :
ты можиш (можешь) получить преимущество играя кв фв, довести себя до уровня высокого, познакомишся (познакомишься) с пацанами тебе еще апгрейд (апдейт) зделают (сделают)) но уметь играть без апгрейда (апдейта) это круче и сложней) к примеру играть без спота прикольно)



Садись, кол!

Апргрейт можно было не трогать
P.S
Тем кто умеет спотать-ничего не нужно!!!
Turbo3D 
новичок
Turbo3D
С нами с 17.09.13
Посты: 34
17.09.13 15:14 [Re: Untraceable] Ukraine #1624697
Рег, Хитбокс нужно чувствовать! у каждого в связи с различием интернет провайдеров и в частности самого оборудования он разный. Со временем ты сам уже начинаешь понимать на сколько выше - ниже, правее - левее тебе нужно стрелять! Когда люди играют большое количество времени и все равно не знают как попасть в цель... это уже руки (простите) кривые.
Icon Legend Права Настройки темы
Распечатать тему


1674 Просмотры
Реклама
130 сейчас в онлайне
0 пользователей () и 0 скрытых, а также 130 гостей сейчас онлайн.
VBIOS Version 3.0 FINAL | ©1999-2025
Execution time: 1.67 seconds.   Total Queries: 79   Zlib сжатие вкл.
All times are (GMT+2.0). Current time is 18:08
Top