Наверх

Посты по тегу объяснение

Фильтр и сортировка

Игры и не только 😉

dobromir228

Как игра понимает что ты попал. Программист объясняет на пальцах

Работаю программистом, не в геймдеве, но с играми пересекался. Часто вижу споры в комментах: «да я попал, игра сломана», «нет ты промазал». Хочу объяснить почему так происходит, потому что это не баг и не разрабы криворукие.

Начну с того что в игре нет пуль. Ну то есть визуально есть, летит себе, но для кода это просто картинка. Никакой физики у неё обычно нет. Стрельба в большинстве игр это не «пуля летит и во что-то врезается», а математика: проверили пересечение двух областей, нарисовали эффект попадания. Всё.

Лучи наглядно показывают как пуля выпущенная вами несколько секунд назад попадает в определённую точку на карте.

Лучи наглядно показывают как пуля выпущенная вами несколько секунд назад попадает в определённую точку на карте.

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

Хитбоксы состоят из нескольких частей которые отслеживают попадание в определенную часть тела.

Хитбоксы состоят из нескольких частей которые отслеживают попадание в определенную часть тела.

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

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

Третье, самое частое. Сетевые игры. У тебя на экране одно, у сервера другое, у противника третье. Когда ты выстрелил, твой клиент отправил на сервер «я выстрелил вот сюда». Сервер смотрит на своё состояние мира, которое уже устарело на 30-80 миллисекунд, и решает попал ты или нет. Твой противник в этот момент на сервере уже отошёл за угол, хотя у тебя на экране ещё стоит. Ты попал по своей картинке, но для сервера промазал. Или наоборот. Это и называется пингом когда ты видишь одно из-за плохого соединения с сервером а противник уже совсем другое.

Разрабы это лечат разными костылями. Например откатывают состояние мира назад на момент выстрела, смотрят куда ты целился тогда. Или дают тебе приоритет — «доверяем клиенту, он сказал попал, значит попал». Из-за этого появляются случаи когда ты за углом, а тебя убивают. Это не читер, это твой клиент сказал серверу что попал, а сервер поверил.

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

Спасибо за прочтение, надеюсь было интересно и вам все понравилось и наконец-то будет меньше бомбить на игру.

Как игра понимает что ты попал. Программист объясняет на пальцах
Теги: Видео-игрыОбразование объяснениерегистрация урон
1
17
18
4комментария63просмотра

Noynem izobretenie XD

Fakolun

Я вернулся! (Объяснение моё отсутствие)

Всем привет! Сегодня я расскажу почему меня так долго не было:)

 Короче, у вас наверное тоже такое есть, я гулял с друзьями долго...

Так вот, когда я хотел зайти в пикуко,  я забыл пароль👍 Я так испугался что аж слёзы чуть пошли😅😅 Потому что это такое чувство то что ты делал много тестов копил долго рейтинг потом батс! И всё пропало(( Вы понели теперь:(

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

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

Вы нажимаете на слово и нажимаете слово "Скопировать" Потом держите пустое место и нажимаете на слово"Вставить" Потом делаете тоже самое с потверждением пароля, вы нажимаете на пустое место нажимаете вставить 2 раза! Потом нажимаете изменить пароль и всё будет окей!

Потом заходите в вход в пикуко, пишите свой ник и в пароле нажимаете слово "Вставить" 2 раза и всё! Вы зайдёте в свой аккаунт!!!

Если тебе понравился пост то поставь👍👍👍

Но с вами был я! И всем пока пока✌✌✌

Было ли полезен пост для вас?8

Теги: ИсторияОтстуствиеобъяснение
10
38
48
6комментариев114просмотров
Вы прочитали всё, отличная работа!