Я читав статтю Valve про багатокористувацьку мережу, яка була адаптована з документа Яна Яньє Берньє 2001 року під назвою Методи компенсації затримки в проектуванні та оптимізації протоколу клієнта / сервера в грі . Я роблю багатокористувацьку гру в реальному часі за допомогою сервера node.js, підключеного до клієнтів через socket.io, і у мене є кілька питань стосовно докладно описаних нижче принципів:
Інтерполяція суб'єктів господарювання
[Інтерполяція] перешкоджає рухомому руху, до якого зазвичай призводить буферизація оновлень сервера, а потім відтворення їх назад із проміжками, плавно інтерпольованими між ними. Він також може захистити від збоїв, викликаних втратою пакету.
Прогнозування на стороні клієнта
Прогнозування - це поняття, що клієнт прогнозує наслідки дій локального гравця, не чекаючи, коли сервер їх підтвердить. Передбачуваний стан суб'єкта перевіряється на серверні команди, коли вони надходять, поки не буде виявлено або збіг, або невідповідність.
Компенсація відставання
Компенсація затримки - це поняття сервера, що використовує затримку гравця, щоб перемотати час під час обробки [введення користувача], щоб побачити, що гравець бачив, коли команда була відправлена. У поєднанні з прогнозуванням компенсація відставання може допомогти боротися із затримкою мережі до того, що майже усуне її з точки зору зловмисника.
Чи застосовуються принципи до TCP, як це стосується UDP, і чи будуть різниці у впровадженні? Я можу бачити, що інтерполяція сутності не потребує захисту від втрати пакетів, але це стосується цього.
Чи можу я навіть спілкуватися між сервером та веб-браузером і навпаки, використовуючи UDP та Node.js?
Оскільки цей документ є старшим десятиліттям, ці принципи все ще застосовуються чи з'явилася інша технологія?
Будь-яка допомога буде дуже вдячна.