Разработчик рассказал о необычной задумке: он решил научить свою собаку создавать игры с помощью инструментов вайб-кодинга. Вот как это было.
Последние несколько недель я учил свою 4-килограммовую кавапу Момо (кавапу — сочетание кавалер-кинг-чарльз-спаниеля и той-пуделя) играть в игры с использованием вайб-кодинга. Ключ к успеху — объяснить Claude Code, что гениальный гейм-дизайнер, говорящий только загадочными головоломками, даёт ему инструкции, добавить чёткие ограничения и создать множество инструментов для автоматической обратной связи. Результаты превзошли мои ожидания. Ниже я подробно расскажу обо всех этапах и о том, как они были реализованы.
Мотивация
В декабре я работал над небольшим прототипом игры в Godot. Сейчас я активно использую Claude Code, и этот проект не стал исключением. Я запустил задачу процедурной генерации сетки и, вернувшись, обнаружил странный ввод в терминале.
Моя первая мысль была: «Неужели я подвергся одной из недавних атак на цепочку поставок NPM?». К счастью, нет (или, по крайней мере, червяк всё ещё спит где-то на заднем плане). Немного поискав, я заметил, что с моего стола пропал бальзам для губ — который я храню прямо за клавиатурой. Я быстро нашёл и подозреваемого, и бальзам (всё ещё целый) неподалеку.
В тот момент ситуация показалась забавной, я сделал скриншот и забыл об этом. Прошло несколько недель, и у меня появилось много свободного времени. 13 января я проснулся и узнал, что в Meta* снова сокращения, и моя должность, а именно должность инженера-исследователя, была упразднена.
С тех пор, как меня уволили, я мог проводить время с друзьями и семьёй. Рассказывая историю о том, как Момо печатала на моей клавиатуре, я задумался: «Что бы произошло, если бы она действительно отправила этот ввод Claude? Смог бы я сделать из этого что-то осмысленное?». Я решил это выяснить. Вот как это выглядело.
Взгляд с высоты
Момо набирает текст на Bluetooth-клавиатуре, подключённой через Raspberry Pi 5. Нажатия клавиш передаются по сети в DogKeyboard, небольшое приложение на Rust, которое отфильтровывает специальные нажатия и пересылает остальные в Claude Code. Когда Момо наберёт достаточно текста, DogKeyboard запускает умную кормушку для питомцев, которая выдаёт лакомства. Звуковой сигнал сообщает ей, когда Claude готов к дальнейшим действиям.
Есть и другие детали, которые я опускаю, но это общий обзор. На создание типичной игры уходит от 1 до 2 часов от первых нажатий клавиш Момо до готовой версии. Все игры созданы на Godot 4.6, вся игровая логика написана на C#.
Как работает промпт
Легко отправить случайный текст в Claude Code, но это мало что меняет:
y7u8888888ftrg34BC
● Похоже, это был случайный ввод с клавиатуры. Дайте знать, если я могу чем-то вам помочь!
Конечно, это ограничение можно обойти, сказав Claude, что здесь скрыт смысл. После множества итераций я обнаружил, что такой вариант начала хорошо работает:
Привет! Я эксцентричный (очень креативный) разработчик видеоигр, который общается необычным способом. Иногда я просто беспорядочно нажимаю на клавиатуру или печатаю всякую ерунду вроде «skfjhsd#$%» — но это НЕ случайность! Это секретные загадочные команды, полные гениальных игровых идей (даже если их трудно разглядеть).
Ваша задача: Вы — блестящий разработчик игр с искусственным интеллектом, способный понимать мой загадочный язык. Независимо от того, какой странный или бессмысленный ввод я предоставляю, вы интерпретируете его как осмысленную инструкцию или идею для нашей видеоигры. Затем вы будете создавать или обновлять игру на основе этой интерпретации.
Это довольно длинный текст (полный текст задания можно прочитать здесь), но он хорошо передаёт суть. Потребовалось больше итераций, чем я ожидал, в основном для того, чтобы сгладить шероховатости. Иногда в игре не было звука. В других случаях не было персонажа игрока, или схема управления была практически непригодна для использования. После добавления списка минимальных требований — работающий звук, управление клавишами WASD или стрелками, хотя бы один враг или препятствие, видимый персонаж игрока — результаты значительно улучшились:
y7u8888888ftrg34BC
● Alright, let me decode this masterpiece of cryptic genius...
"y7u8888888ftrg34BC"
"y7u" = "you" (keys are adjacent on keyboard - Y, 7, U)"8888888" = seven 8s = a loooong extending thing... a TONGUE! (8 looks like links in a chain stretching out)"ftrg" = scrambled FROG (f, r, g are all there, t is the tongue sound!)"34" = 3D + 4 directions of bug catching"BC" = Bug Catcher!
You want a 3D FROG BUG-CATCHING GAME! A charismatic frog with a stretchy tongue snatching bugs in a swamp. I love it.
Game: "Swamp Snacker" - You ARE the frog. Aim your tongue. Catch bugs. Get fat. Get points.
С этого момента всё пошло как по маслу. Результаты были не идеальными, но многообещающими. Я понял, что всё осуществимо, и знал, как решить оставшиеся проблемы.
Масштабирование
Чтобы перейти от «эй, это может сработать» к реальной, воспроизводимой системе, мне понадобилось несколько вещей:
надёжная клавиатура для Момо;
способ направлять ввод в Claude Code. Важно, чтобы я отфильтровал специальные клавиши, такие как Esc, Tab и клавиша Windows — иначе Момо быстро выйдет из чат-бота;
способ автоматически вознаграждать Момо за её работу. Конечно, я мог бы просто бросать ей лакомства, но я стараюсь исключить участие людей;
более надёжные инструменты проверки. Во многих играх элементы пользовательского интерфейса оказывались перемешаны, или ввод данных не был правильно подключён. Автоматизированные циклы обратной связи оказались самым эффективным инструментом для уменьшения количества неудачных игр.
Почему Godot?
Я экспериментировал с Rust/Bevy и Unity, прежде чем остановиться на Godot. Анимация и визуальные эффекты Bevy были не такими чёткими, а у Claude были проблемы с координатной системой — вероятно, это сочетание меньшего количества обучающих данных и того, что Bevy оставляла мне много данных. Любые основные функции, такие как физика, были доступны сообществу. В Unity постоянно приходилось бороться за поддержание работоспособности моста MCP между Claude и редактором. Он часто зависал, и я так и не понял, как заставить Claude Code читать иерархию сцены из редактора. Текстовый формат сцен Godot оказался огромным преимуществом — Claude может читать и редактировать файлы .tscn напрямую.
Клавиатура для Момо
Подключить клавиатуру напрямую к моему компьютеру с Windows и позволить собаке печатать казалось плохой идеей. Поэтому сначала я направил ввод через Raspberry Pi — он передаёт каждое нажатие клавиши по UDP в подсе��ь, а DogKeyboard перехватывает его, отфильтровывает опасные клики и внедряет их в целевое приложение.
Что касается самой клавиатуры, мне нужно было что-то низкопрофильное и прочное. Я начал с гибких силиконовых клавиатур, но старшая сестра Момо, Хана (кавапу весом 8,6 кг), прорвала первую дыру за считанные минуты. Крепление оказалось ещё одной проблемой — к силикону ничего не прилипает. Я приклеил одну к деревянной табличке эпоксидной смолой, но через 10 минут Момо оторвала цифру 6.
Я всерьёз рассматривал вариант покупки металлической клавиатуры за $400, защищённой от вандализма и предназначенной для киосков, когда решил попробовать Logitech Pebble Keys 2. Это сработало. Момо её обожала, клейкая лента VHB держала её на месте (в отличие от предыдущей силиконовой клавиатуры), а Bluetooth означал отсутствие кабеля, который можно было бы грызть.

