2009-12-02 3 views
7

Я строй небольшой multipliplayer который потребуется следующее:Будет ли Datasnap соответствовать 8-битной многопользовательской многопользовательской игре?

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

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

ответ

10

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

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

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

+0

Опасайтесь, что «очень хорошие фильтры» выше не защищены вообще, потому что вам нужен безопасный способ обмена ключом сеанса. – 2009-12-06 18:27:54

3

Как сказал Ник, ответ «Да».

Bob Swart написал технический документ и выпустил несколько видеороликов об обновленном DataSnap in Delphi 2010, который поможет вам начать работу.

1

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

+0

Вы имеете в виду, что даже используя порт 80 в корпоративной сети, брандмауэр может блокировать связь (входящую)? –

+0

Правильный управляемый брандмауэр не разрешает входящее соединение с портом 80, а для разрешенных веб-серверов (обычно в DMZ и т. П.). Клиент может отправлять HTTP-запрос внешним веб-серверам на порт 80 и получать ответ, но сервер внутри nwtwork не может получать запрос, если брандмауэр не разрешает его. – 2009-12-06 18:25:06

+0

Вы правы, AFAIK UDP не маршрутизируется за пределами локальной сети (если вы не выполняете сложный NAT), тогда как HTTP/TCP. Для перспективы производительности я бы никогда не использовал DataSnap, но здесь требование составляет до 8 клиентов, поэтому DataSnap в этом случае будет обрабатывать его без проблем. –

Смежные вопросы