Сетевая синхронизация пользователей на движке Unity | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 11 мая, печатный экземпляр отправим 15 мая.

Опубликовать статью в журнале

Автор:

Научный руководитель:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №17 (464) апрель 2023 г.

Дата публикации: 27.04.2023

Статья просмотрена: 37 раз

Библиографическое описание:

Смирнов, М. С. Сетевая синхронизация пользователей на движке Unity / М. С. Смирнов. — Текст : непосредственный // Молодой ученый. — 2023. — № 17 (464). — С. 17-18. — URL: https://moluch.ru/archive/464/102014/ (дата обращения: 29.04.2024).



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

Ключевые слова: сетевое программирование, разработка компьютерных игр, Unity.

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

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

Сообщение между клиентами в сетевых играх обычно происходит по двум протоколам: TCP и UDP. Протокол TCP — поточная сетевая модель передачи данных, которая используется, когда требуется надежная доставка сообщений, обеспечивая гарантированную доставку с установлением соединений, т. е. без потерь, используя повторные передачи и проверки на ошибки [1]. Для обеспечения этой надежности, в жертву идет скорость передачи данных. Этот протокол в основном используется для отправки сообщений, файлов, где какие-либо потери будут критичными.

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

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

Роль сервера выполняет другой клиент, который открывает сущность сервера внутри игровой сцены. Начинает передачу клиент, отправляя данные об игроке серверу. Потом, если подключение клиента подтверждено, сервер отправляет данные клиенту. Передача этих данных на сервере выполняется в разных потоках. На серверной стороне каждую итерацию fixedUpdate данные всех динамических объектов поочередно сериализуются и добавляются в лист. fixedUpdate — это частота обновления физической системы движка, что примерно равно 0.02 секунды [2], это позволит синхронизировать объекты каждый раз, когда они изменяют свое состояние, это снизит нагрузку на систему. Также сериализация данных именно в fixedUpdate требовалась в связи с особенностями работы движка Unity. Движок без каких-либо дополнительных решений не позволяет взаимодействовать с игровыми объектами, которые наследуются от MonoBehaviour в другом потоке. В новом потоке уже сериализованные данные об объектах последовательно отправляются клиенту. Это позволит ускорить отправку данных, исключив из отправки время на сериализацию (рис.1). На стороне клиента (рис. 2), сериализованные данные отправляются в лист байтовых массивов, которые расшифровываются в отдельном потоке, чтобы так же не тратить время на десериализацию во время получения данных, а расшифрованные данные применяются к игровой сцене в fixedUpdate.

Сервер

Рис. 1. Сервер

Клиент

Рис. 2. Клиент

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

Литература:

  1. Протокол TCP. — Текст: электронный // OpenNet: [сайт]. — URL: https://www.opennet.ru/docs/RUS/linux_base/node350.html (дата обращения: 01.03.2023).
  2. MonoBehaviour.FixedUpdate. — Текст: электронный // Руководство Unity: [сайт]. — URL: https://docs.unity3d.com/ScriptReference/MonoBehaviour.FixedUpdate.html (дата обращения: 01.03.2023).
Основные термины (генерируются автоматически): UDP, TCP, сетевое взаимодействие, данные, игра, клиент, игровая сцена, полноценная синхронизация, протокол, сетевое программирование.


Похожие статьи

Роль протокола TCP в современных компьютерных сетях.

Поступающая к протоколу TCP информация от протоколов более высокого уровня рассматривается им как неструктурированный поток байтов [1]. Для передачи на сетевой уровень данный поток нарезается непрерывными кусками, называемыми сегментами.

Применение универсальных протоколов для передачи...

Исследуются сетевые протоколы, необходимые как для передачи видеопотока по сети, так

Очевидно, что TCP несколько менее производителен, чем UDP по следующим причинам

В терминологии HTTP камера является HTTP-сервером, компьютер — HTTP-клиентом.

Поступающая к протоколу TCP информация от протоколов более высокого уровня.

Разработка TCP-чата с использованием фреймворка Electron

Ключевые слова: JavaScript, Node.js, Electron, TCP протокол.

TCP (Transmission Control Protocol) — данный протокол передачи данных устанавливает предварительное

Для реализации TCP соединения на языке программирования JavaScript существует библиотека Socket.IO.

Соединение между клиентом и сервером устанавливается про протоколу TCP.

Автоматизация поиска оптимальных параметров сетевого...

Ключевые слова: многопоточное программирование, Java, UDP, сетевое

исследования актуален, так как в современном мире все больше требуется удаленное взаимодействие.

Протокол UDP был выбран, т. к. чаще всего в локальной сети не требуется использовать