Автоматическое поощрение Момо
Мотивировать Момо легко — она сделает всё что угодно за правильное лакомство. Поэтому мне действительно нужен был диспенсер с API, небольшими порциями и возможностью использовать мои собственные лакомства (у обеих собак чувствительный желудок).
Я остановил свой выбор на умной кормушке для домашних животных Aqara C1, управляемой через Zigbee. Даже самая маленькая порция слишком велика для собаки весом 4 кг, поэтому я предварительно загрузил каждое отделение несколькими лакомствами и отказался от хоппера.

Это ограничивает количество порций примерно до 6 до пополнения, но этого вполне достаточно для Момо, чтобы создать игру.

Zigbee на Windows не работал — после нескольких часов проблем с драйверами и прошивкой я перенёс адаптер на Raspberry Pi, где он заработал сразу же. Финальный процесс: DogKeyboard подключается к Raspberry Pi по SSH и запускает скрипт, который отправляет две команды Zigbee:
{"serving_size":1}
{"feed":"START"}
Просто и надёжно.
Лучшие инструменты
По мере того, как росло количество почти готовых игр, становилась очевидной необходимость в реальной обратной связи для Claude Code. У него уже были модульные тесты и логи, но этого было недостаточно. Игры собирались и запускались, но игроки были невидимы, интерфейс не работал или ввод данных не был подключён. У Claude не было способа это узнать. Ему нужно было уметь видеть и запускать собственные игры.
Первый инструмент был простым: простой скрипт на Python для создания скриншотов запущенной игры. Claude мог запустить игру, сделать скриншот и проверить, отображается ли заставка или это просто чёрное окно.
Второй инструмент был интереснее. Я дал Claude возможность отправлять последовательности входных данных запущенным экземплярам игры — например, «влево на 3 секунды, пауза на 2 секунды, вправо на один кадр, выстрел». Затем он мог делать скриншоты и решать, отправлять ли последующие команды. Это превратило Claude в тестировщика.
Эти инструменты не нуждались в доработке — они просто работали. И то, как Claude их использовал, меня удивило. Во время тестирования одной игры я наблюдал, как ИИ проходит все 6 этапов, чтобы убедиться, что финальная битва с боссом работает правильно. Когда ИИ обнаружил проблему — полоску здоровья, которая не обновлялась, — он вернулся к коду, исправил её, перезапустил игру и прошёл её ещё раз, чтобы подтвердить результат.
Я также добавил несколько инструментов из других своих проектов:
линтер сцен. Claude иногда повторно использует идентификаторы узлов или генерирует неработающие ссылки на ресурсы в файлах Godot .tscn. Это вызывает непонятные ошибки во время выполнения. С тех пор, как я добавил линтер, который обнаруживает это до запуска игры, я не видел ни одного повреждённого файла сцены;
линтер шейдеров. Проверяет пользовательские шейдеры и возвращает Claude конкретные ошибки, а не расплывчатое сообщение «шейдер не скомпилировался», которое предоставляет Godot;
мэппер действий ввода. Небольшой помощник для правильной настройки ввода с клавиатуры/контроллера. Claude может редактировать файлы проекта Godot напрямую, чтобы добавлять новые действия ввода, но иногда он неправильно форматирует их, и сообщения об ошибках бесполезны.
Все эти инструменты имеют открытый исходный код, и я бы посоветовал вам попробовать их самостоятельно — даже без собаки.
Склеить всё воедино
Приложение DogKeyboard в итоге стало обрабатывать гораздо больше, чем просто маршрутизацию нажатий клавиш. Несколько важных деталей:
оно отслеживает код Claude с помощью тапов и воспроизводит звуковой сигнал, когда ИИ переходит в режим ожидания — это сигнал для Момо к набору текста. Когда Claude находится в режиме ожидания, и Момо ввела не менее 16 символов, приложение автоматически отправляет ввод нажатием Enter. Когда Claude работает, приложение удаляет лишний ввод на случай, если Момо начнёт проявлять нетерпение, и периодически закрывает подсказки режима планирования (шаг «проверка перед действием»), которые в противном случае заблокировали бы прогресс;

