Как Soft Crunch Games создали Foxy Dumplings для каждой платформы

Oct 16, 2026
Foxy Dumplings | Soft Crunch Games

Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Подготовка одной и той же игры для PC (Windows, macOS и Linux) через Steam, GOG, Epic Games Store и Microsoft Store с поддержкой Xbox Play Anywhere, а также на Nintendo Switch™, Nintendo Switch, PlayStation®4, PlayStation 5, Xbox Series X|S, iOS и Android одновременно — это амбициозная техническая задача для любой студии. Для четырехместной основной команды Soft Crunch Games это означало включение кроссплатформенной разработки в архитектуру игры с самого начала.

Foxy Dumplings — это уютная игра о готовке и управлении, в которой Лиза, профессиональный повар, восстанавливается после выгорания, начиная заново с семейного рецепта пельменей и фудтрака. Игроки путешествуют по 12 локациям, вдохновленным реальными кулинарными культурами, выращивают ингредиенты, изучают региональные рецепты, управляют грузовиком и придумывают собственные блюда.

Гжегож Вотроба занимается всем программированием, портированием платформ, конвейерами сборки и сертификацией. При одном программисте, отвечающем за столько целей, проект строился вокруг одного правила: Каждая платформа получает одну и ту же игру из одного и того же коммита.

Фокси Дамплинги

Один проект, одна ветка, одна игра

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

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

Файл сохранения использует один и тот же бинарный формат везде, поэтому для переноса прогресса между устройствами не требуется преобразование.

«Мы также рассматривали требования сертификации как проектные ограничения с самого начала», — говорит Ватроба. "Foxy Dumplings не имеет полей ввода текста, например, поэтому нам никогда не приходится иметь дело с экранными клавиатурами на разных системах." SDK для магазинов PC, таких как Steamworks, автоматически удаляются из консольных и мобильных сборок.

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

Сохранение кода платформы на краях

Foxy Dumplings — это один проект Unity и одна ветка. Геймплей всегда общий. Код платформы разрешен только на границах, где игра взаимодействует с системой: сохранение, учетные записи пользователей, достижения и трофеи, облачная синхронизация, проверки DLC, системные диалоги и экспорт фотографий.

Печень говорит: «Каждая система находится за интерфейсом». Мы используем паттерн фасад, чтобы предоставить геймплею единую точку входа, а затем небольшой фабрика выбирает соответствующего провайдера платформы при запуске. Геймплей может сказать: «разблокируй это достижение», но он не знает, появится ли оно в Steam, PlayStation® Network или вообще нигде.

Конфигурация времени выполнения обрабатывает большинство различий, таких как возможность игрока выйти на рабочий стол или открыть веб-ссылку. Скриптинг определяет символы, переданные скриптами сборки, обрабатывая такие случаи, как исключение Steamworks из сборки для не-Steam PC. Определения платформы Unity — это крайняя мера, только там, где код не может скомпилироваться в другом месте.

Различия в текстах — это тоже данные. Ключи Localization имеют варианты для разных платформ, поэтому «Достижение» может стать «Трофей» на PlayStation® без изменения игрового кода.

Foxy Dumplings | Soft Crunch Games

Автоматизация всего, что происходит дважды

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

Создание определенной сборки — это один клик с правильными определениями, выходной папкой и настройками. Они также выполняют проверки компиляции для примерно 40 конфигураций платформ и хранилищ, отлавливая классическую проблему «компилируется на Windows, но ломается на PlayStation» до того, как ее увидит QA.

Область применения тоже важна. Мы отказались от функций, которые умножают работу платформы: текстовый ввод, онлайн-функции, которые нам пришлось бы размещать или модерировать, и внутриигровые покупки. «Мы также поставляем одну сборку PlayStation, которая работает как на PlayStation 4, так и на PlayStation 5», — говорит он.

Подрядчикам не нужно думать о платформах. Пользовательский интерфейс разрабатывается один раз на холсте 4K и масштабируется для каждой платформы. Звуковая команда работает в одном проекте FMOD. Геймдизайнер создает контент в одних и тех же наборах данных везде. Он говорит: «Различия платформ — это моя работа, а не их».

Foxy Dumplings | Soft Crunch Games

Проектирование ввода и пользовательского интерфейса до написания кода

Первый шаг для Wątroba заключался в проектировании на бумаге с UX-дизайнером команды Foxy Dumplings.

«Я видел, как проекты страдали из-за того, что на входе и UX не продумали с самого начала», — говорит Вотроба. Наш подход был по сути: Это наша игра, сделайте так, чтобы она работала на каждой платформе.

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

