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

В последнее время я много играю в конкурентные шутеры и клянусь, иногда мои выстрелы не регистрируются, хотя выглядят совершенно точными. Мне интересно узнать о реальной математике и геометрии, которую игры используют, чтобы определить, попадает ли пуля или рукопашная атака в врага. Латентность влияет на это больше, чем я думаю?

2 ответа

★ Лучший ответ

Я точно попадала в такие моменты, когда выстрел выглядит идеально на моём экране, но не попадает, и да, почти всегда это дело в латентности. Большинство игр используют то, что называется hitscan или обнаружением на основе снарядов - hitscan мгновенно проверяет, пересекается ли луч от твоего оружия с хитбоксом врага (обычно упрощённая форма вроде цилиндра или капсулы), а снаряды - это реальные объекты, которые летят и проверяют коллизии каждый кадр. Проблема в том, что на твоём клиенте враг находится в немного другой позиции, чем его видит сервер, поскольку твой input долго идёт до сервера, а состояние сервера долго возвращается к тебе, поэтому то, что на твоём экране выглядело попаданием в голову, на авторитетном сервере может оказаться промахом. Некоторые игры пытаются компенсировать это клиентским предсказанием или автоприцеливанием, но всегда остаётся эта врождённая задержка - именно поэтому в конкурентных шутерах по-разному играется на серверах с низким и высоким пингом.

Фрустрация реальна - я сам это пережил, смотря, как выстрел в голову пролетает прямо сквозь череп врага. Задержка имеет намного больше значения, чем кажется большинству, но дело не только в пинге; серверу нужно согласовать то, что ты видел на экране, с тем, где враг на самом деле был несколько кадров назад, и эта задержка создаёт зазор. Большинство шутеров используют либо хитскан (мгновенный рейкаст от ствола), либо физику снарядов, но оба варианта искажаются нетконодом - к моменту, когда твой клиент отправляет данные выстрела, сервер мог уже переместить твою цель. То, что предыдущий ответ как-то прошёл мимо, это то, что даже с хитсканом некоторые игры специально добавляют клиентскую предсказание или компенсацию задержки, которые могут сделать попадания нестабильными, если ты выглядываешь из-за углов или если алгоритм согласования на сервере не согласен с твоим клиентом по поводу позиций. Это не всегда чистая задержка, которая съедает твои выстрелы; иногда это просто решение игры о том, чья версия реальности "побеждает" в разделённую на миллисекунды ситуацию.

Ваш ответ

Войдите, чтобы ответить.