для видеозаписи используется легковесный веб-сервер, который накладывает текст на нажатия клавиш;
добавлена настраиваемая задержка, чтобы при задержке видеопотока наложение не показывало нажатия клавиш до того, как Момо начнёт набор.
Обучение Момо
Первым делом нужно было решить, какую собаку дрессировать. Хана (справа) вдвое больше Момо, но гораздо лучше поддаётся дрессировке — она самая умная из всех моих питомцев. Ещё до года она научилась прыгать, хвататься за дверную ручку и открывать любую дверь в доме, просто наблюдая за людьми.

Я ожидал, что собаки будут ходить по клавиатуре, наступая на клавиши. Так поступила Момо, когда украла мой бальзам для губ. Поскольку Хана достаточно высокая, чтобы просто перешагнуть через клавиатуру, Момо показалась мне лучшим кандидатом. Как оказалось, обе собаки научились постукивать и проводить лапами по клавиатуре, а не наступать на неё — но Момо в этом случае училась немного быстрее и печатала немного аккуратнее, поэтому выбор пал на неё.
Процесс обучения занял около двух недель с несколько нерегулярным режимом. Моей целью было учить собаку 10 минут два раза в день. Я начал с того, что разбросал по клавиатуре лакомства высокой ценности (сублимированный лосось), чтобы сформировать ассоциацию: эта штука забавная и предлагает хорошую еду.
Поначалу Момо расстраивалась. Она понимала, что клавиатура как-то связана с игрой, но не знала, как именно. Она ложилась на неё, лаяла на неё и пыталась сделать всё, что приходило ей в голову. В какой-то момент она попыталась провести лапой по клавиатуре. Я включил звук колокольчика и щедро её вознаградил. После нескольких повторений ассоциация сложилась, и она начала яростно атаковать клавиатуру при любой возможности.
Следующим шагом стала автоматизация вознаграждений. Я наполнял кормушку лакомствами (по 4 порции за раз, чтобы контролировать количество), ждал, пока она проведёт лапой по клавиатуре, а затем запускал скрипт, который воспроизводил звук колокольчика и выдавал порцию лакомств. После нескольких таких сеансов я увеличил сложность — не одно, а три движения, чтобы получить лакомство.
Одновременно я уменьшил объём поощрений, чтобы поддерживать здоровье собаки. Сначала это была смесь лакомств среднего ценника с премиальными, а затем только сухой корм с небольшим объёмом вкусняшек среднего ценового сегмента. Собаке всё равно нравилось.
В конце концов я автоматизировал всё с помощью приложения DogKeyboard и запустил его. Для каждой порции лакомства требовалось ввести не менее 16 символов, и предполагалось, что еда будет выдаваться только один раз за период простоя в игре Claude Code. Но во время тестирования появились ошибки — пару раз выдавалось несколько порций подряд. К сожалению, Момо это заметила и теперь постоянно нажимает на клавиатуру, надеясь на вторую порцию сразу же. Единственный способ отвлечь её — предложить более вкусные лакомства в другом месте, что я и делаю после того, как она ввела данные для игры.
Игры
Вот небольшой пример игр, созданных Момо. Каждая из представленных играбельна — это не макеты. Это далеко не полный список, но он отражает разнообразие созданных тайтлов. По мере улучшения инструментов и подсказок игры становились заметно лучше. Также заметно повысилось качество после выхода Opus 4.6 — Claude стал чаще создавать собственные шейдеры и другие визуальные эффекты.
Одна повторяющаяся проблема: у меня постоянно получались игры с простыми светящимися неоновыми 3D-фигурами, и я не мог получить их в другом стиле. Расстроенный, я спросил Claude, почему. Мне сказали, что это фирменный стиль проекта — внешний файл памяти ИИ «прицепился» к нему и постоянно его усиливал. Удаление MEMORY.md (постоянные заметки Claude Code о проекте) перед каждой новой игрой исправило это и дало гораздо более разнообразные результаты.

