Решили: главное меню — две кнопки входа («Создать игру», «Присоединиться»), а режим, дом и открытость для друзей выбираются одним экраном следом. Кооп перестал быть отдельным входом.
Почему: прежнее меню предлагало «Начать забег», «Продолжить», «Ристалище» и «Сетевая игра», и
последняя вела ровно туда же, куда первая, — кооп у нас свойство сеанса, а не отдельная игра.
Порядок читался наизнанку: игрок мог начать забег, забыв поднять сессию, и узнавал об этом, когда
звать друга было уже некуда. Теперь заказ собирается целиком и уезжает в цикл одним
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.