Комментарии 47
Оу… Как-то оно немного сумбурно. Но интересно почитать было.
Когда-то давно, когда играл в Ил-2 интересовался алгоритмом который там лежал в основе. Он позволял где-то 200-300 миллисекунд от пинга компенсировать по положению (модель движения самолёта легко рассчитать). А вот стрельба никак не компенсировалась. И это очень неплохо чувствовалось. При большом пинге все рефлексы сходили сума…
Не так давно нечто подобное добавили в движок Real Virtuality. Вот тут есть статейка в блоге разработчиков, там есть ещё ссылки на другие статьи, может кому будет интересно.
Спасибо.
В версии 1.60, если я верно понял, это всё уже есть.
Ещё б они самолёты починили…
Да, в 1.60 добавили это для сингл- и мультиплеера. А что с самолётами?
В 1.60 перепилили их физическую модель: добавили экранный эффект и ещё что-то (как написано в чейнджлоге). Но Су-25, например, всё равно требуется полтора километра разбега для отрыва (вместо реальных 500-700 метров).
Этот экранный эффект является минорным изменением, и влияет по большей части только на вертолёты. А флайт-модель Су-25 (да и всех остальных самолётов) там далека от реальности по всем параметрам.
Статья интересная, а перевод не понравился. Я на половине не выдержал и ушел читать оригинал.
Ох, играл я в этот бэтлфилд 3, если пули и настоящие, то я так понял, что точка попадания просчитывается в момент выстрела, но попадает она с задержкой, часто бывает, что уже забежал за укрытие и через пару секунд умираешь. Имхо на бумаге разработчики сказали одно, в реальности реализовали совсем другое.

Даже если учесть пинг в 100мс, пусть коллизия составит двойное время, 0.2 секунды, это время никак я бы заметить не смог, а на то что убивают уже за стенкой ругаются все с кем играл.
Ниразу не попадал в такую ситуацию когда играл на ps3. В CoD:MW3, да, выстрелил всю обоиму, а киллкам показала, что ты вообще не стрелял, а любовался небом. В BF3 задержка видна только ну при очень больших проблемах с сетью (персонаж «прыгает» с места на место во время бега.
Именно потому что на PS3 и играли — они систему заточили под консоли, а при портировании на пк оказалось что такой фокус не прокатит) Сколько бы они не уверяли что ПК был целевой платформой.
В BF3 система попадание обсчитывается на клиенте — из-за этого система попаданий очень сильно страдает. Можно убить человека выстрелив перед ним, или напротив — позади него. Зачастую умираешь когда уже повернул за угол относительно стреляющего.

DICE уже устали читать треды на форуме по этой проблеме
Не замечал подобного, обычно наоборот — получается ускакать за угол и отсидеться, восстанавливая здоровье.
Играю только в Eвропе (Германия, Швеция, Нидерланды), правда в обычный CQ64 — возможно там оно не так заметно.
На открытых картах вроже каспийки — да, не так заметно, а вот на сенне\метро, например, такое сплошь и рядом.
Еще что часто бывает — из-за разницы в задержке у игроков — открывает огонь по врагу одновременно с ним(или даже раньше него на мгновение) — он тебя убивает, скажем у него вышел хэдшот. Тебе показывают кто тебя убил — и ты видишь что у него 100% hp, хотя ты в него пол обоимы всадил с 5 метров)
Так точно: выстрелил, забежал за угол, умер :) Бывает довольно часто, особенно при интенсивной стрельбе по тебе)
Вы когда играли?
Сейчас после патчей, появилась такая вот фича как — «лагокомпенсация» в настройках игры на сервере.
Выставляем на полную — и вауля — то, что вы описали, будет видно только на серверах с пингом 200+.

Нормальные люди стараются играть при пинге
Лагокомпенсация помогает временами, но слабо. Да и как описано официально, это увеличивает трафик, можно сделать некоторый вывод, что при увеличении размера пакетов, да и вообще объема данных, пинг может подрасти, что опять же приведет к лагам. У меня все зависит от маршрута, на каких то серваках стало лучше, на других ничего не изменилось.
Пересчет на клиенте — это прекрасно.
Профессиональные игроки в BF это не те, кто научился всем финтам и прелестям игры, а те, кто научился использовать систему попаданий. Сколько наблюдал за профи все используют свою систему.
Обычный пример: посадите интернет игрока BF поиграть в локальной сети и увидите очень интересную картину, он будет очень косым.

Поэтому игроки предпочитают изменять конфиги клиента(или использовать сторонние проги) чтобы не использовать систему попаданий, иначе они потом будут косыми.
Не знаю про bf3. Но могу сказать, что в battlefield 2 для компенсации пинга применяет экстраполяцию. Причем самую простую, когда все объекты продолжают свое движение без изменения скорости и направления. Поэтому при лагах из-за этого случаются казусы.
BF3 лучшая реализация лагокомпенсации на сегодняшний день — при задержке в 60-80 мс ощущения как при 5-10 в TF2. Хотя и в BF2 было неплохо — можно играть на серверах в США после некоторой адаптации.
НЛО прилетело и опубликовало эту надпись здесь
Конечно (в общем) время отклика сильно уменьшилось за последнее время, однако мы сейчас уже подбираемся к чисто физическим ограничениям, а проблема все еще никуда не делась. Ведь сейчас мы взаимодействуем с людьми по всему миру, несмотря на то, что раньше сообщества не были так раздроблены.

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