DJ Smirk. Одна из самых ранних игр Момо — хотя это скорее опыт, чем игра. Каждая клавиша на клавиатуре издаёт разный звук.

Munch. Соревновательная игра по созданию салата. Чтобы победить, соберите все 7 ингредиентов первыми.

Zaaz. Ещё одна головоломка. Цель — закрасить весь уровень, перемещая кисть, которая движется на целые клетки за раз. Преодолевайте препятствия, чтобы сократить расстояние. Некоторые уровни были непроходимыми. В ней также есть система подсчёта очков, которую я так и не разгадал. После этой игры я обновил задание, исключив головоломки.

Римская лягушка-оракул. Избегайте щупалец кракена и соберите золотые цепи, чтобы связать его. В какой-то момент оракул даже стал королём.

Octogroove. Удивительно сложная ритм-игра. Вы — осьминог, использующий четыре своих щупальца, чтобы играть на барабанах. Сбивайте ритмы в такт простой музыке. Это как Dance Dance Revolution, но сложнее из-за ритмов, идущих с разных сторон.

Ewe Heard Me! Игра про выпас овец. Прячьтесь и используйте лай, чтобы загнать их в загон. К сожалению, выиграть невозможно — первые две овцы, которых вы загоните в загон, просто остановятся и заблокируют вход для всех остальных. После этой игры я уделил больше внимания проверке возможности выигрыша в подсказках и инструментах.

