МЕХАНИЗМЫ ВЗАИМОДЕЙСТВИЯ КЛИЕНТА И СЕРВЕРА В ИГРЕ «LABYRINTH OF HORROR» НА UNITY
Конференция: CCXCVI Студенческая международная научно-практическая конференция «Молодежный научный форум»
Секция: Технические науки
лауреатов
участников
лауреатов


участников



CCXCVI Студенческая международная научно-практическая конференция «Молодежный научный форум»
МЕХАНИЗМЫ ВЗАИМОДЕЙСТВИЯ КЛИЕНТА И СЕРВЕРА В ИГРЕ «LABYRINTH OF HORROR» НА UNITY
Одной из ключевых задач при создании многопользовательской игры на Unity является реализация стабильного и эффективного взаимодействия между клиентом и сервером. В проекте «Labyrinth of Horror» сетевое взаимодействие было построено с применением классической клиент-серверной архитектуры, реализованной на базе TCP-протокола.
В основе архитектуры лежат два главных компонента: класс сервера, отвечающий за создание и управление подключениями, и класс клиента, который устанавливает соединение с сервером и обменивается с ним данными. Логика обмена информацией между ними чётко разделена: сервер прослушивает входящие соединения, принимает команды от клиентов и рассылает ответы, а клиент формирует запросы и обрабатывает ответы от сервера.
Компоненты сетевого взаимодействия реализованы через стандартные TCP-сокеты .NET, что обеспечивает низкоуровневый контроль над соединениями и даёт гибкость в передаче информации. Серверная часть создаёт прослушивающий сокет, принимает подключения и создаёт для каждого клиента отдельный поток обработки. Благодаря этому обеспечивается возможность параллельной работы с несколькими клиентами. В клиентском классе реализована логика подключения к серверу по IP и порту, передача сообщений в текстовом формате, а также асинхронное получение ответов.
Для упрощения работы с игровыми объектами в Unity используются компоненты NetworkBehaviour, которые наследуются от базового класса MonoBehaviour и обеспечивают встроенную поддержку сетевых функций. Эти скрипты тесно связаны с компонентом NetworkIdentity, обеспечивающим уникальную идентификацию объектов в сети. С помощью NetworkBehaviour реализованы синхронизируемые переменные (SyncVar), команды сервера ([Command]), клиентские RPC-вызовы ([ClientRpc]), а также событийные обратные вызовы.
На рисунке 1 представлена архитектура сетевого взаимодействия, отражающая, как клиенты взаимодействуют с сервером, какие данные передаются, и как происходит синхронизация объектов на сцене.
Рисунок 1. Архитектура сетевого взаимодействия
Каждый игровой объект, участвующий в сетевом обмене (например, игроки, предметы, враги), содержит компонент NetworkIdentity и управляется через скрипт NetworkBehaviour. Например, при поднятии сундука игроком, команда на открытие сундука передаётся на сервер, сервер вызывает RPC-функцию на всех клиентах, и сундук анимированно открывается у каждого игрока, обеспечивая сетевую консистентность.
Также используется система HLAPI (High-Level API), которая включает сериализацию состояний, автоматическую синхронизацию объектов и управление подключениями. HLAPI позволяет сократить объём кода, делая реализацию многопользовательского взаимодействия проще и быстрее в разработке.
Таким образом, клиент-серверная архитектура проекта основана на надёжной TCP-коммуникации и инструментах Unity, предназначенных для многопользовательских игр. Это обеспечивает не только стабильное соединение, но и корректную синхронизацию игрового состояния между всеми игроками в реальном времени, создавая полноценное и погружающее мультиплеерное взаимодействие.
