разбор / от идеи до игры в интернете

Игра за вечер:
что реально
пришлось делать

Мы снимали видео, где четыре нейросети собирают одну и ту же игру, — и заодно получили проект, который не стыдно разобрать. Победила версия от Claude: браузерный футбол со сборными ЧМ-2026, собранный за ночь без единой строчки кода руками. Ниже мы разбираем собственный репозиторий по шагам: что было сказано ИИ, что он решил сам, где всё сломалось и как чинилось.

до первого промпта

Почему первым проектом стоит брать игру

Не потому, что это весело (хотя да). Потому что у игры есть три свойства, которых нет у «сервиса для записи клиентов» — а именно на нём обычно и застревает первый заход.

видно глазамиГотовность не надо доказывать: либо мяч летит и по нему интересно бить, либо нет. Не нужен ни заказчик, ни метрика, чтобы понять, что не так.
нет чужих данныхНи базы, ни входа по паролю, ни телефонов клиентов. Значит, нечего терять и нечего закрывать — весь класс проблем с доступом просто не возникает.
замкнутая задачаИгра целиком помещается в голову и в один разговор. «Сервис» же тянет за собой почту, оплату, админку — и на третьем дне ты уже не помнишь, зачем начинал.
Разбираем свой проект. «AI футбол» появился на съёмках нашего видео: мы дали одну задачу ChatGPT, Claude, DeepSeek и Алисе от Яндекса и сравнили, что выйдет. Разбираем версию победителя — Claude Fable 5. Она лежит в витрине и открывается по ссылке, а всё, что ниже, посчитано по её репозиторию. Видео к просмотру обязательно: там видно, как те же четыре модели справляются с одинаковым промптом.
01
сначала — что получилось

Игра, а не демка

Обычно результат вайбкодинга выглядит как «кубик ездит по экрану». Здесь получилась вещь, в которую играют: двенадцать настоящих сборных, реальные составы с номерами, ауты, угловые, офсайд и два тайма на табло.

экран 1меню
Главное меню игры: заголовок «AI футбол», кнопки «Начать игру», «Посмотреть команды», «Настройки»
Ни установки, ни регистрации: страница открылась — можно играть. Для первого проекта это и есть главное свойство.
экран 2выбор соперника
Экран выбора команд: карточки сборных с рейтингами и описанием Марокко на турнире
Рейтинги и описания команд ИИ собрал сам — сходил за реальным состоянием турнира и вывел характеристики из того, кто кого выбил.
экран 3матч
Матч Бельгия — Марокко: игроки с номерами и фамилиями, табло, подсказки по управлению
Управляешь тем, кто ближе к мячу, — как в FIFA. Поле в движке размечено в метрах: 105 × 68, как в правилах ФИФА.

Можно потрогать прямо сейчас

Игра открыта, ссылка живая — это, собственно, и есть результат вечера.

2147строк кода во всём проекте
11файлов, включая картинки
0библиотек и сборщиков
10 минмежду первым и вторым коммитом
02
самая недооценённая часть

Промпт: четыре вещи, без которых будет мусор

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

о чём
Мини-FIFA в браузере с настоящими командами и игроками ЧМ-2026: хочу запоминать фамилии и номера прямо во время игры.
Не «футбол», а зачем он тебе. Отсюда берётся всё остальное — и составы, и вид сверху, и подписи с номерами.
где живёт
Должна открываться двойным кликом по файлу и одинаково работать, когда я выложу её на GitHub Pages.
Это ограничение выбирает стек за тебя: ни сервера, ни сборки, ни установки — значит, чистый HTML, CSS и JS.
чего не надо
Без библиотек, без npm, без файлов, которые надо где-то докачивать.
Тут ИИ и придумал синтезировать свисток и гул трибун прямо в браузере: в проекте нет ни одного звукового файла.
когда готово
Готово, когда в неё интересно играть: соперник сопротивляется, но обыгрывается, и работают настоящие правила — ауты, угловые, офсайд.
Самый пропускаемый пункт. Без него ИИ считает задачу решённой в тот момент, когда код запустился без ошибок.
Не пиши техническое задание. Формулировка «сделай на Canvas с игровым циклом 60 fps» — это попытка говорить на языке, который ты не знаешь, и она сужает решение до того, что ты успел где-то подсмотреть. Ограничение «должно открываться двойным кликом» даёт тот же результат и честно описывает то, что тебе действительно важно.
03
разделение труда

