Скучные головастики

Я часто смотрю стримы по «лутер-шутерам» — Escape from Tarkov, Arena Breakout, всё такое. И на многих из них замечал оверлеи для зрителей. Но они все одинаковые и, честно говоря, скучные: по низу экрана ходят «головастики» — болванки со шрифтом чата, дублирующие сообщения зрителей. Зритель написал в чат — его человечек помахал. И всё. Это не игра, это индикатор активности чата.

Идея сделать игру жила у меня давно. И в какой-то момент щёлкнуло: а почему бы не совместить одно с другим? Не «человечек повторяет сообщение из чата», а настоящий персонаж зрителя, который играет в лутер-шутер прямо в оверлее: выходит в рейд, лутает ящики, дерётся с другими зрителями, выносит вещи в свой схрон и возвращается на следующий рейд уже в броне и с пушкой. Со смертями, с потерей снаряжения, с выходами с карты — со всем тем, за что смотрят «тарковые» стримы.

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

Название придумалось само собой: Escape from Screen — побег с экрана. Да-да, оригинально =) Зато оно точное: зрители буквально выпадают с экрана стрима в свою маленькую жизнь где-то на границе кадра.

Писать всё самому в рассвет ИИ — не комильфо

Я программист, и технически мог бы собрать всё это руками. Но мы живём в 2026 году: писать весь бойлерплейт самому в рассвет ИИ — не комильфо. Я взял Claude Code и отдал ему свои записи.

Дальше работа выглядела так: я формулирую рубеж, пишем спеку, план, потом код с тестами. Первый коммит — 13 августа, скаффолд монорепозитория. Через день уже крутилось техдемо: сервер симулирует мир, боты спавнятся и дерутся, а оверлей на PixiJS рисует их внизу кадра — то самое, что втыкается в OBS как Browser Source.

Первое демо я собрал для себя, и выглядело оно так:

Середина августа. Техдемо: пиксельные заглушки размером с почтовую марку, зелёные полоски здоровья, минимум декораций. Но это уже игралось: боты ходили, лутали ящики и стрелялись.
Середина августа. Техдемо: пиксельные заглушки размером с почтовую марку, зелёные полоски здоровья, минимум декораций. Но это уже игралось: боты ходили, лутали ящики и стрелялись.

Всё не нравится

Механика росла быстро — за недели: сайт с кабинетом стримера, вход через Twitch, PostgreSQL, Docker, магазин и схрон, команды из чата, смерть и потеря снаряжения. К концу августа оверлей уже выглядел прилично по пиксельным меркам:

Конец августа. Пиксельные еноты с оружием в руках, палатки, вспышки выстрелов, урон с цифрами. Уже живой бой, но «не то».
Конец августа. Пиксельные еноты с оружием в руках, палатки, вспышки выстрелов, урон с цифрами. Уже живой бой, но «не то».

Но мне не нравилось. Визуально это был «ещё один инди-пиксельарт», а я представлял себе что-то более живое и рисованное. Началась долгая эпопея с артом: другие итерации, плагины для Claude Code, референсы, десятки перерисовок атласа. Всё не то. Я перебрал несколько стилей генерации, менял холсты, раскадровку, палитры — и каждый раз результат был «нормально, но не оно».

В итоге подключил Nano Banana Pro и стал генерировать кадры персонажей генеративной моделью. Это было совершенно бесконечное занятие: по 10–20 итераций на каждый кадр. Поза не та — перегенерировать. Оружие не в лапах — перегенерировать. Морда «поплыла» — перегенерировать. Потом вся эта куча кадров резалась скриптами и собиралась в атлас с нуля: оригинальные листы генератора, нарезка, оффсеты, тесты, которые не дают съехать точкам крепления ствола к лапе.

