Подойдет ли Datasnap для двунаправленной многопользовательской игры с участием до 8 человек без интенсивной связи?
-
11-09-2019 - |
Вопрос
Я создаю небольшой мультиплеер, которому понадобится следующее:
- это должно быть написано на Delphi
- должен поддерживать подключение к Интернету (не только LAN)
- работать через HTTP
- поддерживать некоторое шифрование пакетов (оно может быть пользовательским)
- иметь возможность отправлять команды на сервер
- иметь возможность получать ответы от сервера
- иметь возможность подключить до 8 игроков к одному серверу
- уметь передавать сложные объекты (возможно, сериализованные в формате JSON) на серверы
Как вы думаете, можно ли успешно использовать новый Delphi 2010 Datasnap в этом сценарии или мне следует использовать старый добрый TSocket?
Решение
DataSnap может делать все, что вы перечислили выше:
- DataSnap написан на Delphi.
- Он может подключаться через HTTP через любое соединение: локальное, сетевое или удаленное.
- Он будет работать через HTTP, включая поддержку туннелирования HTTP-соединения.
- Вы можете фильтровать поток данных по своему усмотрению.Изделие оснащено компрессионным фильтром.Даниэле Тети написал несколько очень хорошие фильтры шифрования.
- Вы можете отправлять команды на сервер, вызывая методы сервера.
- Вы можете получить ответ от сервера через обратные вызовы сервера.
- Вы можете легко подключить к серверу восемь человек
- Вы можете передавать объекты JSON.Это тип по умолчанию, передаваемый между клиентом и сервером.
Итак, отвечая на ваш вопрос: да, я думаю, что новый Delphi 2010 DataSnap можно использовать в вашем сценарии.
Другие советы
Как сказал Ник, ответ — да.
Боб Сварт написал официальный документ и снял несколько видеороликов об обновленной версии. DataSnap в Delphi 2010 это может помочь вам начать работу.
Если ваша многопользовательская игра не отправляет HTTP много данных и DataSnap может работать. Если вам нужны быстрые связи, я хотел бы использовать UDP и пользовательский двоичный протокол. Если вы не должны обойти брандмауэр компании, который останавливается практически любой протокол, но HTTP - и компании, как правило, не любят людей, играющих в их рабочее время - в брандмауэр блокирует входящие соединения, не исходящий. Просто сервер должен открыть порты, чтобы позволить клиентам подключиться. И я бы избежать JSON, а также - если вам не нужна совместимость двоичная сериализация гораздо быстрее. Р>