惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CERT Recently Published Vulnerability Notes
F
Fortinet All Blogs
有赞技术团队
有赞技术团队
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
量子位
博客园 - 聂微东
S
SegmentFault 最新的问题
月光博客
月光博客
爱范儿
爱范儿
罗磊的独立博客
博客园_首页
WordPress大学
WordPress大学
Google DeepMind News
Google DeepMind News
The Hacker News
The Hacker News
G
GRAHAM CLULEY
大猫的无限游戏
大猫的无限游戏
K
Kaspersky official blog
小众软件
小众软件
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
美团技术团队
T
The Blog of Author Tim Ferriss
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
C
Cyber Attacks, Cyber Crime and Cyber Security
酷 壳 – CoolShell
酷 壳 – CoolShell
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cisco Blogs
P
Proofpoint News Feed
PCI Perspectives
PCI Perspectives
Know Your Adversary
Know Your Adversary
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
T
Tor Project blog
S
Security Affairs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Vercel News
Vercel News
博客园 - Franky
IT之家
IT之家
Security Archives - TechRepublic
Security Archives - TechRepublic
AI
AI
O
OpenAI News
N
News and Events Feed by Topic
Y
Y Combinator Blog
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
H
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Как мы с ИИ воскресили игру с кнопочных телефонов
Абакар Магомедов · 2026-05-13 · via Все публикации подряд на Хабре

Как мы с ИИ воскресили игру с кнопочных телефонов

Простой

8 мин

8.9K

Привет! Меня зовут Абакар, я работаю главным техническим лидером разработки в Альфа-Банке, а в свободное время экспериментирую с ИИ разработкой и YouTube :) В школе на переменах я играл в простую, но очень залипательную аркаду про самолётики. Почти 10 лет в голове крутилась идея возродить эту старую (но любимую) Java-игру на Android: с управлением, стрельбой, игрой против бота и Bluetooth-режимом против второго игрока.

Если помните времена Nokia, Siemens и Sony Ericsson, то наверняка играли в подобные игры. Два самолета. Ограниченная арена. Бесконечные виражи и попытки перехитрить соперника. Скрин из игры ниже:

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

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

В этой статье расскажу, какие модели использовал, где ИИ приятно удивил, где бесславно упёрся в стену, почему Bluetooth оказался сложнее, чем казалось, и как проект в итоге доехал до релиза в RuStore.

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

Начинаем веселье

Итак, я начал с того, что вооружился всем, что попалось под руку: Claude с Opus, Codex с GPT, зачем-то ещё взял подписку на Cursor, но это уже совершенно другая история. В самом начале мне захотелось быть стильным, модным, молодежным и я решил воспользоваться фичей мультиагентности, когда у меня есть агент оркестратор и несколько субагентов, которые делают разные задачи (например, аналитик пишет требования, разработчик, совершенно неожиданно, разрабатывает, тестировщик тестирует).

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

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

Заспавни команду агентов, для проектирования и реализации этой фичи:

  • Продакт-инженер, сфокусирован на продуктовой ценности и решении потребности пользователя.

  • Аналитик, декомпозирует продуктовое решение на последовательность задач, описывает функциональные требования.

  • QA Engineer, валидирует DoD, описывает сценарии тестирования.

  • Software Engineer, реализует код и пишет тесты (если применимо, использует TDD).

  • UX Designer, валидирует требования и дополняет критериями пользовательского опыта задачи, после разработки валидирует решение.

Твоя же роль – тимлид, ты должен организовать их работу, следить за тем, чтобы команда была сфокусирована на цели, корректировать участников и отвечать на вопросы, но не пиши код сам. Строго только делегируй»

Первый провал: лимиты закончились, а игры всё нет

Я отправился пить кофе и ждал, когда по моему «мега-точному» описанию появится игра мечты. Когда я вернулся к монитору с наполовину недопитым кофе, оказалось, что лимит токенов канул в Лету, а рабочей игры всё ещё нет. Модель успела сделать примерно половину.

Подписка за 20$ на Claude никуда не годится по лимиту. Но ничего страшного — жёсткого дедлайна у меня нет, дождусь следующего вечера и продолжу работу, но уже без модной команды агентов, а по старинке: через общение 1-1 и требования сделать ту или иную вещь.

Могу отметить лишь один момент — лимиты на Claude улетали очень быстро, поэтому приходилось подступаться к снаряду несколько вечеров подряд. В итоге я получил тот самый долгожданный результат, который по визуалу выглядел не совсем так, как мне хотелось...

Первый рабочий билд

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

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

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

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

Claude vs Codex: где случился вау-эффект

И тут в игру вступил Codex с моделькой GPT 5.4. Я описал ему проблему ровно в том же формате, как и Opus 4.6 у Claude. GPT сразу запустил сборку на эмуляторе, снял скриншот, разобрался в проблеме и с первого раза ее пофиксил!

Моё удивление в этот момент сложно передать текстом.

