Безопасно ли использовать связь по сокету UDP для игры? - PullRequest
0 голосов
/ 15 октября 2018

Я работаю над многопользовательской игрой для Android с Unity.Для серверной части я использую python.Там нет системы входа в систему или имя пользователя.В основном, есть система сватовства и комнаты.Я посылаю объект JSON, который содержит ключ от комнаты, положение пользователя и т. Д. От клиента к серверу.Ключи от номера представляют собой уникальные и десятизначные шестнадцатеричные числа.Я использую сокет UDP для связи.

  1. Безопасно ли использовать только гнездо UDP для игрового процесса?Клиенты уже имеют исходный код и могут легко его изменить.Таким образом, они могут изменять данные, поступающие с клиента на сервер.Нужно ли реализовывать алгоритм, чтобы сделать его более защищенным от взлома или мошенничества?Кто-нибудь может изменить apk-файл и все испортить в этой игре?
  2. Могу ли я использовать порт (например, 8000) для соединения по TCP и UDP, где TCP принимает пользователя / игрока для поиска совпадений и создает уникальный ключ от комнаты дляотправить клиент, когда сервер будет готов?После того, как клиент получит ключ, сервер решит, какой пользователь в какой комнате с этим ключом комнаты или использует UDP, даже во время сватовства.Этот метод замедляет работу сервера?

1 Ответ

0 голосов
/ 15 октября 2018

1 - это безопасно, только используя сокет UDP для игрового процесса.Клиенты уже имеют исходный код и могут легко его изменить.Таким образом, они могут изменять данные, поступающие с клиента на сервер.Нужно ли реализовывать алгоритм, чтобы сделать его более защищенным от взлома или мошенничества?Кто-нибудь может изменить apk-файл и все испортить в этой игре?

Сам по себе UDP не дает вам никакой уверенности по умолчанию, поэтому если вы используете UDP и вам нужна некоторая надежность или гарантия получения данных, вы будетенеобходимо внедрить логику подтверждения в ваш протокол, что позволит избежать репликации пакетов.

Что касается безопасности, да, вам нужно будет реализовать логику квитирования, сжатия и криптографии и использовать алгоритмы контрольной суммы, чтобы гарантировать, что анализируемые данные не будут повреждены.Вам также нужно будет реализовать некоторую логику управления памятью на клиентах, чтобы коммуникация между клиентом и сервером не была легко сопоставима с помощью сброса памяти, чтобы избежать мошенничества при перезаписи памяти.

2- Могу ли я использовать порт (например, 8000) для соединения tcp и udp, где tcp принимает пользователя / игрока для установления совпадений и создает уникальный ключ от комнаты для отправленного клиента, когда сервер готов.После того, как клиент получит ключ, сервер решит, какой пользователь в какой комнате с этим ключом от комнаты или использует udp даже во время сватовства.Этот метод делает сервер медленным?

Вы можете использовать пользовательские порты, которые должны быть в диапазоне 1024-49151.

Большинство отличных сетевых механизмов для игр используют TCP и UDP вместе, а некоторыеметоды регулирования для обеспечения синхронизации между клиентом и сервером.Хорошим чтением для вас должен быть этот пост:

https://gafferongames.com/post/udp_vs_tcp/

Надеюсь, это поможет.

...