GoHome — узкие места и открытые вопросы


В доке два слоя: свободный brainstorm (тема "покемон домой", саквояж, телепорт-кабина) и формализованный промпт от 18.09.2026 (ООО "Бронзовые шары", директор, конкретные очки повышения). Ниже — где они конфликтуют и что не доделано ни в одном из слоёв.

Канон: что откуда — РЕШЕНО (2026-09-19)

Промпт 18.09 — основной сюжетный каркас (работа в "Бронзовых шарах", прокачка до директора). Телепорт-кабина из раннего brainstorm — финальная фантастическая развязка, но не используется как сюжетный маркер/лор-указатель на ранних и средних этапах игры. Раскрывается только по факту прокачки до высшего ранга (директор) — то есть это пост-победная/альтернативная концовка "финал финалов", а не то, что намекается заранее диалогами или событиями. Практическое следствие для сценаристики: во всех текстах звонков, событий на пути и подсказок мастер-покемона — телепорт-кабина не упоминается и не анонсируется. Первое появление темы — на экране после/у входа в достижение ранга директора (или прямо перед ним, как доступная покупка).

Остальное из раннего слоя (экран загрузки с пасхалками Nord-Tycoon/Igrok, выбор пиксель-арт аватара, 4 слота сохранений) — статус пока открыт, не переносим автоматически, разбирать отдельно при детализации UI-экранов. Пересекается без конфликта в обоих слоях:

  • сезонность транспорта/локаций (лес/самокат/велосипед — не зимой, лыжи — только зимой)
  • продвижение через "бронзовые шары" по менеджерским уровням
  • вечерний путь домой как сцена с опасностями

Практическое следствие для сценаристики: во всех текстах звонков, событий на пути и подсказок мастер-покемона — телепорт-кабина не упоминается и не анонсируется. Первое появление темы — на экране после/у входа в достижение ранга директора (или прямо перед ним, как доступная покупка).

Звонки: механика – частично РЕШЕНО (2026-09-21)

Проценты – подтверждено, это реальная механика, не заметка автора: процент на варианте ответа = шанс успеха именно этого варианта (RNG после выбора, не заранее известная "правильность"). Игрок выбирает вариант, дальше бросок против его процента решает, как разрешится звонок – успешно (засчитывается в дневную норму 3/6 ответов, см. ЗП формулу) или нет.

Денежный дебаф – подтверждено, это личные траты персонажа, не бюджет фирмы. Нарративная рамка: герой вкладывается в нестандартную сделку из своего кармана в расчёте на будущую лояльность клиента. Нужен явный тост-уведомление в момент списания, иначе выглядит как баг: «В надежде удержать клиента вы доплатили из своего кармана: -1000 ₽» (черновой текст, доработать тон).

Открыто – что происходит при провале броска на варианте с деньгами:

  • A. Провал = траты не было. Не повезло, звонок не засчитан успешным, деньги не улетели (вложился бы, но не договорился).
  • B. Провал = потратился и не сработало. Деньги всё равно списываются (уже пообещал/отправил), а результат не засчитан, злее и чернее, ближе к тону остальной игры (вечерний путь домой уже наказывает за невезение по-настоящему, не просто "ничего не случилось").

Не выбрано, склоняемся к B по тону, но финальное слово за автором.

Открыто – что означает бросок для дневного счётчика 3(6) ответов: похоже, что успешный бросок = засчитан как правильный в формулу зарплаты, провал = не засчитан, независимо от исходного текстового лейбла варианта ("правильный"/"неправильный"), но это стоит подтвердить явно, чтобы не осталось скрытой развилки.

Число звонков в день – частично снимается: формула "3 правильных = 100% зарплата" стоит под заголовком "Ответы на вопросы До должности старший менеджер" – то есть это явно база для Младшего менеджера/Менеджера (0-25 очков), а "6 вопросов" со Старшего менеджера (50 очков) – следующая ступень той же прогрессии, не замена. Реальные нестыковки, которые остаются:

  • формула для 6-звонкового дня не описана (та же пропорция 3/6, или новая шкала?)
  • фраза "у младших должностей звонков нет, работа физическая" не найдена ни в одном текущем файле вики, источник не подтверждён, либо устное обсуждение не попало в записи, либо неточное воспоминание; сверить с автором, не полагаться на память
  • "Вопросы от фирмы" (начиная с начальника отдела, +1/+3/+6 в день), не описан ни один пример такого вопроса, не ясно чем они отличаются от клиентских по форме/механике, только по названию – РЕШЕНО ниже (2026-09-21)

"Вопросы от фирмы" – РЕШЕНО (2026-09-21)

Ядро идеи: не отдельный тип контента с нуля, а честное продолжение уже заложенной в банк звонков механики эскалации. В gohome-faq.md у части вариантов ответа уже есть выходы "перевести звонок на коллегу", "сейчас я свяжу вас с техническим отделом", "Позвоните директору", "перевести звонок на удержание" – клиент, которого младший спихнул наверх такой кнопкой, долетает до старшего с более высокими ставками (возврат денег, разрыв контракта, угроза прессой). Механически та же call-система (варианты ответа + RNG), просто тяжелее по деньгам/оценке.

