Игры в фокусе: Создание и управление сетевыми играми с многопользовательской связью

Это восьмой блог из серии Games Focus , в котором освещаются ключевые инициативы по разработке продуктов на предстоящий и последующие годы. В этом выпуске мы расскажем о состоянии, планах на ближайшие релизы и будущем видении многопользовательской сетевой системы Unity.
Привет, меня зовут Кики Сентонж, я менеджер по продуктам в команде по работе с мультиплеером - той, что занимается разработкой Unity. Netcode for GameObjects решение.
Я работаю в Unity около года, но с 2013 года являюсь хоббистом и инди-разработчиком Unity. Моя страсть - игры, особенно игры, которые вы создаете с вдохновением. Мне не терпится рассказать о наших решениях для мультиплеера в этом посте, тем более что многие из вас заявляли о необходимости и желании иметь более полное и доступное решение для разработки мультиплеера. Мы ближе, чем вы думаете.

Давайте будем честными: Создание многопользовательских игр может быть очень сложным - от разработки механики до реализации и тестирования. Приходится учитывать очень многое - задержки, потери пакетов, управление сценами, то, что должно или не должно передаваться по сети, - многое из этого сложно отследить или смоделировать. Даже наши сторонние сетевые решения нуждаются в инструментах третьей (четвертой?) стороны, чтобы понять, что происходит.
Создание полноценной сетевой системы для вашей игры должно быть таким же, как и сама игра: уникальным и доработанным, чтобы соответствовать игровому опыту.
Исходя из этого, мы хотели создать неткод, который был бы достаточно гибким, чтобы учесть все основные аспекты вашей многопользовательской игры, и в то же время позволял бы вам использовать сторонние инструменты или сервисы, если это необходимо. Это основная цель наших решений для неткода.

Также важно помнить, что при разработке многопользовательских игр необходимы услуги и масштаб - две вещи, о которых вы, возможно, не задумывались в контексте одиночной или кооперативной игры. Unity Gaming Services - это наша недавно запущенная платформа, которая включает в себя хостинг игровых серверов (Multiplay), услуги матчмейкера, эстафеты и лобби. Он был разработан, чтобы предоставить вам все инструменты, необходимые для создания прочной основы, увлекательного опыта игроков и стимулирования роста игры - и все это в рамках одной интегрированной экосистемы.

В этом году мы объявили о выпуске нескольких замечательных решений для неткода. Наш первый крупный выпуск Netcode для GameObjects уже доступен в 2020 и 2021 LTS.
Это решение для неткода, основанное на объектах GameObject, поможет вам начать создавать небольшие кооперативные многопользовательские игры. Однако если вы создали свой опыт с помощью DOTS (Entities), мы также рады сообщить, что на Tech Stream 2022 появится наше решение Netcode for Entities, которое поможет вам подготовиться к более масштабной многопользовательской игре. Подробнее об этом выпуске читайте в следующем посте.
Эти стеки охватывают широкую базу для разработки многопользовательских игр. Все вместе они составляют один шаг из многих, чтобы вы смогли встать на ноги в многопользовательских играх. Эти выпуски также сфокусированы на критически важных сетевых сценариях, таких как абстрагирование взаимодействия с серверами и клиентами, отправка данных объекта по сети и обработка ввода.
Этот выпуск также поддерживает некоторые важные инструменты, позволяющие отслеживать потерю пакетов, размер и задержку сетевых объектов. Network Profiler - это расширение Profiler, встроенное в редактор, а Runtime Network Stats Monitor(RNSM) - это настраиваемый, более легкий "профилирующий" вид сетевых состояний, который можно запускать в отдельных сборках для игровых тестов.
Вы можете установить эти инструменты через наш пакет com.unity.multiplayer.tools в редакторе.
Все наши стеки Netcode - да, в том числе и Entities - построены поверх нашего транспортного слоя. Этот слой не зависит от сетевого кода и может быть использован в любом решении.
Unity Transport Protocol (или UTP) расширяет протокол пользовательских дейтаграмм, добавляя поддержку Unity Relay и дополнительную защиту с помощью DTLS. Этот уровень работает в Windows, Mac, Linux, iOS, Android и на всех основных консолях.
Мы также предоставляем некоторые возможности легкого моделирования сети через свойства отладочного симулятора нашего транспортного пакета. Это позволяет дросселировать или имитировать задержку или проблемы с пропускной способностью при тестировании в редакторе.
Если вы хотите получить прямой доступ к этой низкоуровневой сетевой библиотеке, вы можете установить ее непосредственно через пакет com.unity.transportpackage.
Хотя Netcode для GameObjects появился относительно недавно, уже есть игры, созданные с его помощью.