Конечно, я понимаю, что Claude тоже может запустить сборку и проделать те же шаги, что и Codex...Но вся фишка в том, что последний я никак дополнительно не настраивал, и с точки зрения пользователя это был вау-эффект. А про лимиты я вообще молчу: с этого момента я перевел рельсы разработки игры на Codex плюс-минус за те же 20$ и ни разу не упёрся в лимит.

А мы тем временем отправимся в следующую главу, в которой мы обсудим момент, на котором начали буксовать и Opus и GPT.

Bluetooth и сетевой код: момент, где магия закончилась

Приходилось ли тебе когда-нибудь задумываться, как устроен сетевой код в шутерах ? Если приходилось, то были ли мысли, почему он такой сложный? Причина лежит на поверхности — в шутерах мы всегда пытаемся поддержать компромисс между плавностью отрисовки и достоверностью того, что происходит на экране. У всех разная скорость соединения с сервером, соответственно и разная скорость передачи пакетов.

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

У нас есть Host — тот кто создает игру, и Client — тот, кто подключается к игре. Мы можем выбрать самую тупую простую стратегию — отрисовывать UI на Client исключительно по данным с Host. В таком случае мы получим дёрганый интерфейс у Client, так как для плавного FPS в большинстве кейсов мы должны успевать отрисовать кадр за 16 мс (а иногда и меньше — зависит от герцовки экрана). Мы, естественно, не будем успевать это делать, если на каждый кадр будем ждать актуальные данные, которые Host передаст Client по Bluetooth.

GPT (как и Opus) решил выбрать именно такую стратегию, и я получил дёрганый интерфейс. После того, как я попросил ИИ исправить эту проблему, он перешел на модель взаимодействия через предсказания. Это схема, когда Client предсказывает будущую отрисовку и состояние мира, не ожидая подтверждения от Host, а после получения данных от него плавно приводит мир Client к нужному состоянию, если есть отличия. Ниже пример такой схемы:

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

Также нужно было избавиться от связи Client -> Host. Host должен создавать виртуальный сервер, к которому будет обращаться и Host и Client. Это нужно, чтобы уравнять разные возможности по отрисовке и обработке пакетов между Host и Client. Чтобы мощный девайс Host не приносил дополнительных проблем, если к нему подключилось слабое устройство Client (на котором более слабый Bluetooth модуль).

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

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

Завершаем игру

Итак, с сетевым кодом я худо-бедно разобрался. Но мне пришлось подсказывать ИИ необходимый архитектурный подход для решения проблем сетевого взаимодействия, и я немного поучаствовал в создании игры, как технарь.

Но результат меня порадовал — я смог поиграть в самолетики через Bluetooth и вернуться в те времена, когда мы с ребятами играли на переменах ещё на кнопочных телефонах:

Геймплей

Геймплей

Также был момент когда мне пришлось столкнуться с интересным запросом. Мой хороший друг, с которым мы выступаем на конференциях Саша попросил поддержать Android 12, чтобы он мог поиграть с дочкой в этот «AAA» проект. Ну что ж, сказано сделано. Буквально за одну команду GPT понизил минимально поддерживаемую версию с 13 до 12, и всё замечательно работало. Вот так быстро получилось расширить пользовательскую базу :)

Если заинтересовал проект — ознакомиться с кодом можно на GitHub, на 76% это C++.
Также если захочется запустить игру на Android, можно скачать ее с RuStore, либо просто APK с Google Диска.

Выводы

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

Самое ценное в этом проекте даже не то, что игра вышла в RuStore, а то, что идея, которая почти 10 лет была в категории «когда-нибудь», внезапно стала проектом, который можно открыть на телефоне и запустить. Почти на 90% проект сделал ИИ через мои требования. В 10% мне приходилось вести ИИ за ручку, но это абсолютно не напрягало.

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

ИИ хорошо справился с:

  • базовой игровой механикой;

  • генерацией кода;

  • быстрыми фикcами;

  • рутинной доработкой.

ИИ плохо справился с:

  • архитектурой сетевого взаимодействия;

  • пониманием скрытых требований;

  • выбором правильной стратегии без подсказок.

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

А если вы уже пробовали делать такие pet-проекты с ИИ — расскажите в комментариях, где он вас удивил, а где заставил страдать :)


Подписывайтесь на Телеграм-канал Alfa Digital — там рассказываем о работе в IT, делимся новостями, анонсами митапов и квартирников, рассказываем о технологиях, делимся советами наших экспертов, вакансиями и стажировками, иногда шутим.

Читайте также:

Про 11 типичных ошибок при проектировании интеграции с помощью Kafka на примерах

Всем привет! На связи Антон Воробьёв — архитектор в Альфа‑Банке. Некоторое время назад у нас появилс...

habr.com

История вайб‑кодера: «Я был скептиком, но до 4 утра спорил с GLM-5»

Привет! Я Женя, тимлид одной из команд Альфы. В статье расскажу, как наша команда скептиков вайб‑код...

habr.com

Безопасный вайбкодинг: от автопилота к пилоту

tproger.ru