Дополнительные категории для верхних тиров (начальник отдела и выше), реже чем ежедневные звонки, для разнообразия, все опираются на уже существующий лор:

  • завод и производство – в gohome-tasks.md средние должности уже включают поездку на завод; плюс лор про гномов-карликов в цеху и бунт рабочих ("нужны свежие идеи" – изобрели 5G). Событие: цех бастует/бракует партию, решение старшего.
  • конкурент "Триангл фактори" – уже реальный лор-элемент, в gohome-faq.md есть их звонок про шары, которые у них выходят треугольниками. Отсюда событие: шпионаж чертежей в любую сторону, решение старшего как реагировать.
  • VIP-делегация – junior-задача "встретить и разместить делегацию японцев" уже есть; сами переговоры (что показать, что обещать по контракту) – контент для старшего.
  • совет акционеров – junior расставляет стулья перед собранием, само голосование (IPO, бюджет, кадровые решения совета) – для старшего.

Примеры задач и звонков добавлены в gohome-tasks.md и gohome-faq.md соответственно.

Дополнение 2026-09-21: пятая категория "вопросов от фирмы" – курьерские поручения с чемоданом, завязанные на то, что фирма не совсем чиста на руку. Базис, серые схемки – gohome-bandits-quest.

Переменные игрока — часть не подключена к механике

Заявлены: Деньги, Настроение, Усталость, Очки повышения, Должность, Алкогольная зависимость, Голод.

Голод и Алкозависимость нигде не имеют порогов/эффектов. Единственная отсылка — сцена с "закадычным приятелем" из раннего brainstorm (бар, похмелье, прогул) — не увязана с числовой переменной.

Настроение начальства (0-100 рандом каждый день) влияет на очки повышения при 1 правильном ответе — но не описано, влияет ли на что-то ещё (штрафы, увольнение).

Мировая напряжённость влияет на цены в магазине — сам магазин (ассортимент, зачем туда заходить, что покупать) не описан вообще.

Вечерний путь домой — почти готово, не хватает тайминга

Готово: 3 локации × 5 видов транспорта с сезонными ограничениями, списки опасностей по локациям.

Не хватает:

  • конкретное время (в игровых часах/влиянии на следующий день) для каждой пары локация+транспорт
  • формула "устал/замёрз/попал в больницу" → как это бьёт по завтрашнему дню (пропуск планёрки? штраф на весь день?)
  • переход сезонов: указано только "лето/зима", нет календарной привязки кроме старта 1 июня 2026 — когда наступает зима игровая (по дням? по датам?)

Условия конца игры — не формализованы

Заявлено: победа — Директор (2500 очков), поражение — увольнение или смерть. Ни одно поражение не имеет чёткого триггера:

увольнение — от чего? (серия из N провальных дней? настроение начальства ниже порога? прогулы?)

смерть — только в виде флейвор-сцен (мороз, маньяк, ДТП, кирпич от хулигана) — это гарантированная смерть при встрече с опасностью или шанс, зависящий от статов?

Движок / стек — рабочий вариант (обновлено 2026-09-19)

Подтверждено: остальные игры серии (razrez, nord-tycoon, banana-tyaga) на TS/HTML/CSS/JS через Grok app-builder, но держаться этого же стека не обязательно — Grok app-builder воспринимается как ограничивающий инструмент, а не как решённая архитектура. Значит берём тот же язык (TS), но пишем руками через нормальный тулинг, без builder-инструмента.

С учётом трёх типов сцен из §8 (A — статика/UI, B — активный платформер, C — пассивный тревел с опциональной катсценой), одно цельное решение проще, чем склейка "React-приложение + отдельная canvas-библиотека для минигр":

Рекомендация: один проект на Phaser 3 + TypeScript.

Тип A (офис/карта-хаб/магазин/катсцены) — Phaser Scene с DOM Element overlay (Phaser поддерживает HTML/CSS поверх канваса) для текста, диалогов, кнопок выбора, статов. Никакой физики, просто UI-слой.

Тип B (лыжи/самокат/пешком/велосипед) — отдельная Phaser Scene на каждый транспорт (или одна параметризуемая Scene с разным набором препятствий/скоростей по сезону), arcade-физика "из коробки".

Тип C (авто/автобус/трамвай/троллейбус/метро) — generic "Travel" Scene: маркер-аватар твинится по маршруту на карте; по завершении — RNG решает, показать ли одну катсцену из пула (переиспользует UI-слой типа A) или просто вывести "добрался" и перейти к следующей фазе дня. Общее состояние игрока (деньги, настроение, усталость, очки повышения, должность и т.д.) — простой TS-класс/стор, доступный всем сценам через Phaser registry — единый источник правды, не размазан по сценам.

Один движок на весь цикл дня — меньше склеек, меньше стыков между "игровой" и "UI" частью, легче держать общий стейт.

