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

портирование

Специфика железа

На десктопе лишний мегабайт прячется за виртуальной памятью, консоль же подписывает контракт на каждый байт. Единый пул часто делится между CPU и GPU посредством UMA, поэтому фрейм-аллокатор размечается заранее, а фрагментация лечится «банком» — кольцевым буфером с детерминированным порядком освобождения. Понятие endianness перестаёт быть архивным: PowerPC-старички Nintendo ещё заставляют перекладывать байты при работе с сетевым протоколом.

Оптимизация графического конвейера

GPU для приставки напоминает локомотив со строго заданной тягой. Слишком широкий шейдерный веер обрушит частоту кадров без предупреждений драйвера. Я минимизирую permutation explosion, оставляя максимум шесть веток на материал. Nyquist-шум, возникший из-за агрессивного TAA, гасится двойной дискретизацией глубины. Профилирование идёт через PMU (Performance Monitoring Unit) и TRC (Technical Requirements Checklist) от вендора: первый отсчитывает такты, второй — галочки сертификации.

Сертификация и First-Party требования

Чек-листы платформодержателей напоминают таможенную декларацию: нельзя запускать игру без иконки, запрещена громкость выше −23 LUFS, геймпад реагирует на reconnect в течение трёх секунд. Несоблюдение отправляет билд на доработку, слот на релиз скользит, партнёры хмурятся. Я включаю автоматические тесты compliance прямо в CI: скрипт отключает сеть, выдёргивает устройство хранения, ускоряет системные события, имитирует suspend/resume.

Патч-ревю и пост-лаунч

После релиза уравнение усложняется: патч проходит те же TRC-ворота, но окно публикации уже теснее. Я держу два репозитория: основной и сертификационный. Изменения мержатся в икарусовском ритме: одно лишнее касание — и билд возвращается, как восковое крыло, растаявшее над морем сроков. Hotfix весом свыше 10 % от базовой сборки облагается fee, поэтому дифф сжимаю до бинарного deltapatch.

Портирование на консоль напоминает ловлю звука в виниловой студии: ограничений многократно меньше, чем слухи пугают, но каждое из них железно. Я держу метрику «кадр-в-кадр»-30 %: если ПК-версия укладывается в 11 мс, приставка получает стабильные 16,67 мс. Пока цифра выдерживается, код свободен от алхимии костылей, а команда спит по расписанию.

От noret