Подземелье Глубокой Пиццы: Онлайн кооператив на троих в Unity

Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.
Узнайте, как двухместная команда Behold Studios создала онлайн-кооперативную приключенческую игру Deep Dish Dungeon с использованием Netcode for GameObjects, Lobby, Relay, Vivox и Unity 6.3.
Как команде из двух человек без выделенного сетевого инженера создать онлайн-кооперативную игру?
Основанная в Бразилиа, Бразилия, а теперь базирующаяся в Торонто, Канада, Behold Studios создает игры на Unity более десяти лет. Их последний релиз, Deep Dish Dungeon, — это кооперативный данжероллер для одного-трех игроков. Для большей части разработки над Deep Dish Dungeon работали всего два человека: Руководитель студии Сауло Камаротти занимался дизайном, программированием, бизнесом и маркетингом, в то время как художница Каролина Баумгартен создавала все визуальные материалы: от концепт-арта до 3D-моделей, текстур, интерфейса и многого другого.
Deep Dish Dungeon с нетерпением ждали, набрав более 500 000 желаний в Steam до запуска, и теперь доступен в Steam и Xbox Game Pass с кроссплеем. Прочтите тематическое исследование, чтобы узнать, как Behold Studios сэкономила время и ресурсы с помощью Unity Services и Unity 6.3, и поймите проектные решения, которые сделали этот амбициозный проект возможным.

Deep Dish Dungeon | Behold Studios | Raw Fury
Результаты:
- Более 500 000 добавлений в список желаемого в Steam до запуска, включая 65 000 в первые несколько дней после анонсирующего трейлера
- Игровой онлайн-прототип Multiplayer в первый день разработки
- Кроссплей между Steam и Xbox без дополнительного сетевого кода
- Localization на 11 языках
- Поздние игроки, которых осведомили обо всех врагах, предметах и объектах в общем подземелье

Превращение ограничений Multiplayer в сильные стороны
Behold Studios выпускала Multiplayer игры ранее, включая игру в Facebook в 2011 году и Out of Space в 2020 году. Для Deep Dish Dungeon Сауло намеренно держал команду небольшой. Он нанял Каролину для проекта, потому что как междисциплинарный художник, она могла заниматься 3D, 2D, логотипами, иллюстрацией и концепт-артом.
Будучи единственным программистом, Сауло знал, что ему придется быть предельно осторожным в удержании проекта в рамках заданного объема. «Multiplayer добавляет гораздо больше сложности в проект, и обычно у людей есть выделенные инженеры для работы над этими проблемами», — говорит он. Это не просто команда из двоих, это просто я как программист. Итак, мне нужно было создать игру, которая использует ограничения Multiplayer как фактор дизайна.

Deep Dish Dungeon | Behold Studios | Raw Fury
Это привело к серии преднамеренных решений, которые превратили эти ограничения в сильные стороны:
- Только кооператив, без PvP: Поскольку игроки являются Friends на одной стороне, игра может доверять каждому клиенту.
- Peer-to-peer, без Dedicated Server: Игрок, который создает игру, выступает в роли хозяина.
- Толерантный к задержкам: Высокий пинг не разрушает игровой опыт, поэтому игре не нужно сложное предсказание движения.
- Намеренно простой вид: Игра рендерится при одной трети разрешения вывода для пиксельного стиля, который соответствовал набору навыков Behold Studios и избегал сложной работы с визуальными эффектами и шейдерами.
Художественный стиль также сыграл роль в формировании ожиданий у игрока. «Даже эстетика помогает нам», — объясняет Сауло. «Вы ожидаете, что некоторые вещи не будут полностью сглажены».

Deep Dish Dungeon | Behold Studios | Raw Fury
Проектирование для Multiplayer с первой строки кода
Сауло имел предыдущий опыт работы с выделенными Multiplayer-стеками, такими как Photon. Тем не менее, он выделил себе бюджет на прототип в три месяца, чтобы проверить, выдержит ли стек многопользовательской игры от начала до конца Unity 6.
«Когда мы увидели Netcode for GameObjects, мы поняли, что это именно то, что нам нужно», — говорит он. «Мы могли бы использовать основную логику Unity — то, как мы создаем вещи и управляем нашими объектами, — и добавить поверх нее слой Multiplayer».
Он начал с примеров кода в Документации Unity для Lobby и Relay и добился быстрого прогресса. «Первая строка кода уже реализовывала систему Multiplayer Lobby и Relay», — говорит он. В первый день я уже играл в Multiplayer-игру.
Мышление о Multiplayer с самого начала разработки означало, что никогда не существовало кода для одиночной игры, который можно было бы рефакторить. Сауло видел, как другие команды тратят от одного до шести месяцев на добавление Multiplayer в существующий проект.

Deep Dish Dungeon | Behold Studios | Raw Fury
Соединение игроков с Lobby и Relay
Для игрока присоединение к другу — это один клик. Хост выбирает друга из списка Friends в Steam и отправляет приглашение, содержащее ID Lobby. Друг принимает, присоединяется к тому же Lobby (вводя пароль, если хост его устанавливает) и подключается к хосту через Relay.
Самая сложная часть происходит за кулисами. Друг может присоединиться к уже проходящей сессии, поэтому ему придется наверстать все сетевые объекты в подземелье, такие как мертвые враги, их оставшиеся очки здоровья и какие предметы были подобраны. Сауло хотел избежать создания пользовательского управления сценами. Вместо этого Deep Dish Dungeon сериализует сцену в файл сохранения при начале сессии. Когда кто-то присоединяется, объекты сцены удаляются и загружаются динамически из синхронизированного состояния хоста. Возвращающиеся игроки появляются в своей последней сохраненной точке возрождения.
Сауло говорит, что самой сложной проблемой было обращение с состоянием, а не подключение игроков.
«В игре для одного игрока вы точно знаете, что события происходят в определенном порядке», — говорит он. В Multiplayer вы никогда не знаете в точности, каким будет состояние переменных и объектов, если кто-то присоединится в середине процесса. Объекты должны знать, что делать, если их вызывают в неправильном состоянии.