После сбора статистики, данные обрабатываются для расчёта процента ошибок с учётом...

Сравнение некоторых модификаций протокола TCP с ARTCP

ARTCP (Adaptive Rate TCP) [7,8] отличается от стандартного TCP тем, что сегменты отправляются в сеть не в виде всплеска в пределах окна, а разделенные временными промежутками, длительность которых определяется текущим значением скорости.

Сравнительный обзор сетевых интерфейсов для коммутации...

При этом к аппаратно-программным средствам сетевого взаимодействия предъявляются такие требования, как

На сетевом уровне стек TCP/IP реализует протокол IP и ARP.

– отсутствие привычных сетевых протоколов, все операции происходят с памятью, а не с пакетами данных.

Наиболее распространенные протоколы транспортного уровня: TCP, UDP, NetBEUI.

Обзор и исследование протоколов беспроводных сенсорных сетей

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

Классификация сетевого трафика | Статья в журнале...

Классификация сетевого трафика — это процесс анализа характера потоков трафика в сетях, и он классифицирует эти уровни в основном на основе протоколов (например, TCP, UDP и IMAP) или по различным классам приложений (например, HTTP, одноранговые (P2P), игры).

Метод анализа сетей IPv4 и IPv6 | Статья в журнале...

Клиент генерирует различные типы трафика (в нашем случае TCP и UDP) и посылает на сервер.

Для этого установим максимальный MTU на сетевых интерфейсах компьютера следующей командой

Полученные данные для UDP пакетов разной длины сведем в табл. 3. Таблица 3.

Для протокола IPv6 существует своя аналогичная версия программы ping — ping6.

Похожие статьи

Роль протокола TCP в современных компьютерных сетях.

Поступающая к протоколу TCP информация от протоколов более высокого уровня рассматривается им как неструктурированный поток байтов [1]. Для передачи на сетевой уровень данный поток нарезается непрерывными кусками, называемыми сегментами.

Применение универсальных протоколов для передачи...

Исследуются сетевые протоколы, необходимые как для передачи видеопотока по сети, так

Очевидно, что TCP несколько менее производителен, чем UDP по следующим причинам

В терминологии HTTP камера является HTTP-сервером, компьютер — HTTP-клиентом.

Поступающая к протоколу TCP информация от протоколов более высокого уровня.

Разработка TCP-чата с использованием фреймворка Electron

Ключевые слова: JavaScript, Node.js, Electron, TCP протокол.

TCP (Transmission Control Protocol) — данный протокол передачи данных устанавливает предварительное

Для реализации TCP соединения на языке программирования JavaScript существует библиотека Socket.IO.

Соединение между клиентом и сервером устанавливается про протоколу TCP.

Автоматизация поиска оптимальных параметров сетевого...

Ключевые слова: многопоточное программирование, Java, UDP, сетевое

исследования актуален, так как в современном мире все больше требуется удаленное взаимодействие.

Протокол UDP был выбран, т. к. чаще всего в локальной сети не требуется использовать

После сбора статистики, данные обрабатываются для расчёта процента ошибок с учётом...

Сравнение некоторых модификаций протокола TCP с ARTCP

ARTCP (Adaptive Rate TCP) [7,8] отличается от стандартного TCP тем, что сегменты отправляются в сеть не в виде всплеска в пределах окна, а разделенные временными промежутками, длительность которых определяется текущим значением скорости.

Сравнительный обзор сетевых интерфейсов для коммутации...

При этом к аппаратно-программным средствам сетевого взаимодействия предъявляются такие требования, как

На сетевом уровне стек TCP/IP реализует протокол IP и ARP.

– отсутствие привычных сетевых протоколов, все операции происходят с памятью, а не с пакетами данных.

Наиболее распространенные протоколы транспортного уровня: TCP, UDP, NetBEUI.

Обзор и исследование протоколов беспроводных сенсорных сетей

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

Классификация сетевого трафика | Статья в журнале...

Классификация сетевого трафика — это процесс анализа характера потоков трафика в сетях, и он классифицирует эти уровни в основном на основе протоколов (например, TCP, UDP и IMAP) или по различным классам приложений (например, HTTP, одноранговые (P2P), игры).

Метод анализа сетей IPv4 и IPv6 | Статья в журнале...

Клиент генерирует различные типы трафика (в нашем случае TCP и UDP) и посылает на сервер.

Для этого установим максимальный MTU на сетевых интерфейсах компьютера следующей командой

Полученные данные для UDP пакетов разной длины сведем в табл. 3. Таблица 3.

Для протокола IPv6 существует своя аналогичная версия программы ping — ping6.

Задать вопрос