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

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

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

Автор:

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

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

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

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

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

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

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


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

Модификация для клиентской части Minecraft: модерирование контента на серверах с большим количеством игроков

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

Сравнение производительности фронтэнд-фреймворков React, Angular, Vue.js и Svelte

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

Реализация ключевых элементов казуальной 2D-видеоигры в среде разработки Unity

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

Внедрение машинного обучения в блокчейн-системы

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

Проект Loom: трансформация многопоточности

Проект Loom представляет инновационную технологию в мире Java, нацеленную на революцию в области многопоточности и асинхронного программирования. В данной статье будут рассмотрены ключевые аспекты проекта, включая концепцию волокон (fibers) и виртуал...

Эволюция архитектурных стилей при разработке информационных систем: от монолитных приложений к микросервисной архитектуре

Архитектура приложения является краеугольным камнем в разработке программного обеспечения (далее ПО), определяя структуру того, как его основные компоненты взаимодействуют друг с другом. Существуют различные подходы к проектированию архитектуры прило...

Модификация архитектуры web-приложения, основанной на паттерне CQRS, для повышения производительности

В работе рассматривается способ организации архитектуры web-приложения на основе паттерна CQRS. В основе архитектуры лежит разделение на write- и read- модели, которые используют SQL и NoSql базы данных. Результатом применения архитектуры стало возмо...

Разработка подсистемы распределенных вычислений для экосистемы научных исследований

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

Мобильные приложения в эпоху цифровизации: роль UX-дизайна и модульной архитектуры в создании успешного пользовательского опыта

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

Контекстно ориентированный фреймворк для «умного города» с точки зрения Cloud, IoT, Big Data

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

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

Модификация для клиентской части Minecraft: модерирование контента на серверах с большим количеством игроков

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

Сравнение производительности фронтэнд-фреймворков React, Angular, Vue.js и Svelte

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

Реализация ключевых элементов казуальной 2D-видеоигры в среде разработки Unity

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

Внедрение машинного обучения в блокчейн-системы

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

Проект Loom: трансформация многопоточности

Проект Loom представляет инновационную технологию в мире Java, нацеленную на революцию в области многопоточности и асинхронного программирования. В данной статье будут рассмотрены ключевые аспекты проекта, включая концепцию волокон (fibers) и виртуал...

Эволюция архитектурных стилей при разработке информационных систем: от монолитных приложений к микросервисной архитектуре

Архитектура приложения является краеугольным камнем в разработке программного обеспечения (далее ПО), определяя структуру того, как его основные компоненты взаимодействуют друг с другом. Существуют различные подходы к проектированию архитектуры прило...

Модификация архитектуры web-приложения, основанной на паттерне CQRS, для повышения производительности

В работе рассматривается способ организации архитектуры web-приложения на основе паттерна CQRS. В основе архитектуры лежит разделение на write- и read- модели, которые используют SQL и NoSql базы данных. Результатом применения архитектуры стало возмо...

Разработка подсистемы распределенных вычислений для экосистемы научных исследований

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

Мобильные приложения в эпоху цифровизации: роль UX-дизайна и модульной архитектуры в создании успешного пользовательского опыта

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

Контекстно ориентированный фреймворк для «умного города» с точки зрения Cloud, IoT, Big Data

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

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