Что решал ИИ, а что осталось человеку

Полезно посмотреть, куда на самом деле ушли решения. Технических среди человеческих нет ни одного — и это не фигура речи, это видно по репозиторию.

Решение Кто Как это выглядело
Что за игра и зачем человек «Хочу запоминать составы сборных, играя» — единственная мысль, которую нельзя делегировать.
Язык, файлы, устройство движка ИИ Canvas и чистый JS без библиотек — прямое следствие «открывается двойным кликом».
Данные турнира и составы ИИ Сходил в интернет за состоянием ЧМ-2026: кто кого выбил, кто сколько забил, — и вывел из этого рейтинги команд.
«Скучно / нечестно / не то» человек Сыграл, почувствовал, сказал словами. Единственный источник этой информации — тот, кто играет.
Как именно чинить баланс ИИ Сам заметил на скриншотах, что забивает слишком легко, и сам переписал логику вратаря.
Что выкладывать и когда хватит человек Решение «это уже игра, публикуем» — тоже не техническое.

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

04
то, о чём не пишут в кейсах

Три места, где всё сломалось

Мы не застревали нигде — застревал ИИ. Показательно, что все три поломки относятся к вещам, которых нет в описании задачи: их не сформулируешь заранее, они вылезают, когда начинаешь пользоваться.

Поломка 1. Соперник забивал как из пулемёта

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

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

0 / 0 сейвов из ударов · ждём первый удар

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

В коде игры это четыре строки: время до линии ворот, высота мяча в этот момент — и рывок туда. Последний аргумент true и есть «бежать, а не идти»: без него вратарь так же спокойно опаздывает, только уже в правильную точку.

// сколько секунд мячу лететь до линии ворот
const tToLine = (ownX - ball.x) / ball.vx;
// на какой высоте он её пересечёт
const crossY = ball.y + ball.vy * tToLine;
moveTo(gk, ownX, clamp(crossY, GOAL_Y1, GOAL_Y2), dt, true);

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

Баланс — единственное, что не выводится из описания. ИИ прекрасно пишет правила, но не чувствует, весело ли по ним играть. Это та часть работы, где человек незаменим, и просить надо не «сделай сложнее», а «соперник забивает два гола за десять минут — это слишком много, нормально было бы один за матч».

Поломка 2. Правки есть, а в браузере ничего не меняется

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

как проверитьОткрой ту же страницу в приватном окне. Там кеша нет: если правки видно — дело именно в нём.
как лечитсяПриписать версию к ссылке: <link href="css/style.css?v=2">. Адрес стал другим — браузер качает заново.
побочная пользаТот, кто уже играл вчера, тоже получит новую версию, а не застрянет на старой навсегда.

Поломка 3. Обе команды в красном

Бельгия против Марокко: обе играют в красной форме, и на поле не разобрать, где свои. В настоящем футболе это решают запасным комплектом — и ровно так же сделали в игре. Правило простое: если цвета слишком близки, гости переодеваются.

if (colorDist(kit0.p, kit1.p) < 130) {
  // цвета слишком похожи — гостей переодеваем в запасную форму
  for (const p of players[1]) p.kitUse = teams[1].kit2;
}

Мелочь на четыре строки, но именно из таких мелочей складывается ощущение «сделано по-настоящему». И заметить её может только тот, кто сел играть.

05
главный приём

Цикл вместо технического задания

Ни одна из трёх поломок не была бы найдена «планированием». Все три вылезли, когда результат посмотрели глазами. Поэтому работа устроена не как «написал ТЗ — получил продукт», а как короткий круг, который проходится десятки раз за вечер.

01 описал изменение 02 ИИ собрал 03 посмотрел глазами 04 назвал, что не так круг — минуты, а не дни
Смысл в длине круга. Пока он короткий, ошибка стоит одну переделку; когда между «описал» и «посмотрел» проходит неделя, она стоит недели.

Из этого следует пара неочевидных привычек:

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

Телефон, которого нет, и ссылка, которая есть

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

Проверить мобильную версию, не беря телефон в руки

Мобильное управление — джойстик слева, кнопки справа — обычно включается по признаку «на устройстве есть касания». Проверять такое, перекладывая телефон, мучительно. Поэтому в игру добавлен флаг: открываешь адрес с ?touch — и мобильный интерфейс появляется в обычном браузере.

