Product roadmap

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

KIKI SAINTONGE / UNITY TECHNOLOGIESSenior Product Manager
Nov 16, 2022|12 Мин
Игры в фокусе: Создание и управление сетевыми играми с многопользовательской связью
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.
Это восьмой блог из серии Games Focus , в котором освещаются ключевые инициативы по разработке продуктов на предстоящий и последующие годы. В этом выпуске мы расскажем о состоянии, планах на ближайшие релизы и будущем видении многопользовательской сетевой системы Unity.

Привет, меня зовут Кики Сентонж, я менеджер по продуктам в команде по работе с мультиплеером - той, что занимается разработкой Unity. Netcode for GameObjects решение.

Я работаю в Unity около года, но с 2013 года являюсь хоббистом и инди-разработчиком Unity. Моя страсть - игры, особенно игры, которые вы создаете с вдохновением. Мне не терпится рассказать о наших решениях для мультиплеера в этом посте, тем более что многие из вас заявляли о необходимости и желании иметь более полное и доступное решение для разработки мультиплеера. Мы ближе, чем вы думаете.

Единство: Games Focus | Охватите каждый аспект вашей многопользовательской игры
Развивающийся набор решений для многопользовательских игр

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

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

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

Единство: Games Focus | Player count evolution GIF

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

Единство: Games Focus | Неткод для GameObjects теперь доступен в 2020 и 2021 LTS
Готовые улучшения

В этом году мы объявили о выпуске нескольких замечательных решений для неткода. Наш первый крупный выпуск Netcode для GameObjects уже доступен в 2020 и 2021 LTS.

Это решение для неткода, основанное на объектах GameObject, поможет вам начать создавать небольшие кооперативные многопользовательские игры. Однако если вы создали свой опыт с помощью DOTS (Entities), мы также рады сообщить, что на Tech Stream 2022 появится наше решение Netcode for Entities, которое поможет вам подготовиться к более масштабной многопользовательской игре. Подробнее об этом выпуске читайте в следующем посте.

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

Инструментарий для отладки Netcode

Этот выпуск также поддерживает некоторые важные инструменты, позволяющие отслеживать потерю пакетов, размер и задержку сетевых объектов. 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

Хотя Netcode для GameObjects появился относительно недавно, уже есть игры, созданные с его помощью.

Рекламное изображение для нарисованной от руки игры Fika Productions и Team17, Ship of Fools

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

Куда мы направляемся

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

На этом снимке экрана одновременно работают три клиента: два подключены и один ожидает подключения. Все они размещаются в главном редакторе (в фоновом режиме) и видны с открытыми журналами консоли для отладки.

Режим многопользовательской игры станет первым шагом к тому, чтобы превратить разработку многопользовательской игры в первоклассный опыт редактора.

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

Компонент сетевого симулятора, подключенный к объекту NetworkManager. Он показывает состояние подключения, параметры всплеска задержки и настраиваемые параметры для тестирования конкретных условий.

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

Мы рассматриваем возможность более тесной интеграции нашего транспортного пакета с Burst, а также поддержку WebSockets.

Контролируйте сборку выделенного сервера

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

Мы начали изучать процесс работы с выделенными серверами. Это начинается с предоставления вам большего контроля и четкого определения того, какие активы вам нужны на сервере, а какие нет. По сути, вы сами выбираете контент, который вам нужен при сборке сервера, что в конечном итоге экономит ваше время и, возможно, полосу пропускания.

Хотите узнать о состоянии этих и других функций в Netcode for GameObjects? Ознакомьтесь с нашей дорожной картой многопользовательских сетей, чтобы увидеть, что уже включено в 1.0 и что готовится к выпуску в будущем. Вы также можете ознакомиться с нашей недавней сессией Unite 2022 Roadmap для обзора всей экосистемы Unity.

Ресурсы

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

Наша цель - предоставить вам инструменты для создания отличных многопользовательских игр для ваших игроков. Частью этого обещания является предоставление не только базовой сетевой технологии, но и документации и образовательных шаблонов, таких как Boss Room, которые понадобятся вам для понимания ее применения.

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

The Boss Room демонстрирует особый подход к созданию и сетевому взаимодействию в Unity для небольшой кооперативной игры.

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

Галактические котята, кооперативный образец 2D малого масштаба

Мы также продолжаем разрабатывать собственные проекты, чтобы показать новые функции и общие возможности Netcode для GameObjects.

Наша последняя игра - Галактические котята2D, многопользовательская, играбельная, с открытым исходным кодом, кооперативная стрелялка.

Для начала ознакомьтесь с этими статьями в блоге, чтобы узнать о многопользовательском пакете Unity:

А также некоторые удивительные ресурсы, созданные нашим невероятным сообществом:

Дайте нам знать, что вы думаете.

Мы надеемся, что вы будете продолжать участвовать в нашей серии Games Focus, оставляя свои отзывы. Вопросы и комментарии к этому блогу публикуйте на форуме мультиплеера или в этой специальной теме.

Посетите наш Productboard для получения подробной информации о дорожной карте. Чтобы использовать функциональные файлы cookie, вам нужно будет войти в систему с помощью своего идентификатора Unity ID и принять его. Каждая карточка на этой интерактивной доске кликабельна, что позволяет получить более подробную информацию по каждой теме и поделиться своим мнением. Нажмите на карточку, выберите степень важности темы для вас, добавьте свою точку зрения и отправьте. Затем эти отзывы напрямую направляются в соответствующие продуктовые команды.

Netcode for GameObjects - это отличное решение для создания неткода, но если вы хотите создать что-то гораздо большее - галактики или многосерверные MMO с тысячами игроков одновременно - вам стоит следить за выходом нашего следующего блога в серииСерия "Игровой фокусв котором мы расскажем о том, как создавать большие миры и более богатое окружение.