Реалізація згладжування мережі


13

Ми робимо багаторазовий шутер від першої особи. Клієнт відправляє свою позицію серверу з фіксованою швидкістю (зараз на 10 Гц). Сервер надсилає одне повідомлення, що контактує з усіма позиціями гравця, всім гравцям з однаковою швидкістю (10 ГГц).

Як і очікувалося, рух досить спритний, оскільки гра в 60 кадрів в секунду отримує оновлення лише 10 разів на секунду. Який найкращий спосіб згладити цей рух? Найбільш очевидним способом було б інтерполяцію між останніми двома пакетами, щоб інтерполяція закінчилася, коли ми отримаємо новий пакет. Але це додає миттєвої затримки 100 мс для всіх гравців.

Інший спосіб полягає у використанні швидкості та прискорення, виведених з останніх кількох пакетів, щоб передбачити, де знаходиться гравець до прибуття наступного пакету, однак, якщо прогноз неправильний, гравець, як правило, стрибне, як тільки отримає новий пакет. .

Хтось знає, як титули AAA вирішують цю проблему?

Відповіді:


9

Вони роблять саме те, що ви сказали щойно - або один із цих двох підходів, або якийсь компроміс між ними. (наприклад, прийняти невелику затримку і, де можливо, інтерполювати, і екстраполювати, коли пінг перевищує цю затримку.) Замість того, щоб стрибати (також відомий як "оснащення") назад до виправленої позиції, ти зазвичай робиш якусь інтерполяцію між неправильним прогнозом і відкориговане значення, вирівнюючи його, якщо це можливо. Ви також обробляєте виправлення в минулому, щоб зменшити кількість виправлень, які потрібно застосувати.

Це питання, яке часто задають, і є кілька канонічних посилань, які ви, ймовірно, знайдете в іншому місці на сайті gamedev.stackexchange.com, якщо ви шукаєте, і вони включають в себе наступне:

Що кожен програміст повинен знати про ігрові мережі (це підсумовує матеріали в наступних двох посиланнях)

Джерело багатокористувацької мережі

Нереальна мережева архітектура

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.