Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Сетевые концепции системы HLAPI

Примечание. Поддержка UNet устарела и в будущем будет удалена из Unity. Новая система находится в разработке. Для получения дополнительной информации и дальнейших действий см. сообщение в блоге.

Сервер и хост

В Unity High Level APIсистема создания многопользовательских возможностей для игр Unity. Он построен поверх нижнего уровня транспортного уровня связи в реальном времени и выполняет многие общие задачи, необходимые для многопользовательских игр. Дополнительная информация
См. в системе Словарь
(HLAPI), многопользовательские игры включают:

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

  • Клиенты. Клиенты — это экземпляры игры, которые обычно подключаются к серверу с разных компьютеров. Клиенты могут подключаться через локальную сеть или онлайн.

Клиент — это экземпляр игры, который подключается к серверу, чтобы человек, играющий на нем, мог играть в игру с другими людьми, которые подключаются самостоятельно. клиентов.

Сервер может быть "выделенным сервером" или "хост-сервером".

  • Выделенный сервер: это экземпляр игры, который работает только в качестве сервера.

  • Хост-сервер. При отсутствии выделенного сервера один из клиентов также играет роль сервера. Этот клиент является «хост-сервером». Хост-сервер создает один экземпляр игры (называемый хостом), который действует и как сервер, и как клиент.

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

На этой диаграмме показаны два удаленных клиента, подключенных к хосту.
На этой диаграмме показаны два удаленных клиента, подключенных к хосту.

Хост — это отдельный экземпляр вашей игры, выступающий в роли сервера и клиента одновременно. Хост использует особый тип внутреннего клиента для связи с локальным клиентом, в то время как другие клиенты являются удаленными клиентами. Локальный клиент взаимодействует с сервером посредством прямых вызовов функций и очередей сообщений, поскольку находится в том же процессе. На самом деле он разделяет СценуСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь
с сервером. Удаленные клиенты взаимодействуют с сервером через обычное сетевое соединение. Когда вы используете HLAPI Unity, все это выполняется автоматически.

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

Создание экземпляра и создание

При создании однопользовательской игры в Unity вы обычно используете метод GameObject.Instantiate для создания новых объектов GameObject во время выполнения. Однако в многопользовательской системе сервер сам должен «порождать» игровые объекты, чтобы они были активны в сетевой игре. Когда сервер создает GameObjects, он инициирует создание GameObjects на подключенных клиентах. Система порождения управляет жизненным циклом GameObjectосновного объекта в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь
и синхронизирует состояние GameObject в зависимости от того, как вы установили GameObject вверх.

Дополнительные сведения о создании и создании экземпляров в сети см. в документации по созданию игровых объектов.

Игроки и локальные игроки

Многопользовательская система HLAPI Unity обрабатывает игровые объекты игрока иначе, чем неигровые игровые объекты. Когда новый игрок присоединяется к игре (когда новый клиент подключается к серверу), GameObject этого игрока становится GameObject «локального игрока» на клиенте этого игрока, и Unity связывает соединение игрока с GameObject игрока. Unity связывает один игровой объект GameObject с каждым человеком, играющим в игру, и направляет сетевые команды этому отдельному игровому объекту. Игрок не может вызывать команду для GameObject другого игрока, только для своего собственного.

Дополнительные сведения см. в документации по игровым объектам.

Полномочия

И серверы, и клиенты могут управлять поведением GameObject. Понятие «полномочия» относится к тому, как и где осуществляется управление GameObject. HLAPI Unity основан на «полномочиях сервера» в качестве состояния по умолчанию, когда сервер (хост) имеет полномочия на все игровые объекты, которые не представляют игроков. Игровые объекты игрока являются особым случаем и рассматриваются как обладающие «местными полномочиями». Возможно, вы захотите создать свою игру, используя другую систему полномочий. Дополнительные сведения см. в разделе Сетевые полномочия.

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