Начало сентября. HD-арт, «стиль C»: холсты 64×96, cel-шейдинг с бликом, оружие в лапах. Впервые выглядело как то, что я представлял.
Начало сентября. HD-арт, «стиль C»: холсты 64×96, cel-шейдинг с бликом, оружие в лапах. Впервые выглядело как то, что я представлял.
Середина сентября. Рисованные персонажи с оружием в лапах: один лутает, другой стреляет, третий перевязывает раны. К этому моменту в игре уже были боссы — SviN и кот MurWick.
Середина сентября. Рисованные персонажи с оружием в лапах: один лутает, другой стреляет, третий перевязывает раны. К этому моменту в игре уже были боссы — SviN и кот MurWick.

Экран зрителя

Следующий этап — экран зрителя. Зритель смотрит не только на стрим: у него есть своя страница «Убежища», где лежит его схрон, магазин, снаряжение персонажа, итоги рейда. И вот тут генеративный арт встретил своё второе наступление: перерисовка каждого элемента. Иконки оружия, брони, медицины, хлама, рюкзаков — всё по многу кругов, с нарезкой, устойчивой к выцветшим фонам и натёкам рамки. На это тоже ушла прорва времени.

Начало октября. Кабинет зрителя.
Начало октября. Кабинет зрителя.

Версия, которую не стыдно показать

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

Середина октября, версия 0.9.0. Перестрелка, трупы, перевязки, лут — вся жизнь оверлея. От первого коммита до этой картинки прошло два месяца.
Середина октября, версия 0.9.0. Перестрелка, трупы, перевязки, лут — вся жизнь оверлея. От первого коммита до этой картинки прошло два месяца.

Самый сложный этап

А дальше наступил самый сложный этап для меня как программиста. Не код. Продвижение.

Я понятия не имею, как продвигать и продавать свой продукт. У меня не было аудитории, не было стримеров «в кармане», не было бюджета. Был работающий оверлей и идея, которая мне самому кажется крутой.

Я начал ходить по стримам с предложением попробовать. Просто приходил в чат к стримерам, которые играют в «тарковское», и рассказывал: смотри, есть оверлей, зрители получают персонажей, донаты запускают боссов, вот демо. Кто-то отвечал, кто-то молчал, кто-то банил за рекламу.

Параллельно — рассылка. Я написал инструмент, который через Twitch API собирает список стримеров нужной категории, вытаскивает канал, эфир и клипы для личного письма, и рассылал одиночные, руками написанные письма. Не спам-бласты, а персональные сообщения человеку про его стрим.

Каждый день я переделывал сайт — как реакция на обратную связь от стримеров. И вот тут выяснилось главное: основной барьер — страх. Стримеры боятся, что у них украдут аккаунт. «А что ты запрашиваешь у Twitch? А какие права? А ты сможешь писать в мой чат?» — это первый вопрос почти каждого.

Поэтому отдельно: мы не запрашиваем у Twitch ничего. Нулевые права (zero scopes). Единственное, что мы получаем от OAuth — ник стримера, чтобы убедиться, что это он. Ни чтения чата от его имени, ни публикации, ни аналитики его канала — ничего. Оверлей работает по отдельной ссылке, чат мы читаем анонимно, как любой зритель.

— На сайте этому теперь посвящена целая страница «Безопасность и доступы».

Три недели продвижения

Три недели продвижения. Результат — около нулевой.

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

Даже найти нас через поиск пока нельзя: Google до сих пор не ищет проект по названию «Escape from Screen» — выдаёт всё что угодно, только не нас. Находит только по длинному запросу «escape from screen overlay». Три недели в индексе — и уже такой успех.

И вот в этом весь парадокс, который я для себя вынес из этих трёх месяцев. Создать в 2026 году что-то интересное — игру, сервис, оверлей — стало почти легко: нейросети пишут код, рисуют атласы, чинят баги, которые ты не смог бы найти сам. Тысячи часов ручного труда схлопнулись в вечера после работы.

Но рассказать людям о том, что ты сделал — не стало легче. Внимание — последний дефицитный ресурс. Его не генерирует ни одна модель. И если ты программист, который любит делать, а не продавать, — это и есть настоящий босс-файт проекта. У меня он пока не пройден.

Так что если вы стример и дочитали сюда — демо живёт по ссылке, заходите, ник ничего не украдёт. А если нет — ну, я продолжу ходить по стримам. Оверлей-то уже есть.