Страница: 1 |
Страница: 1 |
Вопрос: Холивар TCP vs UDP для MMO
Добавлено: 02.01.13 16:17
Автор вопроса: Programmer
Для игр советуют использовать UDP.
Например, здесь можно почитать
http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/
Но у меня есть серьезные сомнения по поводу необходимости UDP в MMO.
То, что написано по ссылке выше, верно только в том случае, если удаленная сторона "спамит" пакетами. Тогда потеря одного пакета действительно не является проблемой. Это подойдет для небольших игр по локальной сети.
Но для MMO в любом случае:
1. Пакеты будут складироваться в очередь, так же как и в TCP, иначе один клиент может так нагрузить сервер, что больше 100 игроков он не потянет.
2. Используются оптимизация трафика, например, при перемещении объекта его координаты ни в коем случае не будут "спамиться". Отправка происходит только в случае, когда траектория отличается от предсказываемой.
Из этого происходит следующий пункт.
3. Важен каждый пакет, а также их порядок.
Результат: использование нагромождений вроде rUDP (reliable udp) теоретически должны работать хуже TCP, так как реализуют ту же функциональность, но работают на уровне приложения, а не драйвера.
Т.е. получается, что UDP подойдет только для мелких игр в локальной сети, но не для чего-то масштабного.
С другой стороны, если потеряется "важный" пакет с информацией от одного игрового объекта, то все остальные объекту будут ожидать получения данных для этого первого объекта.
С третьей стороны, на MMO сервере в любом случае используется буферизация отправляемых данных для уменьшения нагрузки. Следовательно, пакеты объединяются в один большой "суперпакет", так что если он потеряется по дороге, то не придет информация для всех объектов, а не только одного, так что полное ожидание будет правомерным.
MMO сервер должен держать 2к+ игроков без особых проблем. И если все они будут спамить UDP...
А что думаете вы?
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #1
Добавлено: 03.01.13 03:12
Писал вот: http://vbnet.ru/forum/show.aspx?id=218091
использовал TCP и только. точность передачи, на мой взгляд, важнее сомнительного выигрыша в скорости.
Номер ответа: 2
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #2
Добавлено: 03.01.13 18:53
Помнится uTorrent не так давно ругали за протокол utp, в котором они по сути реализовали tcp поверх udp
Номер ответа: 3
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #3
Добавлено: 04.01.13 02:39
За что ругали? Трафик поднимает?
Номер ответа: 4
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #4
Добавлено: 04.01.13 02:57
DNS на UDP по-моему, да и вся телефония должна бы быть..
это ж школьный ABC - что в каком случае юзать
Номер ответа: 5
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #5
Добавлено: 04.01.13 17:49
AWP, кажется на хабре читал. некоторым пришлось блочить протокол из-за внезапно возросшей нагрузки на канал.
Номер ответа: 6
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #6
Добавлено: 06.01.13 00:32
Winand
Мне кажется, что такое может быть если у тебя сеть - г. Я недавно тестил у своего провайдера с IP на IP пересылал - ни одной потери пакета не было. А вот у друга на другом про-ре дофига.
Может есть смысл какой-нить гибрид сделать, чтобы протокол менялся в зависимости от потерь?