Получить пинги с Германией ниже этого значения невозможно чисто теоретически.
Возможно, если канал будет прямой и без ретрансмиттеров :)
Спасибо автору и переводчику!
Интересная статья получилась. С удовольствием прочел бы продолжение с чуть большим углублением в конкретные алгоритмы!

Я правильно понял из последних абзацев, что определение столкновений точно вычисляется на стороне клиента, а на сервера проверяется это столкновение с большей погрешностью?
>>Время жизни каждой пули около 1,5 секунд, а для пули, выпущенной из снайперской винтовки, – целых пять секунд.

А чего так много-то?
Чтобы стрелять через всю карту, на дальность, например, 1-1.5км
Ну, через всю карту — это даже больше чем 1,5км :D Потому у снайперок время жизни еще выше.
судя по самому длинному хедшоту в бф3, диаметр самой большой карты карты 3978.42м
хотя стоит отметить что это делалось не винтовкой а радиоуправляемым ОВУ-роботом. Вроде со снайперской около 2км рекорд
да, около 2х. + стоит учитывать что хэд можно и с истребителя поставить)
и я даже не сомневаюсь что на ютубе дофига видео где парни только на этом и специализируются
Тогда не каждой, в только некоторых. Или перестрелка на дальности 1 км — это нормально для БФ?
Есть такое понятие — TTL. Именно о нем тут и идет речь. Расшифровывается и переводится оно как «время жизни», часто применяется в контексте пакетов. ТТЛ пули в 1,5 секунды означает, что пуля, если она сама собой не уберется о препятствие в виде стены/игрока/конца карты, будет убрана местным сборщиком мусора ровно через полторы секунды после генерации (выстрела).

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

Т.е. перестрелка-то может проходить и на расстоянии 10 метров. Речь, в основном, про пули, выпущенные мимо цели.
> Вообще-то я не могу вспомнить ни одной игры кроме Bad Company 2 и Battlefield, которые делали бы это, но это, очень может быть, просто сказывается недостаток моих знаний в этой области
В WWII Online: Battleground Europe www.battlegroundeurope.com/ это было уже в 2003 году.
Когда попадания считаются на сервере — страдают игроки с большим пингом (не попадешь, нужно делать упреждение). Когда на клиенте — с большим (сложнее уворачиваться).

Мне кажется что первое — понятнее и честнее. А следовательно — спортивнее.
World of Tanks, похоже, тоже применяет различные степени приоритетов для всех передаваемых по сети объектов. Там в игре тоже отображаются пути снарядов выпущенных не тобой.
Больше всего раздражает, когда включается killcam и тебе показывают, что у убийцы «осталось» 0%. Хотя конечно, когда у тебя остаётся 0% и ты жив — это немного радует.
Вроде это означает, что он был убит за те 3-5 сек, что прошли от убийства до включения кил кама, не?
Не… Килл кам всегда показывает, сколько у человека осталось % на момент твоего убийства. Даже если ты не попал в человека и на момент убийства у него было 100%, а потом его убили, килл кам покажет труп со 100%

Да и много раз случалось, когда я сам бегал с 0%
Попробуйте как-нибудь поиграть в Team Fortress 2 с медицинской пушкой, на далеком-далеком сервере с большим пингом. Посмотрим, как у вас будет получаться =).

В Team Fortress 2 медицинская пушка не стреляет, а лечит, стреляет шприцомёт :)

Кстати, движок Source интересен тем, что при замедленном просмотре видно, что снаряды (projectiles) двигаются не плавно, а рывками. Интересно было бы понять, почему так.

Да, и момент, не относящийся напрямую к теме статьи. В том же движке Source на выпущенные снаряды не влияет вектор движения игрока, в результате чего, например, при синхронном падении двух игроков бой между ними выигрывает тот, кто знает об этой особенности движка и стреляет с упреждением, а не тот, который слушал физику в школе и стреляет прямо по тушке противника. Интересно, это связано с какими-то принципиальными ограничениями, или Valve просто не хочет поднимать бурю негодования среди армии не желающих переучиваться задротов?
Вот небольшая подборочка багов с телеуправляемой ракетой (серия роликов показывающих проблему в замедлении) — www.youtube.com/watch?v=oZ73eQptp14&feature=share&list=PLvVNfFEGbYo_PZ8HbDDUqko1yXUpEcrAc

Хорошо иллюстрирует проблемы с синхронизацией хитбокса и модельки на клиенте/сервере. Все записано на пинге 1-3. Кроме «пролетов насквозь» в БФ3 часто случаются «нереги», т.е. когда анимация попадания есть (звук, взрыв и т.д.), а цель едет/летит/бежит дальше.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.