captainxsander

На Пикабу
118 рейтинг 0 подписчиков 6 подписок 11 постов 0 в горячем

Ощущения от вайб-кодинга небольшого игрового проекта

В предыдущем посте я рассказал о созданной игре с помощью 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 установку. Оправданность таких вложений каждый решает сам, но мне просто хотелось пощупать весь процесс от начала и до конца.

Общие мюсли и мысли

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

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

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

У меня получилось попробовать себя в роли тестеровщика, гейм-дизайнера/разработчика и одновременно сделать вывод, что клепать круд контроллеры все еще мне ближе, но в качестве хобби вполне можно реализовывать какие-то маленькие проекты и радовать себя и близких.

Показать полностью

Вайб-кодинг и игровые автоматы

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

Вот что получилось:

Режим "Спасти Зверей"

Режим "Спасти Зверей"

Описание игры

На андроиде управление джойстиками слева (передвижение клешни) и справа (захват). На десктоп-версии, с которой будут видео, управление клавиатурное.

В игре несколько режимов:

1) Основной-уровневый "Спасти Зверей" - 5 уровней, на каждом открываются несколько уникальных зверей, каждая попытка стоит одну монетку. Но не стоит пугаться, все бесплатно, монетки можно зарабатывать в других режимах, либо они сами пополнятся один раз в день. Рекламы тоже нет. Каждый пойманный "зверь" попадает в Зверинец, о нем чуть ниже.

2) Режим "Найти Зверей" - где нужно по факту поймать правильного зверя, подходящего по описанию. Клешней можно управлять самостоятельно, разгребая кучу, а также отправить игрушку в лоток. За каждого правильно-определенного зверя дается монетка.

Режим Найти Зверей

Режим Найти Зверей

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

4) Обычный режим - песочница, где можно играть без учета монет, выбирать количество игрушек в куче, набор игрушек, сложность.

Режим Обычная Игра

Режим Обычная Игра

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

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

Зверинец

Подарок жене понравился, играет в дороге и дома, пытается открыть всех зверей, наверное это для меня самое главное.

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

Я попробовал начать описывать технические детали, но получилось объемно, напишу отдельный пост сейчас.

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

Если кто-то хочет тоже попробовать, вот ссылка на рустор.

Показать полностью 5 2

А что с чаевыми?

Обычно после посещения кафе и хорошего сервиса, оставляем чаевые через qr код на чеке, сейчас мобильный интернет приболел в центре.

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

Интересно, официанты не страдают от этого?

5

Пасха, а может Рамадан?

Сегодня открыл календарь на телефоне, взгляд зацепился за предстоящие праздники:

О, Рамадан, круто, надо глянуть, а когда там Пасха? Полистал - ничего. А Пасха то 12 апреля. Обидно, видимо для гугла Христос не воскресе.

Показать полностью 2
2

Раньше было лучше

Вчера были в мск в сети кинотеатров Каро, до этого не ходили в кино около года.

Первое, что неприятно удивило, это невозможность нормально насыпать себе попкорн и налить колу. Огромный зал самообслуживания, на витринах выставлены корзины с попкорном разных вкусов: ириски, сыр, трюфель, но нет обычного соленого, все они в огромных корзинах, которых за 2 часа не съешь. Персонала в зале как будто бы много, но все они бегают туда-сюда, просто насыпать при тебе нужный горяченький баскет никто не может/не хочет, берите с витрины. Если нужного вкуса нет, ну штош, в следующий раз значит.

Выглядит это примерно так (фото из интернета):

Пришли в зал чуть заранее, играет музыка (европа плюс) на всю громкость на весь зал.

И самое большое разочарование: теперь вместо анонсов фильмов 15 минут дурацкая реклама!11! Сбербанк, матрасы какие-то, тиньков, все банки, все МТСы. В ютубе/рутубе/вкВидео их хотя бы можно скипнуть через 10 секунд.

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

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

А фильм ничего так, кстати, понравился (Сводишь с ума).

Показать полностью 2
8

Работа тех. поддержки Яндекса

Жена в субботу 18.10 в обед ехала от родителей домой, оставила в такси шапку. Тариф Комфорт+, опомнилась минут через 5 после того, как поездка была закончена.

Тут же написали в тех. поддержку, я как раз встречал ее у дома. Толстые, дрожащие пальцы на морозе не дали корректно написать сообщение.

По началу ситуация развивалась вполне нормально, мне оперативно дали номер телефона, я начал звонить таксисту. Таксист не ответил ни с первого раза, ни с 5.

Ну, думаю, нет проблем, человек взял следующий заказ, ему неудобно, я сам когда езжу и вижу, что водитель разговаривает по телефону, чувствую дискомфорт.

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

Весь день пробовал набрать ему - трубку не берет. Поддержка Яндекса не делает примерно ничего.

Далее получаем информацию, что и Яндекс с водителем связаться не может. Заказы получается ему раздают, но написать ему или позвонить нельзя. Может он конечно закончил рабочий день и поехал к семье, но Яндекс об этом не говорит.

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

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

А если, не дай бог, в машине будет какая-то дичь, Яндекс вполне может войти в режим "Мы пытались связаться с водителем, он пока не ответил".

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

Показать полностью 4

Происхождение Дяди Фёдора

Мысли перед сном.

Если для матери Дяди Фёдора он - дядя, значит он брат её отца/матери, то есть сын деда/бабушки. Получается, что Дядя Фёдор - ребенок своей матери и её деда, а отец Дяди Фёдора - дед его матери.

В обратную сторону, для отца Дяди Фёдора он дядя, значит он брат его отца/матери, то есть сын его деда или бабушки. Деда отбросим по объективным причинам. Получается, что Дядя Фёдор - ребёнок своего отца и его бабушки, а мать Дяди Фёдора - бабушка его отца.

Итого: отец Дяди Фёдора и мать Дяди Фёдора друг другу соответственно бабушка и дедушка. Возможно ли это, я не успел установить, т.к. крепко заснул.

Происхождение Дяди Фёдора
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества