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

Почему: прежнее меню предлагало «Начать забег», «Продолжить», «Ристалище» и «Сетевая игра», и последняя вела ровно туда же, куда первая, — кооп у нас свойство сеанса, а не отдельная игра. Порядок читался наизнанку: игрок мог начать забег, забыв поднять сессию, и узнавал об этом, когда звать друга было уже некуда. Теперь заказ собирается целиком и уезжает в цикл одним GameStartRequest — цикл его исполняет, а не выбирает режим сам.

Отдельно исчезла пара «Начать / Продолжить». Гильдия и есть слот сохранения (ТЗ save-system §3), поэтому игрок выбирает дом, а забег в нём либо уже идёт, либо начинается; строка дома сама говорит, что внутри. Пара кнопок отвечала сразу на все дома и потому лгала при втором доме.

Сказано: «Т.е. скорее будет 2 кнопки … 1 - Создать игру. 3 режима пока что - Кампания, Ристалище и PVP … Кроме этого внизу будет галочка - создать онлайн лобби (изначально вкл). … 2 - Присоединиться. Открывает список друзей в Steam, где сами можем нажать ПКМ - присоединиться.» (02.08.2026, сессия d084ed77). Заход был запланирован тогда же шагом 5 в docs/scope-split-progress.md, но отложен и всплыл как «вообще не тот порядок в UI» (03.08.2026).

Грабли:

  • Экран «Сетевая игра» умер целиком, и вместе с ним чуть не уехал выход из коопа: Leave() звался ТОЛЬКО оттуда. Теперь сессия кончается вместе с игрой — цикл гасит её при возврате в меню, рядом с закрытием сеанса. Это и правильнее: кооп не может пережить игру, в которой поднялся.
  • UI не ссылается на слой Game — заказ дев-Ристалища, который зовут и презентер, и роутер, пришлось положить к самому типу (GameStartRequest.DevProvingGrounds), а не к презентеру. Две копии одного заказа разъехались бы на первой правке.
  • Чтение домов меняет активный дом. Ключ забега строится только для АКТИВНОЙ гильдии, поэтому «идёт ли там забег» спрашивается перебором с переключением. Забудь вернуть активную — и заход в меню молча переселил бы игрока, а заметил бы он это, начав играть не тем составом. Держит NewGameGuildListTests.
  • PvP не пришлось изобретать: ActivitySetup.Pvp (площадка + скрытый противник + только свои) существовал с 02.08.2026. Не хватало ровно кнопки.

Владелец правды: GameStartRequest.cs, MainMenuMessages.cs, GameFlow.PlayAsync, NewGameScreenView.cs, тесты NewGameGuildListTests.