Ощущения от вайб-кодинга небольшого игрового проекта
В предыдущем посте я рассказал о созданной игре с помощью Codex и libgdx. Здесь расскажу впечатления о процессе и некоторые детали.
Выбор технологий
У меня есть опыт разработки на Java, поэтому в качестве фреймворка был выбран libgdx. Хотелось сделать именно мобильную версию, а у libgdx есть и документация, и готовый инициализатор/генератор проектов под разные платформы, сборщики и т.д. и т.п.
В энтерпрайзе по-прежнему нужны спринг-бут микросервисы создай/удали/измени, но мир меняется стремительно, все вокруг говорят об агентах, нейросетях, вайбкодинге, да и времени оставалось мало, хотелось получить результат без погружения глубоко в технологию при этом пощупать что-то новое.
Работа с Codex
Выбор пал на ChatGPT plus с Codex. Сначала кода было мало, и я использовал веб версию ChatGPT, но потом проект разросся, поэтому попробовал Codex в связке с Intellij Idea, и это уже стало заметно практичнее. В качестве проверки работы игры дополнительно запускал проект в Android Studio с соответствующим эмулятором.
У новых версий Idea есть встроенный чат-инструмент с поддержкой разных нейросетевых движков, типа Codex, Copylot, Claude и т.д.
Счастье продолжалось недолго, через пару дней мой провайдер вероятно заметил чат-сессии с дивным западным миром и заблочил мне авторизацию из Idea. Я пробовал разные способы решить проблему, но, не вдаваясь в детали, ни один из них не помог.
Ютуб спокойно работает, но чат из приложения Codex или Idea - нет. Пришлось вернуться к веб-версии, но уже именно Codex, а не GPT. Там никаких проблем с ответами модели не было.
В целом она тоже достаточно удобна, я поженил ее с GitHub, Codex запускал в своем окружении код и мог делать ПРы на гитхаб, откуда я пуллил их себе и тестировал.
Codex достаточно быстро понимал, что я от него хочу и делал +- то, что нужно. Первое время ощущение, что скоро машина заменит меня как специалиста, не покидало. Но чем больше я хотел, тем хуже он справлялся, и приходилось лезть в код и до-тюнивать руками. Здесь нужно сказать, что у меня нет опыта правильного "промптинга", я не проходил спец курсы, не смотрел видео по теме и т.д.
Так что мы часто попадали в ситуации хождения по кругу. Находили дефект, пытались его исправить одним способом, не помогало, ломали в другом месте, возвращались к началу, и в итоге убирали требование, если оно было некритичным. Все как в реальном процессе разработки.
В итоге опыт работы с Codex оцениваю на 8/10, вполне себе жизнеспособная модель разработки для небольших проектов или для быстрого мвп, что - то типа экстремального программирования, он делает, ты ревьюишь/тестируешь. Опыт использования его в энтерпрайз бизнес критичных проектах оценивать не могу и не буду. Но вполне себе представляю, где он может пригодиться.
Лимиты и планы
Плана Plus вполне хватало на все мои хотелки, через 5 часов лимиты пополнялись. На неделю также установлен лимит, но я не уделял так много времени игре, так что почти всегда укладывался.
Исключением являлась генерация картинок, недельные лимиты Codex в этом случае выжирались за пару сессий, и в последствии я пользовался сайтами бесплатных ассетов типа itch.io, брал что-то с pinterest, на форумах и т.д.
Разработка
Мне было понятно, что я хочу реализовать, есть физический пример и нужно только воплотить его аналог в коде. У libgdx есть библиотеки 3d и 2d, но я сразу понял, что с 3d будет сложнее, особенно если не погружаться глубоко.
Наиболее важными являются три объекта - клешня, игрушки и окружающее пространство - пол/лоток/стенки. Весь код по сути описывает взаимодействия между ними.
Довольно много времени я пытался сделать взаимодействие клешни с другими объектами наиболее физичными, но как только у меня что-то получалось - раскачивание, опускание, тут же все ломалось при захвате игрушки.
Через n-ое количество попыток и откатов, я решил оставить реальную физику только для игрушек и стенок/пола/лотка, а клешню и трос рисовать без физики, описывая логику ее движения через формулы.
Когда клешня начала вести себя нормально, встал вопрос, как добиться тех же ощущений азарта, что и при реальной игре. Клешня должна выпускать игрушку у лотка, не цеплять ее при опускании и т.д. Т.к. реальными остались только игрушки, это тоже пришлось описывать вероятностями и логикой. В результате обидные проигрыши появились, но стали менее объяснимыми чем в реальной жизни. Хотя и в реальной жизни мы все знаем про "подкрутку" таких автоматов.
На этот момент у меня уже пропал запал вкатывания в новую профессию, нормализация поведения клешни высосала все творческие соки.
Сильной отдушиной стало придумывание разных режимов игры, их связей и экономики, наверное это можно назвать гейм-дизайном. Режимы игры прям реально приносили удовольствие. К тому же при уже реализованном игровом процессе сложностей это не добавляло и правки вносились быстро.
Публикация
После окончания реализации встал вопрос, куда публиковать игру. Было желание, чтобы получатель подарка установил его из магазина приложений, а не просто установил apk по ссылке.
Гугл плей, на сколько я понял, сейчас требует предварительное тестирование группой пользователей. Рустор не требует ничего, но с определенного времени физическое лицо не может сделать приложение платным, только через ИП или ЮЛ. Выяснить, на сколько прибыльна мобильная разработка для инди-проектов, на русторе не получится.
У меня не было локализации игры на английский, а большая часть в ней сильно завязана на русский язык. Так что публикация ее в гугл плей в планах есть, но пока не сделана.
Рустор супер-неудобный, но не требует большого количества приседаний, так что приложение было загружено туда.
Дополнительно я решил попробовать его продвижение через vk.ads, создал рекламную кампанию, пополнил баланс на 2к и в итоге получил целую 1 установку. Оправданность таких вложений каждый решает сам, но мне просто хотелось пощупать весь процесс от начала и до конца.
Общие мюсли и мысли
В течение рабочей и земной жизни вполне реально поменять вектор, особенно, если стартуешь с разработчика - можно уйти в тестирование или в аналитику. Или например поменять доменную область - вэб-разработчик может стать мобильным разработчиком или разработчиком игр (что не всегда одно и то же). Можно попробовать анимацию, и эта часть разработки у меня тоже была в планах, поразбираться с графикой, блендером, но времени уже не хватало.
Раньше смена направления мне представлялась чем-то очень сложным: нужно потратить кучу времени на изучение технологий, инфраструктуры, области в целом, а если решиться - вероятность потерять в финансах достаточно высока.
Благодаря нейросетям, ты можешь сразу попробовать и посмотреть что получится. Определить, приносит ли тебе это удовольствие или загоняет в скуку.
У меня получилось попробовать себя в роли тестеровщика, гейм-дизайнера/разработчика и одновременно сделать вывод, что клепать круд контроллеры все еще мне ближе, но в качестве хобби вполне можно реализовывать какие-то маленькие проекты и радовать себя и близких.















