Это вопрос, который я вижу много. Большинство людей говорят, что UDP всегда лучше для игр в реальном времени, чем TCP. Насколько я понимаю, TCP пытается пересылать пакеты снова и снова, пока другая сторона не получит их, тогда как UDP не заботится.
Большинство вещей, которые я прочитал, заключается в том, что UDP необходим для любой игры в реальном времени, а TCP ужасен. Но дело в том, что большинство людей в любом случае, похоже, реализуют какую-то форму TCP поверх UDP. И я также слышал, что разница между ними незначительна, учитывая, что мы больше не находимся в 80-х годах, и интернет теперь довольно быстрый и надежный.
Мое общее понимание здесь неверно? Может кто-нибудь прояснить это для меня?
t0
, которое никогда не принимается, то вы отправляете новое состояние мира за раз t1
, вам не нужно ждать, пока клиент фактически получит первый пакет, который уже устарел.
internet is now pretty fast and reliable
Нет, это не так. Пропускная способность резко возросла, да, но задержка еще довольно высока. При использовании чистого TCP вам нужно, чтобы время на сервере превышало максимально возможную задержку, если вы не выполняете рассылку пакетов - что лучше всего делать на клиенте через UDP. Проблема в том, что некоторая информация в игре должна быть надежной, а другая - быстрой. Для этого предусмотрены пользовательские протоколы поверх UDP, а также множество фирменных протоколов, которые дают вам все необходимое в красивой упаковке.