После завершения UX они создали элементы управления вокруг Input System с одним набором действий и тремя схемами управления: геймпад, клавиатура и мышь, а также сенсорный экран. Игра переключает схемы в реальном времени на основе того, что использовали игроки в последний раз, и интерфейс автоматически следует за этим.

Команда использовала один кнопочный префаб-промпт почти в 200 местах. Он понимает ввод для каждой платформы. «Возьми контроллер, и подсказки меняются; пошевели мышью, и они снова меняются», — говорит он.

Кулинарные мини-игры были самой сложной частью, потому что каждая из них должна работать со всеми методами ввода. Steam Deck научил их важному правилу: Никогда не спрашивайте, присутствует ли устройство; спрашивайте, может ли оно фактически произвести нужный вам ввод.

Wątroba объясняет: «Его сенсорный экран может выглядеть как мышь и левая кнопка, что сделало невозможным завершение мини-игры, требующей обеих кнопок мыши». Проектирование, ориентированное на возможности, а не на устройства, также помогло на более старом оборудовании Android.

Foxy Dumplings | Soft Crunch Games

Профилирование самого слабого оборудования в первую очередь

Foxy Dumplings — это 2D-игра с персонажами Spine и неосвещенными материалами, поэтому, когда GPU испытывает трудности, это обычно связано с слишком большим количеством полноэкранных слоев или слишком большим количеством пикселей.

Один пример был кухня. Некоторые эффекты были отрендерены в текстуру рендера 4K и наложены поверх пользовательского интерфейса – это излишне на дисплее 1080p или 720p. Watroba изменил рендер-текстуры, чтобы они соответствовали фактическому разрешению экрана, и отключил HDR и глубинные текстуры, которые игра никогда не использовала. Визуально ничего не изменилось, но на Steam Deck этот слой теперь занимает примерно в 8 раз меньше пикселей каждый кадр, а его рендер-текстура упала с примерно 32 МБ до примерно 4 МБ.

Процесс профилирования Вятробы такой же, как тот, который он выучил много лет назад: Он создает сборку для разработки на реальном устройстве, подключает Unity Profiler, находит, что является ресурсоемким, измеряет это, исправляет и измеряет снова. Он говорит: «Устройство — король».

Память также нуждается во внимании. Команда поддерживает 14 языков, включая китайский, японский, корейский и тайский, каждый со своим атласом шрифтов. Когда команда увидела скачки памяти во время смены языка, они профилировали путь выделения и обнаружили, что символы, отсутствующие в статических атласах, растеризовались во время выполнения в избыточные атласы 4096×4096, с полной повторной загрузкой атласа размером 16 МБ для каждого нового символа.

Исправление заключалось в перегенерации запасных шрифтов с страницами 2048×2048 и добавлении глифов пачками перед переключением, что сократило память нового атласа для японского языка с примерно 48 МБ до 4–8 МБ на шрифт.

Команда использовала Addressables в проекте, потому что Unity Localization построен на них. Строковые и таблицы ресурсов для всех 14 языков находятся в группах Addressable и загружаются по языку. «Всё по-прежнему отправляется локально, но Addressables дают нам чистый способ управлять этими данными и памятью».

Foxy Dumplings | Soft Crunch Games

Тестирование совместной игры один раз, поведение платформы много раз

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

Что делает QA управляемым для них, так это то, что платформы делят почти весь свой код. Геймплей глубоко тестируется на PC, где итерации происходят быстрее. На консолях и мобильных устройствах тестирование сосредоточено на уровне платформы: требования сертификации, сохранение и загрузка, приостановка и возобновление, переключение пользователей, отключение контроллеров, трофеи и достижения, а также нехватка места на диске.

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

Публичная демонстрация также стала важным источником тестирования. Более 18 000 человек в нее играли, и команда получила более тысячи ответов на опросы, которые привели к добавлению функций доступности, исправлению ошибок, настройке и улучшению качества жизни.

Сначала делаем кроссплатформенные сохранения переносимыми

Кроссплатформенный прогресс начался с того, что сохранение стало переносимым. Прогресс — это один зашифрованный бинарный файл, байт за байтом в одном и том же формате на каждой платформе. Сохранение, сделанное на мобильном устройстве, можно прочитать на PC.

Синхронизация имеет два уровня. Первый — это нативная Cloud Save каждой платформы. Второй — это Unity Cloud Save, который передает прогресс между экосистемами. Оба находятся за одним интерфейсом, с логикой слияния над ними.

Каждый слот сохранения сравнивается по временной метке последнего обновления. Удаленные слоты оставляют маркер, чтобы они не возвращались из облака. Слияние происходит только в главном меню, никогда в середине игрового дня, потому что Foxy Dumplings сохраняется, когда игрок ложится спать. Загрузки повторяются тихо, когда нет сети, и сбрасываются, когда игра приостановлена.