Бэкенд для лидерборда (имя, дата вступления в должность, деньги, очки) — Go, простой REST/JSON, тонкий бинарник, укладывается в Docker/compose по образцу остального avallon-стека. БД — SQLite, если не нужен общий инстанс с чем-то ещё; если уже есть общий Postgres на инфре — переиспользовать его, не поднимать второй ради одной таблицы.

Деплой — тот же паттерн, что у остальных игр серии: галeхaут + CI/CD Forgejo, поддомен *.avallon.pw, статика фронта + отдельный Go-контейнер бэкенда.

Альтернатива, если хочется готового тайлмап-редактора/анимаций из коробки и не жалко нового языка в стеке: Godot 4 + HTML5-экспорт + Dialogic для диалогов. Компромисс — GDScript/C# в стеке, тяжелее веб- билд. Не рекомендую по умолчанию: Phaser+TS ближе к остальной серии игр и общей философии "не плодить лишний стек".

Допы для работы (минимальный набор):

Node.js + pnpm/npm, Vite — сборка/дев-сервер

Phaser 3 (npm-пакет) — движок

Go — бэкенд лидерборда

SQLite или существующий Postgres — БД

Docker + docker-compose — упаковка

Forgejo/Github CI — сборка-тесты-доставка как у остальных проектов

Классификация локаций/сцен по типу геймплея — РЕШЕНО (2026-09-19)

Три разных типа сцен, разная реализация для каждого:

Тип A — новелла/менеджмент (статика). Офис, карта-хаб, магазин, общие катсцены. UI-экраны: диалоги, статы, выбор варианта. Никакой физики/геймлупа, просто состояние + текст + картинка.

Тип B — платформер (активный геймплей). Лыжи, самокат, пешком, велосипед. Игрок реально управляет персонажем, уворачивается от препятствий в реальном времени (как уровень в Igrok). Опасности здесь — skill-based (увернулся/не увернулся), не рандом.

Тип C — пассивный транспорт (авто, автобус, трамвай, троллейбус, метро). Аватар едет по маршруту на карте (точка/маркер, tween по пути) — либо:

просто долетает от A до B с уведомлением "добрался" (пустышка, без сцены), либо по пути с некоторым шансом триггерится одна катсцена из пула (укачало, контролёр поймал, бабка с авоськой, шпана и т.п.) — рандомный выбор из пула событий типа C, а не skill-based прохождение.

Это закрывает часть вопроса из §5 (гарантированная опасность или шанс): для типа B — исход решает игрок (умение), для типа C — исход решает RNG-выбор конкретной катсцены из пула (не отдельная бросок-на- опасность механика поверх сцены, а сама катсцена уже несёт исход).

Звонки — доп. лор и типы звонящих (2026-09-19)

Лор-обоснование потока странных звонков: номер "Бронзовых шаров" по опечатке типографии попал в раздел контактов популярного журнала "Всё про всё: гадаем, предсказываем, составляем натальные карты, отвечаем на сакральные и любые вопросы, предсказываем судьбу". С этого момента на линию звонит не только реальная клиентура.

Типы звонящих (влияет на тон вопроса, не обязательно на саму механику подсчёта очков — это слой сценария поверх существующей формулы "3 ответа/день"):

Хулиганы/шутники — прикалываются, проверяют границы, в теории их можно "уговорить купить" (не пранк ради пранка, а конвертируемый лид, если разговор повернуть в нужную сторону).

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

Техподдержка/гарантия — реальные клиенты с реальными (и не очень реальными) проблемами уже купленного товара.

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

Приветствия по социальному слою (пул для рандомизации открывающей фразы звонка, поменьше "товарищ", можно советскую атмосферу, но альтернативный техно-уклад — на дворе игровой 2026-й, а техника и эстетика колл-центра — конец 90-х/2000-е, это уже заложено на экране загрузки с CRT-монитором и дискетами):

  • простые/дворовые: "Алё", "Слышь", "Каг дела", "Здарова"
  • элитные/пафосные (пародия на статусность через англицизмы): "Хэллоу дестини", "Хайвей", "Позвольте осведомиться"
  • благовоспитанные средние: "Добрый день", "Позвольте спросить", "Не могу не поинтересоваться", "Извините за беспокойство"
  • пранкеры: "Добрый бобрый" и прочие нарочно бессмысленные заходы
  • страдальцы-гадальщики: "Здравствуйте, я по объявлению из журнала", "Извините, что поздно, но душа болит"

Приоритет вопросов (предлагаемый порядок разбора) – что нужно продумать и утвердить

Канон: промпт 18.09 vs ранний brainstorm — что сюжетный каркас

Формула звонков: проценты + число звонков по должностям

Триггеры проигрыша (увольнение/смерть) — иначе нет игрового цикла

Тайминг локация+транспорт — иначе нет структуры дня

Голод/алкозависимость/магазин — можно отложить как второй слой глубины после MVP-цикла (работа → путь домой → следующий день)