мобильный видтот же матч, открытый с ?touch
Мобильная раскладка игры: кнопки «смена», «вразрез», «пас», «удар», «спринт» и кнопка паузы
Такой флаг стоит просить в любом проекте, где интерфейс зависит от устройства: он превращает «надо потом проверить на телефоне» в обычную вкладку.

Выложить

Игра — набор файлов без сервера, поэтому публикация заняла минуты: репозиторий, включённые GitHub Pages, ссылка. Пошагово это у нас разобрано отдельно.

Как выложить проект в интернет

Инструкция на 15–20 минут: аккаунт, репозиторий, Pages, ссылка, которую можно отправлять кому угодно.

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

Как повторить это не с футболом

Разбор бесполезен, если из него нельзя сделать своё. Порядок ниже воспроизводит тот же путь на любой замкнутой идее — игре, тренажёре, генераторе, калькуляторе.

  1. Сформулируй, зачем это тебе. Не «приложение для изучения языков», а «хочу запоминать неправильные глаголы, пока еду в метро». Личная причина — источник всех деталей.
  2. Назови ограничение, а не технологию. «Открывается по ссылке с телефона, ничего не устанавливать, работает без интернета» — этого достаточно, чтобы стек выбрался сам.
  3. Скажи, когда считать готовым. Один-два признака, проверяемых глазами: «десять слов подряд без подсказки», «соперник иногда выигрывает».
  4. Попробуй сам, прежде чем просить правки. Пять минут пользования дают больше, чем час размышлений о том, что улучшить.
  5. Проси по одному изменению. Круг «описал → посмотрел» должен занимать минуты. Список из десяти правок гарантированно вернётся сломанным где-то посередине.
  6. Выложи раньше, чем будет идеально. Ссылка, которую можно отправить, меняет отношение к проекту сильнее, чем ещё один вечер правок.
честная часть

Что в этой истории не так

Разбор, в котором всё получилось, — плохой разбор. Вот границы, за которые этот опыт не переносится.

01

Один вечер — свойство задачи, а не метода

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

02

Проверял тоже ИИ

Дисбаланс нашёл он сам, скриншотами. Это удобно — и это же слепое пятно: он проверяет то, что ему пришло в голову проверить. Всё, что человек не сел и не потрогал руками, остаётся непроверенным, каким бы уверенным ни был ответ в чате.

03

Данные турнира устаревают

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

04

Чужие имена и бренды

В игре настоящие фамилии игроков и названия сборных. Для некоммерческого фанатского проекта это обычная практика, и в самой игре это указано. Но как только на таком проекте появляется реклама или оплата, вопрос перестаёт быть теоретическим — и решать его лучше до, а не после.

короткие ответы

Что спрашивают чаще всего

совсем без кода?Да. Ни одной строчки руками и ни одного технического решения — только описания того, что должно получиться, и «вот это не так».
какой инструментРазбираем версию от Claude — она победила в нашем сравнении четырёх нейросетей. Принцип не меняется от инструмента: важно, чтобы он умел сам запускать результат и смотреть на него.
сколько стоилоОдин вечер и подписка на ИИ. Хостинг игры — бесплатный, потому что это набор файлов без сервера.
а если я не понимаю кодВ этом разборе код показан, чтобы было видно масштаб правки — четыре строки. Читать его необязательно, писать тем более.
с чего начать сегодняС идеи, у которой есть проверяемый глазами результат. Всё остальное — вопрос круга «описал → посмотрел».
где показатьВ витрине клуба: там же лежит и эта игра. Ссылка на работающий проект — лучшее портфолио, которое сейчас бывает.
откуда мы это знаем

Разбор собран по репозиторию, а не по воспоминаниям

Игра появилась на съёмках видео про сравнение четырёх нейросетей — ChatGPT, Claude, DeepSeek и Алисы от Яндекса. Разбирали версию победителя, Claude Fable 5. Строки, файлы, время между коммитами и куски кода посчитаны по её репозиторию, а не по памяти: код в тексте упрощён, но логика в нём настоящая. Скриншоты снимает скрипт, который сам открывает игру, выбирает Бельгию и Марокко и доводит матч до нужного момента, — изменится игра, пересоберутся и кадры.

Хочешь увидеть, как с той же задачей справились остальные три нейросети — это в видео. Разница местами неприличная.

Собрал что-то похожим способом и знаешь приём, которого здесь нет? Напиши в чат сообщества — дополним разбор.

дальше

У тебя тоже что-то лежит недоделанным

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

Показать свой проект