Команда связывает консоль и PC с помощью кода Unity Authentication, поэтому игрокам не нужен другой аккаунт. Кросс-прогрессия является опциональной, и игра остается полностью играбельной в автономном режиме.

Печень говорит: «Самый большой урок заключался в том, что хранение — это легкая часть; идентичность — сложная часть». Каждая экосистема имеет свое представление о том, кто является игроком, поэтому Authentication должна доверять билетам Steam, токенам PlayStation и токенам Xbox по отдельности.

Foxy Dumplings | Soft Crunch Games

Построение Foxtagram без создания проблемы с другой платформой

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

Основное архитектурное решение заключалось в том, чтобы оставить редактор в стандартном Unity UI без платформозависимого кода внутри него. Wątroba объясняет: «Его 50 фильтров — это пресеты одного шейдера на фотоматериале, а не наложения». Когда вы делаете снимок, выделенная камера преобразует область снимка в квадратную текстуру рендеринга при выходном разрешении. Мы считываем это обратно с помощью AsyncGPUReadback и кодируем результат как JPG. Эта рамка похожа на вспышку камеры.

Разрешение вывода и качество JPG зависят от настроек для каждой платформы. Редактор поддерживает мышь, контроллер и сенсорный ввод: перетаскивание и колесо мыши на настольном компьютере; стики и триггеры на контроллере; а также щипок и поворот на сенсорном экране.

Обмен вне игры осуществляется с помощью собственных инструментов каждой платформы. PC может использовать папку с фотографиями или медиатеку Steam, консоли используют свои системные альбомы, а мобильные — системный лист обмена. Для небольшой команды использование существующих функций обмена платформы устраняет много работы по сертификации и Moderation.

Foxy Dumplings | Soft Crunch Games

Переход на Unity 6.3 LTS

«Самое ценное, что принес Unity 6.3 LTS, — это выпуск с долгосрочной поддержкой, где все, от чего мы зависим, согласуется, и окно поддержки покрывает наши потребности в запуске», — говорит Ватроба.

Команда обнаружила, что 6.3 более стабилен в таких областях, как редактирование ScriptableObjects, а старые устройства Android получили выгоду от исправлений Vulkan.

Время сборки тоже улучшилось. С IL2CPP я бы оценил, что наши сборки примерно на 10–15% быстрее, в зависимости от платформы и типа итерации. Производительность во время выполнения также улучшилась на несколько процентов, особенно на более слабом оборудовании.

Обновление прошло в основном гладко. Каждый эффект VFX Graph изначально стал невидимым, потому что ссылки на шейдеры были потеряны во время миграции; повторный импорт графов быстро это исправил.

Планирование порта до того, как порта не существует

Решение, оказавшее наибольшее влияние на команду, заключалось в сохранении одной ветки и строгом соблюдении различий платформ с самого начала. "Игровой код никогда не спрашивает, на какой платформе он работает." «Если что-то отличается, то это данные, настройка качества или провайдер за интерфейсом», — говорит Вонтроба.

Команда создала технический архитектурный документ наряду с документом по геймдизайну, арт-библией и нарратив-библией, что они рекомендуют делать. Печень заметки: «Проектирование технических слоев игры до производства помогло нам разделить обязанности и значительно упростило добавление платформ».

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

Foxy Dumplings | Soft Crunch Games

Доставка одной игры куда угодно

Foxy Dumplings построен на простом техническом обещании: одна и та же игра, из одного и того же кода, на PC, консолях и мобильных устройствах. Для небольшой команды это сработает, только если кроссплатформенная разработка рассматривается как архитектурное ограничение, а не как задача по портированию, отложенная на конец.

«Сохраняя геймплей общим, изолируя интеграции платформ, автоматизируя повторяющуюся работу по сборке и тестируя на самых слабых целях на ранних этапах, мы стремимся сделать одновременный запуск менее похожим на поддержание множества версий Foxy Dumplings и более похожим на выпуск одной игры везде», — говорит Вотроба.

Foxy Dumplings будет доступен на ПК (Windows, macOS и Linux) через Steam, GOG, Epic Games Store и Microsoft Store с функцией Xbox Play Anywhere, а также на Nintendo Switch 2, Nintendo Switch, PlayStation 4, PlayStation 5, Xbox Series X|S, iOS и Android в 2027 году. Посмотрите больше историй от разработчиков Unity в Unity Blog и Resource Hub.

*Nintendo Switch является товарным знаком Nintendo.