spiritd
@spiritd

Какие сетевые протоколы лучше использовать мобильной онлайн игре?

Планируется разработка пошаговой мобильной онлайн игры. Игроки могут сражаться в режиме пвп и команда на команду. Используем Photon Server. Возникают следующие вопросы:

1) Какой протокол передачи данных лучше использовать непосредственно во время сражения - UDP или TCP? Склоняюсь к последнему, так как он обеспечивает целостность и упорядоченность данных, в то время как UDP позволяет доставлять данные с наименьшей задержкой, что для пошаговой игры не критично. Хотя, скорее всего, я что-то упускаю, так как везде советуют использовать для онлайн-игр UDP, но, возможно, в случае с пошаговой игрой TCP будет лучшей альтернативой?

2) Как организовать общение с сервером в то время, когда игрок не участвует в сражении? Например, когда он просматривает свой профиль, делает покупки ит.д? Стоит ли все время держать соединение с сервером или просто обмениваться данными по HTTP, а уже когда игрок хочет начать сражение подключать его по TCP/UDP? Интересно было бы узнать как это реализовано в серьезных проектах.

Заранее спасибо за помощь! :)
  • Вопрос задан
  • 2362 просмотра
Решения вопроса 2
terrier
@terrier
UDP или TCP?


Ну, давайте подумаем вместе: когда я отсылаю с клиента на сервер информацию о своем передвижении в онлайн-шутере я отсылаю может быть десятки UDP-пакетов в секунду. Если я потеряю несколько - это не критично. А если, в вашем случае, я потеряю информацию о ходе в пошаговой игре это приемлимо? Вот то-то и оно.

Как организовать общение с сервером в то время, когда игрок не участвует в сражении? Например, когда он просматривает свой профиль, делает покупки ит.д


Ключевое слово платежи - это причина, по которой проверять соответсвие состояний на сервере и на клиенте нужно довольно часто ( насколько часто - зависит от конкретной задачи ). Ну и плюс конкретно HTTP - не совсем удачный выбор для протокола игры.
Ответ написан
Комментировать
bingo347
@bingo347
Crazy on performance...
UPD прекрасно подходит для обмена данными в реальном времени, где потеря данных не критична
Например в играх это передвижение игроков по карте
Подразумевается, что клиент сможет восстановить утерянные данные по следующим пакетам, например сгладить движение
В Вашем случае TCP будет предпочтительнее (имхо)

По второй части, один постоянный коннект создаст меньше нагрузки на сервер чем множество коротких
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы