Страх и ненависть вайб-кодинга: как я сделал для ребенка игру и попал в топ приложений на android-TV. ai.. ai. android studio.. ai. android studio. chatgpt.. ai. android studio. chatgpt. google play.. ai. android studio. chatgpt. google play. SunQ.. ai. android studio. chatgpt. google play. SunQ. Блог компании МТС.. ai. android studio. chatgpt. google play. SunQ. Блог компании МТС. вайб-кодинг.. ai. android studio. chatgpt. google play. SunQ. Блог компании МТС. вайб-кодинг. геймдев.. ai. android studio. chatgpt. google play. SunQ. Блог компании МТС. вайб-кодинг. геймдев. искусственный интеллект.. ai. android studio. chatgpt. google play. SunQ. Блог компании МТС. вайб-кодинг. геймдев. искусственный интеллект. мобильная разработка.. ai. android studio. chatgpt. google play. SunQ. Блог компании МТС. вайб-кодинг. геймдев. искусственный интеллект. мобильная разработка. Ненормальное программирование.. ai. android studio. chatgpt. google play. SunQ. Блог компании МТС. вайб-кодинг. геймдев. искусственный интеллект. мобильная разработка. Ненормальное программирование. Разработка игр.. ai. android studio. chatgpt. google play. SunQ. Блог компании МТС. вайб-кодинг. геймдев. искусственный интеллект. мобильная разработка. Ненормальное программирование. Разработка игр. Разработка мобильных приложений.
Страх и ненависть вайб-кодинга: как я сделал для ребенка игру и попал в топ приложений на android-TV - 1

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

Меня зовут Леонид Калядин, я Cluster Data lead в МТС Web Services. Я отлично разбираюсь во всем, что связано с data, но вот в мобильной разработке — полный ноль. Во всяком случае был до недавнего времени. В этом материале я расскажу, как решил спасти дочь от надоедливой рекламы и навайбкодил Adventure Mazes — игру, которая вошла в топ Android TV в Google Play. Итак, кому интересны подробности — велкам. 

Идея лежала на поверхности — лабиринт

Вечером как раз увидел новость о том, что новая версия крупного AI-сервиса обходит топовых конкурентов в ключевых бенчмарках. Заявлялось, что модель еще увереннее пишет и решает математические задачи. 

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

Страх и ненависть вайб-кодинга: как я сделал для ребенка игру и попал в топ приложений на android-TV - 2

 Вроде только текст нап��сал, а он сразу же превращается в интерактивный лабиринт. Дочь засыпала меня вопросами, как это работает, и я, поймав кураж, решил набросать ей в draw.io схему разработки. Ее шестилетний мозг, окинув взглядом прямоугольники, ромбики и стрелочки, выдал вердикт: «Пап, ну это сопли какие-то». И дочка пошла спать. Миссия номер один — уложить ребенка — была выполнена.

А меня накрыло. Всплыло то самое, давнее желание делать игры, приведшее меня в IT, но которое успешно похоронили предложения на рынке труда (хотя свое направление data я тоже люблю). Очнулся я в четыре утра с диким желанием прикрутить еще пару фич, но инстинкт самосохранения победил.

Утром жена устроила допрос: 

— Лег во сколько?
— В четыре. И то я себя заставил! Мог бы до шести фигачить.
— Совсем сдурел?

Тут пришлось доставать главный козырь: «Дорогая, я же не просто так! Я игру сделал! Запущу в Google Play, стартанем, заработаем миллионы!» Лед в ее взгляде тронулся: «А… Ну тогда ладно».

Итак, перчатка брошена (мною же самому себе). Вызов принят. Переходим к серьезным делам.

Proof of Vibe: от идеи до игры, пока не остыл кофе

Страх и ненависть вайб-кодинга: как я сделал для ребенка игру и попал в топ приложений на android-TV - 3

Отлично, отпуск только начался, времени — вагон. Первым делом уточняю у AI, а смогу ли я вообще отправить свое творение в Google Play. Ответ обнадеживает: существует куча утилит, все прекрасно публикуется, и по каждой из них он готов выдать пошаговую инструкцию. Что ж, дело за малым — навайбкодить саму игру.

Я начал потихоньку расширять функциональность и добавлять простому лабиринту разных фич. AI выступал в роли моего личного гейм-дизайнера: советовал музыку, подбирал ресурсы с бесплатными ассетами, генерировал код для меню и системы тем. 

Я почти не валидировал код. Конечно, у меня был опыт интеграции JS-чартов в опенсорсный BI и написания кастомных CSS, но такое количество вложенных if и for все равно немного выходит за рамки моей зоны комфорта.

Однако стратегия «один файл на все случаи жизни» быстро себя исчерпала. Этот index.html-мутант рос на глазах, AI переписывал его все дольше, и каждая итерация превращалась в лотерею: отвалятся иконки или сломается кнопка? Все чаще после добавления новой фичи игра переставала запускаться — и чат заботливо подсовывал кнопку Fix error, снова и снова переписывая весь код, порой обрываясь из-за connection timeout.

Окей, пора взрослеть

Я спросил у AI, как нормальные люди структурируют такие вещи. После небольшого рефакторинга наш пробный файлик превратился в нечто похожее на проект:

/my-game/

├── index.html

├── spritemap.json      // Карта спрайтов

├── /css/

│   └── style.css

├── /js/

│   ├── main.js         // Главный файл: инициализация, игровой цикл

│   ├── billing.js       // Платежный плагин

│   └── config.js       // Настройки уровней и локализаций

└── /assets/

    ├── /images/

    └── /audio/

И тут я поймал себя на мысли о контрасте с основной работой. В мире больших данных я использую AI очень точечно. Просто невозможно загрузить в него весь контекст бизнес-процессов. Ему не объяснишь, что формат интеграции утвержден, но есть еще Лариса Алексеевна из смежного отдела, которая порой выходит работать в субботу (что само по себе тревожный знак), вручную формирует Excel-отчет для загрузки корректировок и может случайно поменять столбцы местами. Такие кейсы — задачка для сеньора с сединой на висках. А здесь, в моем маленьком stand-alone-проекте, все четко, логично и предсказуемо. 

От PoC к MVP через минное поле

В какой-то момент скорость разработки начала падать. Да, мы разбили код на файлы, количество галлюцинаций заметно сократилось, но это была лишь отсрочка. На половине пути я понял, что вляпался в закон Парето: в моем случае оставшаяся половина фич заняла бы времени в полтора раза больше моего отпуска. 

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

Страх и ненависть вайб-кодинга: как я сделал для ребенка игру и попал в топ приложений на android-TV - 4

В какой-то момент в ленте мне попался пост, что очередной AI достиг очередных высот. Я раздраженно пожаловался другу, что высоты высотами, а у меня игра в одном из десяти случаев намертво виснет при столкновении с привидением. В ответ поймал риторический вопрос: «Так кто косячит — AI или тот, кто пишет ему кривой промпт?» Несмешно, но задуматься заставило.

Понял, что нужно что-то менять в моем подходе. Если раньше я пытался описать AI задачу максимально подробно, со всем контекстом, чтобы получить все и сразу, то теперь понял: это путь в никуда. Чем сложнее запрос, тем хуже результат. Все как в реальной разработке: не нужно пытаться объять необъятное — нужно двигаться короткими итерациями.

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

Страх и ненависть вайб-кодинга: как я сделал для ребенка игру и попал в топ приложений на android-TV - 5

Начался мой личный «день сурка». Вечер: новая гипотеза, новый промпт. AI: «Да, босс, я все понял, теперь 100% будет работать!» Ночь: тест, фриз. Утро: 4:00 на часах, я разбит, прогресса ноль.

Я лежал в кровати и глядел в потолок — и вдруг пришло озарение… Идиот тут не AI, а я сам. Человек, который менторил джунов и талдычил им: «Без логирования ошибку не исправишь, ну если только ты не обладаешь экстрасенсорными способностями!» — пытался дебажить вслепую! Сам же нарушал свои главные заповеди.

Окей, новый план. Прошу AI добавить в код логирование. И вот оно! Зависание оказалось связано с редкой гонкой состояний при перезапуске уровня. Решение простое — задать уникальный ID для каждой игровой сессии. С логами на руках AI мгновенно поставил диагноз и предложил верное лечение.

Страх и ненависть вайб-кодинга: как я сделал для ребенка игру и попал в топ приложений на android-TV - 6

AI — это не волшебная палочка, а инструмент, требующий такого же инженерного подхода, как и любая другая технология. Итерации, дебаг, логирование — без этого джентльменского набора разработка превращается в ад.

На Хабре, кстати, уже есть статья, которая по полочкам раскладывает все мои страдания и ночные озарения в виде удобного гайда. Прочитай я ее тогда, сэкономил бы кучу нервов и времени. Но, увы, она появилась, когда все шишки были уже набиты:

Умный вайб-кодинг, или Семь раз отмерь, один раз сгенерь

Основные механики готовы, пингвин бегает, призраки летают, ничего не виснет. Финальный штрих: задаю вопрос AI и получаю новую инструкцию, по которой создаю Android-проект с помощью Capacitor и делаю билд APK. На моем телефоне все отлично работает. Пришло время подумать о высоком… О том самом миллионе долларов, обещанном жене.

Когда твой вайбкод встречается с чужим API

Страх и ненависть вайб-кодинга: как я сделал для ребенка игру и попал в топ приложений на android-TV - 7

В плане монетизации моя философия проста и прямолинейна: никакой рекламы, только честная кнопка «Открыть все». Этот вариант я бы и сам спокойно поставил дочке. AI предложил выбор: интегрировать готовый коммерческий плагин с бесплатным тарифом  или написать свой. Я глянул на документацию и увидел предупреждение: «Только на настройку Google Cloud уйдет 2–3 часа». Серьезно? Да я за это время свой с нуля напишу, да еще и кофе успею выпить!

AI быстренько накидал инструкцию, я аккуратно все повторил — и APK перестал собираться. Ошибка в dependencies. Ну… с кем не бывает. После нескольких итераций исправлений билд по-прежнему падал. Ладно, 2–3 часа на настройку Google Cloud — не самая высокая цена.

Но вселенная решила, что я усвоил урок недостаточно хорошо. Уже с официальным плагином и инструкцией от AI билд снова падает. Закидываю в AI все, что у меня есть: документацию, ссылку на рабочий пример вендора из их GitHub. AI с уверенностью генерирует фикс за фиксом, но ошибка остается.

Начинаю вчитываться в документацию сам. В голове не сходится: это же не какой-то noname-проект, а коммерческий плагин с отличными примерами. Довольно быстро нахожу инструкцию в доке, как именно в моем случае нужно прописывать зависимости. Но это прямо противоречит советам AI. Ради эксперимента копирую текст из дока и отправляю в чат. Ответ AI меня как минимум озадачил: «Да, в документации все правильно, но именно в вашем случае это не поможет».

Человек или AI? Вот в чем вопрос. Доверяюсь своему опыту, делаю, как написано в доке, и… ошибка исчезает. Билд проходит, плагин все еще не работает, но apk собран.

Страх и ненависть вайб-кодинга: как я сделал для ребенка игру и попал в топ приложений на android-TV - 8

Интересно, сколько еще часов я бы потратил, если бы слепо слушал «помощника»?

В этот момент я окончательно сформулировал для себя новое правило. AI — это не сеньор-архитектор. Это твой джун. Талантливый, быстрый, но джун, который не всегда понимает контекст и может с невероятной уверенностью исправлять неисправляемое. И твоя задача как тимлида — не слепо следовать за ним, а проверять его работу, читать документацию и брать ответственность за коммиты на себя. Иначе вместо чуда получишь сорванные дедлайны и бессонную ночь в поисках глупой ошибки.

Итак, приложение опубликовано  в closed testing. Платеж проходит, контент открывается. Победа?

8 гигаба��т оперативки хватит всем

Как бы не так. AI-ментор тут же напоминает, что Google в свой магазин не пустит, но тестирования на своем устройстве недостаточно, ANR, Crash Rate, вот это все, иначе приложение будет пессимизировано и пропадет из выдачи. И что неплохо бы потестить на эмуляторах в Android Studio. И тут я смотрю на свой ноутбук. Когда-то я был уверен, что 8 ГБ оперативки хватит всем. Ну для Caesar 3, вторых «Героев» и браузера. Оказалось, что в 2025-м этого не хватает даже на то, чтобы запустить эмулятор бюджетного телефона в Android Studio.

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

