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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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