Подойдет ли Datasnap для двунаправленной многопользовательской игры с участием до 8 человек без интенсивной связи?

StackOverflow https://stackoverflow.com/questions/1836204

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

Боб Сварт написал официальный документ и снял несколько видеороликов об обновленной версии. DataSnap в Delphi 2010 это может помочь вам начать работу.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top