Сетевые протоколы транспортного уровня для реализации взаимодействия в многопользовательских играх
Таблица 1 - Характеристики транспортных протоколов в контексте игр
Протокол | Состояние соединения | Доставка и порядок | Задержка (RTT) | Встроенная безопасность | Применение в играх |
TCP | С установлением (3-way handshake) | Надёжная, строго упорядоченная (байтовый поток) | Средняя — +1–2 RTT на установление; возможен head-of-line blocking | Поддерживает TLS (шифрование поверх TCP) | Пошаговые игры, чаты, транзакции. Гарантирует консистентность, но не подходит для частых обновлений позиций из-за лагов. |
UDP | Без установления (датаграммы) | Ненадёжная, без гарантии порядка (можно реализовать свой порядок) | Минимальная — нет доп. RTT; потери не блокируют последующие пакеты | Нет (можно применять DTLS отдельно) | Экшен, шутеры, MOBA. Обеспечивает мгновенную отправку обновлений; требует реализовать логику повторов и защиты от потерь на уровне игры. |
SCTP | С установлением; многопотоковый (multi-stream) | Настраиваемая надежность: может быть надежным или частично надежным; порядок обеспечивается в границах каждой потока | Низкая —средняя — установление как у TCP, но параллельные потоки устраняют HOL-блокировку | Нет встроенного шифрования (обычно используют DTLS поверх) | Перспективен для игр: позволяет несколько потоков (например, отдельный для позиций, отдельный для событий) внутри одного соединения. Однако поддержка ограничена, в реальных играх почти не используется напрямую. |
QUIC | С установлением на основе UDP (1-RTT handshake, возможен 0-RTT при повторном подключении) | Надёжная, многопотоковая (несколько параллельных потоков с независимым порядком); + имеется необязательный ненадёжный режим (datagram) | Низкая — ускоренное установление (TLS 1.3 внутри); нет HOL-блокировки между потоками, но в пределах одного потока соблюдается порядок | Да, шифрование по умолчанию (TLS 1.3 встроен в протокол) | Новейший протокол, уже внедрён в веб (HTTP/3). Для игр интересен тем, что сочетает преимущества UDP (низкая задержка, мультиплексирование) и TCP (надежность). Может использоваться для шифрованных игровых соединений с быстрым стартом сессии. Пока мало используется в игровой индустрии, но рассматривается для облачных игр и новых проектов. |