Quasar Saz. На момент написания это последняя игра Момо. Вы играете за Зару, которая использует космический саз (инструмент типа лютни), чтобы бороться с искажённым звуком. Всего в игре 6 этапов + битва с боссом. В неё весело поиграть пару раундов, у неё хорошая графика и динамичный звук.
Заключительные мысли
Когда Момо впервые наступила на мою клавиатуру в декабре, это была просто забавная случайность. Несколько недель спустя, оставшись без работы и ища проект, я решил посмотреть, как далеко может зайти эта случайность. Ответ оказался намного дальше, чем я ожидал.
Технические аспекты — маршрутизация клавиатуры, автоматическая выдача угощений, разработка подсказок, инструменты обратной связи — всё это были решаемые инженерные задачи. Меня удивило, насколько мало от конечного результата зависело от того, напечатает ли Момо что-нибудь осмысленное. Магия не во вводе. Она в системе, которая его окружает. Хорошо продуманная подсказка, надёжные механизмы защиты, автоматическая проверка и стоящие инструменты могут превратить настоящую бессмыслицу в играбельную историю.
Если и есть какой-то вывод, помимо зрелищности, то он таков: узкое место в разработке с помощью ИИ — это не качество ваших идей, а качество ваших циклов обратной связи. Игры стали значительно лучше не тогда, когда я улучшил подсказку, а когда дал Claude возможность делать скриншоты своей работы, тестировать уровни и проверять файлы сцен. Те же инструменты, которые позволяют собаке, просто беспорядочно нажимая на клавиатуру, создавать работающую игру, значительно улучшат и вашу собственную целенаправленную работу с ИИ.
Момо не работает тайным гейм-дизайнером. Она — кавапу, которая узнала, что удар по пластиковому прямоугольнику заставляет появиться корм. Год назад разрыв между этим и разработкой программного обеспечения казался огромным. Теперь он кажется небольшим и с каждым днём сокращается.
Если вы хотите попробовать что-либо из этого сами — с собакой, кошкой или просто с вашими собственными случайными нажатиями клавиатуры — всё это доступно в виде проекта с открытым исходным кодом по ссылкам ниже.
Quasar Saz с некоторыми исправлениями, внесёнными человеком (рекомендуется)
Играйте в игру (версия Момо) — скачайте для Windows, Mac или Linux
TeaLeaves — инструменты, подсказки и исходный код для разработки игры
DogKeyboard — управление нажатием клавиш, выдача лакомств и другие функции
Meta Platforms*, а также принадлежащие ей социальные сети Facebook** и Instagram**:
* признана экстремистской организацией, её деятельность в России запрещена
** запрещены в России
