Библиотеки сетевых игр в реальном времени для игр на Java и Objective-C - PullRequest
8 голосов
/ 28 октября 2009

Я собираюсь создавать игры в режиме реального времени, созданные с использованием выделенного Java-сервера и клиентов iphone, а также настольных клиентов Java. Какие доступные высокопроизводительные библиотеки сетевого транспорта, которые можно использовать для разработки многопользовательских игр в реальном времени, существуют для Java и iphone (особенно надежного UDP)?

Общий совет для большинства игр в реальном времени (Counter-Strike, Left4Dead, Quake III) заключается в использовании транспортного протокола UDP / IP, отправляющего сообщения в виде «ненадежных» пакетов, в пользу «гарантированной» доставки TCP ( из-за проблем с пересылкой и задержкой, которые вы не можете легко контролировать).

  • Обзор сети с Half-Life Engine Engine
  • Сеть Quake III Другой совет заключается в создании надежного протокола UDP, который позволяет «опционально» гарантировать доставку пакетов UDP (при этом не имея возможности гарантировать порядок доставки, такой как поток TCP, до тех пор, пока ваша игра может обрабатывать пакеты, не соответствующие порядку).

Project Darkstar - это сервер Java MMO с привязками C ++ (немного тяжелее для легкой сетевой библиотеки реального времени для универсальных многопользовательских игр).

Я видел библиотеки, написанные на C для надежного UDP: - Enet - надежная библиотека UDP - Какао AsyncSocket

Ответы [ 3 ]

8 голосов
/ 23 июня 2010

Посмотрите на Kryo и связанную с ним коммуникационную библиотеку KryoNet .

Он предназначен именно для такого типа приложений (высокопроизводительный сетевой транспорт). Я не уверен, есть ли еще привязка Objective-C, но даже если ее нет, стоит посмотреть, насколько хорошо разработана платформа.

4 голосов
/ 27 мая 2012

Так как вы упомянули UDP. Вот библиотека java-сервера (хм ... написано мной!), Которая обеспечивает поддержку как UDP, так и TCP. Надежный UDP оказывается TCP. Вы можете написать свою собственную пользовательскую логику подтверждения поверх UDP, но обычно лучше использовать TCP для всего, что нужно для доступа к серверу, и UDP для всего остального.

В jetserver один и тот же сеанс использует для связи как UDP, так и TCP. Сетевые сообщения могут быть отправлены с гарантией доставки , Reliable = TCP и FAST = UDP.

0 голосов
/ 23 июля 2013

"особо надежный UDP"

UDP является не надежным по своей конструкции. Это похоже на отправку старой (не электронной) почты. Вы кладете свое письмо в конверт, пишете адрес, ставите штамп и отправляете его в почтовый ящик. Это может быть передано, но вы не можете быть уверены. UDP предназначен для ситуаций, когда скорость важнее правильности (правильность, как в «моем приложении нужно, чтобы все передавалось правильно, бит за битом»).

Например, таким приложениям, как видеочат по Skype, требуется большая полоса пропускания и меньшая задержка, некоторые потерянные биты могут быть исправлены на уровне приложений (поэтому он использует UDP). В то же время текстовый чат требует меньшей пропускной способности и выдерживает гораздо большие задержки, но нуждается в большей корректности (откуда вы знаете эту строку: fsdfdsfsd передается правильно? На каком языке? И т. Д.), Поэтому ему нужен TCP. И на самом деле так работает в скайпе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...