В нашем кластере есть продукт SunQ — мобильная ферма для тестирование приложений. Пересекаюсь с ребятами в офисе, чтобы узнать, как бы к ним пристроиться. Выясняется, что это небольшой, но все же бюрократический процесс. А в моем случае будет не так-то просто объяснить, зачем Cluster Data Lead вдруг понадобился доступ к мобильной ферме, да еще и чтобы затащить приложение извне.

Звоню CPO продукта. Договариваемся встретиться в кафешке и обсудить. Пока жду коллегу, девушки за соседним столом обсуждают «вайбы» прошедшей вечеринки. У меня от опыта кодинга с AI на этом слове уже начинает дергаться глаз.

Наконец, коллега приходит и дает мне два очень хороших совета:

  1. А чего тебе просто на внешнем стенде не зарегаться? Там триалка 21 день, для твоих нужд хватит за глаза.

  2. Ты капибару-то в игру добавил? (На тот момент еще нет.)

Золотые слова! Регистрируюсь в сервисе, выбираю телефоны послабее и тестирую. На бюджетном Xiaomi с 2 Гб оперативы все ок, а вот на Samsung с Android Go все выглядит совсем жалко.

Страх и ненависть вайб-кодинга: как я сделал для ребенка игру и попал в топ приложений на android-TV - 9

Нужна была оптимизация. К счастью, у меня как раз появился триал другого, популярного AI-сервиса. Я закинул код обоим. Советы оказались разными. Тогда я устроил им очную ставку: просто начал копировать ответы одного в чат к другому.

После нескольких раундов этого AI-баттла («А вот он сказал, что твой requestAnimationFrame — ерунда!») они наконец-то сошлись в показаниях и выдали общий пул оптимизаций. Один AI — хорошо, а два — лучше.

Дальше была финальная полировка, длившаяся три ночи, за которую я исчерпал все токены, пока  пытался найти промпт, чтобы добиться от AI иконок в едином стиле подходящем игре. Затем — локализация страниц, где AI-переводчик выдавал порой такие галлюцинации, что я все перепроверял через кросс-сверку от второго AI. После всех этих мелочей — наконец-то релиз.

Как я попал в топы и толком ничего не заработал (и почему это неважно)

Страх и ненависть вайб-кодинга: как я сделал для ребенка игру и попал в топ приложений на android-TV - 10

Через неделю игра выстрелила в топе новых игр для Android TV, а потом перешла и в основной. Денег это, правда, особо не принесло. Но мог ли быть другой исход? 

Я делал игру для ребенка — без донатного мусора и рекламы. Монетизация там была для галочки. Да, в игре можно купить весь контент сразу, но, как сказал мой друг, главная «проблема» моего  бизнес-плана в том, что открытие контента через игру гораздо интереснее, чем его покупка.

Зато я получил много теплых отзывов. Восьмилетняя девочка из Чили, благодарный родитель из Турции и многие другие — игра нашла свою аудиторию. Игра живет и развивается (естественно, за счет моего очередного бодания с AI).

Страх и ненависть вайб-кодинга: как я сделал для ребенка игру и попал в топ приложений на android-TV - 11

И вот тут мы подходим к главному

AI как технология, несмотря на весь хайп вокруг и глюки, дала мне (и может дать кому угодно) возможность сделать что-то свое. У меня вот есть подписка на приложение с ежедневными английскими кроссвордами. И думаю, что продлевать ее уже не буду. Я лучше потрачу еще пару-тройку вечеров (недель) и запилю кроссворды, которые нужны именно мне. А может, как раз они-то и принесут тот самый миллион. Кто знает… 

В общем, я устал, опустошен и выжат как лимон. И я обязательно сделаю это снова.

P. S. На момент выхода игра уже не в топе игр Android TV — последний релиз словил высокий ANR на части «народных» ТВ, где, как оказалось, производители не обновляют WebView — видимо, для экономии, и игра там просто уходит в вечный фриз. В ближайшем обновлении это будет поправлено, и игра должна вернуться в топ, а если вдруг эту статью читает кто‑то из производителей бюджетных ОЕМ ТВ — буду признателен, если вы отдадите парочку устройств в мобильную ферму SunQ для живых тестов.

Автор: Lkalyadin10

Источник

Rambler's Top100