Подойдет ли Datasnap для 8-ми многопользовательских игр без интенсивной коммуникации? - PullRequest
7 голосов
/ 03 декабря 2009

Я создаю небольшой мультиплеер, который будет нуждаться в следующем:

  • это должно быть написано на Delphi
  • должен поддерживать подключение к Интернету (не только LAN)
  • работа над HTTP
  • поддерживает некоторое шифрование пакетов (может быть пользовательским)
  • сможет отправлять команды на сервер
  • сможет получать ответы от сервера
  • сможет подключить до 8 игроков к одному серверу
  • иметь возможность передавать сложные объекты (возможно, сериализованные в JSON) на серверы

Как вы думаете, новый Delphi 2010 Datasnap может успешно использоваться в этом сценарии, или я должен пойти с простым старым TSocket?

Ответы [ 3 ]

10 голосов
/ 03 декабря 2009

DataSnap может делать все, что вы перечислили выше:

  1. DataSnap написан на Delphi.
  2. Может подключаться через HTTP через любое соединение, локальное, сетевое или удаленное.
  3. Он будет работать через HTTP, включая поддержку туннелирования HTTP-соединения
  4. Вы можете фильтровать поток данных так, как вам нравится. Продукт включает в себя фильтр сжатия. Даниэле Тети написал очень хороших фильтров шифрования .
  5. Вы можете отправлять команды на сервер, вызывая методы сервера
  6. Вы можете получить ответ от сервера через обратные вызовы сервера
  7. Вы можете легко подключить восемь человек к серверу
  8. Вы можете передавать объекты JSON. Это тип по умолчанию, отправляемый между клиентом и сервером.

Итак, чтобы ответить на ваш вопрос, да, я думаю, что новый Delphi 2010 DataSnap может быть использован в вашем сценарии.

3 голосов
/ 03 декабря 2009

Как сказал Ник, ответ - да.

Боб Сварт написал технический документ и выпустил несколько видео на обновленном DataSnap в Delphi 2010 , которые могут помочь вам начать работу.

1 голос
/ 03 декабря 2009

Если ваша многопользовательская игра не отправляет много данных, HTTP и Datasnap могут работать. Если вам нужна быстрая связь, я бы использовал UDP и пользовательский двоичный протокол. Если вам не нужно обходить брандмауэр компании, который останавливает практически любой протокол, кроме HTTP - а компаниям обычно не нравится, когда люди играют в рабочее время, - брандмауэр блокирует входящее соединение, а не исходящее. Просто серверу нужны открытые порты, чтобы клиенты могли подключаться. И я бы также избежал JSON - если вам не нужна совместимость, двоичная сериализация будет намного быстрее.

...