Решили: бут-экран показывается ВОКРУГ загрузки мира, а не после неё, а сплеш Unity выключен совсем — первое, что видит игрок, это наш экран с надписью.
Почему: между поднятым миром и первым UI успевало мелькнуть несколько кадров пустой арены — мир
приходит со своей камерой и рисует свой фон (0.12, 0.12, 0.16) со следующего же кадра. Ровно тот же
фон Макс видел и на выходе из игры, когда меню уже снято выбором, а движок ещё закрывается.
Альтернативу — оставить сплеш Unity и подставить в него картинку-надпись — отвергли: два экрана
подряд и есть то, что раздражает, а надпись у нас уже живёт шрифтом на бут-экране, и рисовать её
второй раз в PNG значило бы завести второго владельца одного и того же имени игры. Цена решения
названа вслух: пока Unity поднимает первую сцену, экран чёрный (у сплеша была ровно эта работа).
Вернуть его — одна галка PlayerSettings.SplashScreen.show.
Побочный выигрыш: надпись «Загрузка» и знак рядом с ней перестали врать. Прежний докстринг честно признавался, что спиннер декоративен, потому что загрузка проходит ДО показа.
Сказано: «У нас в начале в загрузке какой-то максимальное кринге лого, можем поставить просто надпись нашу как в сплеше?» и «У нас перед появлением сплеша с подписью фмод и прочих - мы видим синий задний фон на пару кадров, это плохо и надо убрать» (03.08.2026, сессия 272cfad5).
Грабли: перенос публикации в первый кадр воскресил класс дефекта, который у нас уже записан —
заказ уходит раньше, чем родился адресат. Подписку на запрос бут-экрана регистрирует
UiRootBootstrap.Start, шлёт его GameBootstrap.Start, и порядок между двумя Start не гарантирован
ничем. Раньше это не значило ничего: запрос уходил кадры спустя, после двух await на загрузку сцен.
Публикация MessagePipe без подписчика — пустая операция без ошибки, поэтому нарушение выглядело бы не
исключением, а игрой, вставшей на чёрном экране, и через раз. Лечится объявленным порядком
([DefaultExecutionOrder(-50)]), а не ожиданием кадра: «обычно успевает» — это не контракт.
Отдельно: гипотезу «мигает из-за смены видеорежима» проверили и отбросили — fullScreenMode в
настройках уже FullScreenWindow, то есть совпадает с дефолтом DisplayService. Синим оказался фон
мира, а не переключение монитора.
Владелец правды: GameBootstrap.cs, TitleCardPresenter.cs, UiRootBootstrap.cs,
тест BootOrderTests.