Deep Dish Dungeon | Behold Studios | Raw Fury
Превращение голоса в механику с Vivox
Многие игроки в кооперативных играх уже используют такие инструменты, как Discord для голосового чата, но Сауло выбрал Vivox, потому что хотел, чтобы голос был встроен в сам опыт исследования подземелья.
«Я хотел, чтобы игроки почувствовали подземелье, а также его одиночество», — говорит он. Я хотел, чтобы они почувствовали, что их Friends остаются позади.
Голос в Deep Dish Dungeon позиционный и фильтруется пространством вокруг каждого игрока. Около 15 интерком-динамиков, расположенных по всему подземелью, можно использовать для трансляции голоса игрока всем. Это позволяет одному другу остаться в лагере и готовить, в то время как другой отправляется на сбор и сообщает по радио о припасах. Разговоры также учитываются как шум, на который реагируют враги, как и прыжки, взмахи факелом или лязганье в доспехах.
«Теперь игроки думают о том, как и когда использовать эту функцию», — говорит Сауло. Это добавляет многослойности во взаимодействие.

Deep Dish Dungeon | Behold Studios | Raw Fury
Улучшение геймплея с помощью Analytics
Deep Dish Dungeon — это нелинейный песочница без карты, без компаса и с несколькими решениями для большинства препятствий. Это затруднило сценарное тестирование. «Каждый раз, когда мы смотрели, как кто-то играет, он вел себя по-разному», — говорит Сауло.
Он построил стратегию Unity Analytics вокруг этой свободы. Он отслеживает, как предметы перемещаются в игре, и регистрирует каждый удар, боевую встречу и смерть вместе с инвентарем игрока и тем, ел ли он. Последняя точка данных оказалась важной.
В Подземелье Глубокой Тарелки еда — это не лечебное зелье. «Это мускулистый», — говорит он. Я видел много игроков, исследующих мир на пустой желудок, и это были те игроки, которые сообщали, что игра слишком сложная.
Открытие привело к созданию новой игровой системы: индикатора голода, который снижает здоровье игроков, если они слишком долго не едят. В результате этой механики игроки могут легче понять, почему им нужно поесть, прежде чем отправиться в подземелье.

Панель Analytics для демо Deep Dish Dungeon
Поимка ошибок с помощью диагностики
Пока у него не появился собственный отдел контроля качества, а его издатель Raw Fury не присоединился к нему, Сауло использовал Diagnostics для поиска сбоев и ошибок, которые он не мог воспроизвести на своих машинах. Это также помогло ему отсортировать их по частоте и платформе.
В одном отчете началось с того, что игроки сказали, что не могут атаковать врагов. «Атака работает хорошо, враг работает хорошо – что происходит?» Сауло говорит. Данные диагностики показали цепочку событий, которая началась гораздо раньше, с инвентаризацией, ссылающейся на товар, которого больше не существовало. Мы могли бы поймать проблему намного раньше.

Панель диагностики для демо Deep Dish Dungeon
Тестирование Multiplayer в Unity 6.3
Для соло-программиста настройка сессий для тестирования Multiplayer может занять много времени. Multiplayer Play Mode в Unity 6.3 удалил большую часть этой работы. Сауло может войти в режим Play и запустить два или три клиента в редакторе Unity одновременно, либо в полном подземелье, либо в выделенных тестовых сценах.
«Я могу протестировать это где угодно в игре с двумя или тремя игроками по нажатию кнопки», — говорит он. И запуск локальной игры практически такой же, как запуск через Relay и Lobby. Это тот же код.
Улучшенная стабильность Unity 6.3 была не менее важна. Сауло помнит сбои почти каждый день в старых версиях. После обновления до Unity 2023, а затем до Unity 6, он вспоминает: «Мне потребовалось некоторое время, чтобы понять, что с момента сбоя прошло больше месяца».
Перевод с использованием пакета Localization
Предыдущие игры Behold Studios полагались на сторонние плагины для Localization, которые не всегда успевали за новыми версиями Unity. На этот раз команда использовала пакет Localization Unity 6. Он предоставляет таблицы строк, которые синхронизируются с Google Таблицами, и цепочку запасных шрифтов, которая пытается использовать второй шрифт, когда первый не может отобразить язык. Deep Dish Dungeon выходит на 11 языках: Английский, бразильский португальский, французский, немецкий, испанский, латиноамериканский испанский, польский, русский, японский, а также упрощенный и традиционный китайский.
Совет Сауло здесь — планировать длительные переводы как можно скорее. «Очень мудро начинать думать о Localization рано и создавать интерфейс, который уже это учитывает», — говорит он.

Deep Dish Dungeon | Behold Studios | Raw Fury
Советы на прощание
Для небольших команд, рассматривающих онлайн Multiplayer, главный совет Сауло касается дизайна, а не технологий.
Создайте игру, в которой вы можете доверять клиенту. Создайте кооперативную игру. «Создайте игру, где задержка не является проблемой – если у вас 500 миллисекунд задержки, игра все равно работает благодаря дизайну», — говорит он. С точки зрения дизайна и производства это важнее, чем сама технология, которую вы собираетесь использовать.