Замечательная команда Fika Productions и Team17 работают над великолепной игрой, нарисованной вручную, Корабль дураков. Это быстро развивающаяся многопользовательская кооперативная игра с морским уклоном, разработанная полностью в Netcode для GameObjects.
Мы постоянно стремимся восполнить пробелы и разъяснить происходящее в сети с помощью многопользовательских инструментов.

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

Сетевой симулятор - еще одна функция, которую мы хотели бы перенести с транспортного уровня и расширить до более полнофункционального инструмента с пользовательским интерфейсом, позволяющим вводить скачки задержки, устанавливать скорость пинга, запускать соединения/разъединения по желанию и даже настраивать определенные сетевые сценарии для запуска во время игровых тестов.
Мы рассматриваем возможность более тесной интеграции нашего транспортного пакета с Burst, а также поддержку WebSockets.
Наличие выделенного сервера является основой многих многопользовательских игр, а это влечет за собой необходимость более тонкого контроля над тем, какой именно безголовый сервер вы создаете.
Мы начали изучать процесс работы с выделенными серверами. Это начинается с предоставления вам большего контроля и четкого определения того, какие активы вам нужны на сервере, а какие нет. По сути, вы сами выбираете контент, который вам нужен при сборке сервера, что в конечном итоге экономит ваше время и, возможно, полосу пропускания.
Хотите узнать о состоянии этих и других функций в Netcode for GameObjects? Ознакомьтесь с нашей дорожной картой многопользовательских сетей, чтобы увидеть, что уже включено в 1.0 и что готовится к выпуску в будущем. Вы также можете ознакомиться с нашей недавней сессией Unite 2022 Roadmap для обзора всей экосистемы Unity.
Создание многопользовательских игр - дело непростое, и часто можно почувствовать себя подавленным, когда начинаешь разрабатывать многопользовательскую игру - даже при наличии SDK-документации.
Наша цель - предоставить вам инструменты для создания отличных многопользовательских игр для ваших игроков. Частью этого обещания является предоставление не только базовой сетевой технологии, но и документации и образовательных шаблонов, таких как Boss Room, которые понадобятся вам для понимания ее применения.
Сегодня существует множество ресурсов, с помощью которых вы можете узнать больше о многопользовательских решениях Unity.

Комната БоссаЭто небольшой образец кооперативной игры, созданный с помощью Netcode for GameObjects. Он предназначен для использования в полном объеме, чтобы помочь вам изучить концепции и схемы, лежащие в основе потока многопользовательских игр.

Мы также продолжаем разрабатывать собственные проекты, чтобы показать новые функции и общие возможности Netcode для GameObjects.
Наша последняя игра - Галактические котята2D, многопользовательская, играбельная, с открытым исходным кодом, кооперативная стрелялка.
Для начала ознакомьтесь с этими статьями в блоге, чтобы узнать о многопользовательском пакете Unity:
- Расширение возможностей многопользовательской игры с помощью Relay и Lobby
- Войдите в комнату босса: наш новый образец многопользовательской игры
- Состояние деструктивного поведения в многопользовательских играх
- Выбор правильного неткода для вашей игры
А также некоторые удивительные ресурсы, созданные нашим невероятным сообществом:
Мы надеемся, что вы будете продолжать участвовать в нашей серии Games Focus, оставляя свои отзывы. Вопросы и комментарии к этому блогу публикуйте на форуме мультиплеера или в этой специальной теме.
Посетите наш Productboard для получения подробной информации о дорожной карте. Чтобы использовать функциональные файлы cookie, вам нужно будет войти в систему с помощью своего идентификатора Unity ID и принять его. Каждая карточка на этой интерактивной доске кликабельна, что позволяет получить более подробную информацию по каждой теме и поделиться своим мнением. Нажмите на карточку, выберите степень важности темы для вас, добавьте свою точку зрения и отправьте. Затем эти отзывы напрямую направляются в соответствующие продуктовые команды.
Netcode for GameObjects - это отличное решение для создания неткода, но если вы хотите создать что-то гораздо большее - галактики или многосерверные MMO с тысячами игроков одновременно - вам стоит следить за выходом нашего следующего блога в серииСерия "Игровой фокусв котором мы расскажем о том, как создавать большие миры и более богатое окружение.
