Вайбкодинг первой игры, «кисло-сладкий» опыт с ИИ, архитектура, 3D, тесты и всё то что не учитывалось (Часть 1)
Всех приветствую!
Пометка: В масштабах такого проекта я впервые, в целом как и в геймдеве. Это любительский опыт и рассказ.
Тут не будет нравоучений как правильно, тут будет история, как я учился (и косячил) работать с нейросетями и к чему это всё привело. Прошу true разработчиков не кидаться камнями, хотя, кто вас остановит)
Так вот, была у меня давняя мечта пересоздать fallout 1 в онлайн (вдохновление по старой и доброй TimeZero – для тех, кто в теме).
Краткое описание: Изометрическая 2D ролевая игра жанра RPG, с пошагово тактической механикой боя и прокачкой персонажа.
Если вы не сталкивались c игрой fallout 1, то вот скриншот:
Попробую структурировать повествование…
1. Мечта и определение с целью
Напоминаю, мы в разработке игр нулевые, а значит мы просты и цель ясна – создать игру.
Есть проект, который хотим создать, есть куда подсматривать, как мы хотим видеть основную часть механики - тоже понятно, вроде всё просто на первый взгляд?
По началу да, неокрепшему уму – всегда легко воспринимать самое простое решение, особенно когда нет опыта.
2. ИИшница. Начало возможностей
Вот имеется на руках, допустим, Gemini AI. Игрался я по началу в веб интерфейсе, 3.1 Pro и 3.7 Flash (тогда ещё не было 3.8). Простые запросы, аля – напиши тетрис, сделай танчики – чем не забава для взрослого мужика, который может даже такую примитивную игру (для нынешнего времени) - сделать сам через ИИ? (Да, привыкайте, теперь каждый будет выдавать созданный продукт через ИИ – своим собственным, это неизбежно)
Легкий эффект эйфории в этом присутствует, я предполагаю, что те люди которые плотно уже «сидят» на ИИ – может и не скажут, но признают, что использование максимального потенциала ИИ – порождает пьянящий эффект, это становится интересно и вызывает ощущение, что теперь многое возможно. Раньше ты искал и скачивал какую-то маленькую программку из интернета, а теперь с помощью ИИ он тебе эту программку сделает через пару минут. Хочешь всратое видео, где ты вставил своё лицо вместо скубиду – да легко. Ну вы поняли.
Чем больше вы играетесь с возможностями ИИ и прощупаете его границы, тем быстрее наступает момент, когда хочется сотворить нечто серьёзное, как минимум попробовать.
3. Надежды и решимость
Наигрались, придумали себе цель, возложили всю надежду на ИИ.
Решились использовать всю мощь нейросети (её же хвалят с каждого ютуга).
Ну что, пробуем. Так как основная часть моей игры – пошаговая и тактическая, пытаемся взять уровень с низов, так сказать с фундамента и закдидываем нейронке простые запросы, по типу – «Создай мне гексональное поле в html», «Добавь персонажа который может передвигаться » и так далее.
Раз запрос, два, три, четыре, пять…. Это начинает расти в виде html файла со вставками JS и вот, файл потолстел (под 150 кб) и что-то наш друг начинает одно дополнять а другое ломать…
*По исходникам сохранился самый ранний прототип:
Да, сейчас набегут и скажут, что это всрато, но подождите, тут ещё многое не было учтено. Пусть это будет «неким стартом». По началу это будет вот так тупо: 2 кнопки, гексагональная сетка и планирование хода (или его подобие). Мы в азарте господа, "это хрень двигается и я строчки кода не написал" — это первое что посещает.
Но нужно расти, неужели мы сейчас будем писать всю игру в каком-то HTML файле? Не, херня какая-то..
На просторах одного лампового чата мне подсказали, что есть такая штука как «агент».
Опишу простыми словами: приложение, которое устанавливается и умеет работать с вашей файловой системой, запускать скрипты, которые он сам напишет и куча всяких полезных штук. А что для нас важно из этого? - Что теперь можно свой ущербный проект в виде одного html файла разбить на несколько модулей, скрипты вывести отдельно и подключать их, так же и стили не мало важно – тоже отдельно. В общем – структурировать по стандарту ES6 до читаемых 400-700 строк (агенту очень удобно работать с таким количеством), это помогает нейронке вводить новое и не ломать старое. Но о подводных камнях нейронок позже.
В моём случае я использовал агент Antigravity, как раз для gemini. Всё просто, понятно (привыкните уже через час)
4. Расширение проекта.
Не буду душнить, всё-таки вам и на картиночки посмотреть хочется, вот:
Тот момент, когда написание игры через ИИ уже не кажется таким простым и пора включать голову. За одно проверка на память, а на сколько ты хорошо помнишь то, что хотел бы реализовать? Это и захватывает, и пугает. Примитивный дизайн даже не создает ещё понимания того, что ты настолько в начале, что потом задолбаешься продумывать интерфейс, стиль и целый вагон всего остального. Но для начала и не нужно, у нас что-то двигается, как-то работает – для закрепления самое то!
5. А где графоний?
Ну что, вроде вот, палка - палка огуречик – уже что-то двигается, даже и выглядит не на столько уныло. Пора подключать картинки, находим на просторах то что нам подходит (конечно же временно, потом сделаем своё) – мы же тестируем, пробуем, права нарушать не собираемся.
Покопались, нашли картиночки, скормили эти ассеты ИИ, он выплюнул, посмотрели:
Почему готовые ассеты? Быстрый и дешевый способ посмотреть, как нейронка справится с этим, вдруг она тупить начнёт? Мы же в первые делаем игру и познаём ИИ одновременно.
Ну вот наш результат:
Ну что сказать, уже живо, выглядит уже хоть как-то уверенно. Всё равно говно, но получше, не такое жидкое)
Тут главное не пытаться вылизывать дизайн и графику на таких этапах (об этом позже). Так как это создано хоть и ИИшницей, всё равно есть чувство гордости, мол, это мой пездюк! Да, я его не программировал, но я столько писал текстом что нужно, что уже не смотришь на это как на нечто чужое. Ну ладно, все эти юношеские радости оставляем, процесс идёт и чего-то не хватает в нём... Раз мы таким темпом идём, может поднажмём? Может сразу в 3Д?
А давай попробуем, делаем копию игры, смотрим из трех движков UE, Unreal, Godot – что лучше подходит. За эти два дня мы сильно отупели и принять решения без помощи ИИ – уже не можем. Не, ну а что, мы в этом не разбираемся. Долбим его вопросами, он конечно переобувается в сторону godot – и мы это хаваем (справедливости ради, godot достаточно хорошо себя позиционирует как доброжелательный для новичков). Качаем godot, создаем голый проект, подкидываем эту папку с игрой агенту как Гарри Поттера под дверь… и говорим – вот живи с ним и давай делай мне крутую игру, в 3D!
Он накидывает с 10-15 запроса что-то относительно играбельное и тут мы упираемся в модели… Я вынесу это в отдельный пункт (но для жаждущих быстро что-то склепать и посмотреть – можно найти в открытых источниках пару моделек и анимацию)
Вкратце, текстуры генерирует Gemini. Откуда брать модельку? Ну либо искать на бесплатных площадках, либо генерим картинку с персонажем через gemini, потом идём с этой картинкой в tripo3D, там создаём модель по картинке, выдрачиваем ИИ на тему анимации, он подсказывает что надо с моделькой теперь идти в mixamo и будет тебе счастье…
Какой там день? Не помню, наверное, был четвертый и у нас рождается такое:
Скажу честно, в посте не указаны душные моменты с которыми мне пришлось стучаться к ИИ, штудировать интернет и вникать в некоторые аспекты гейм дева. У меня был минимальный опыт любительского программирования на VB6 и по мелочи html, php. Это было очень давно, в целом мне понятна «база» программирования, но это всё крайне любительское, никакие фремворки, библиотеки я не дрочил, даже те знания, которые были они растворились со временем. Даже с учётом этого я знатно прикурил, и открывал для себя всё новое и новое – и это было не так просто, как может показаться. Информация хваталась между строк, всё это обсуждалось с ИИ, мы искали варианты более простые, но качественные, инфа без глубины, поверхностно.
Несмотря на это, я адекватно воспринимаю тот факт, что прибегут эксперты и накидают мне за обе щеки, называя это высером нейронки - это вполне нормально. Я не претендую строить из себя важного, потому что не я пишу код в этом проекте. А в плане косяков – они везде, даже от ручной работы.
Ладно, это всё лирика, идём дальше
6. А что дальше???
За несколько дней мы перешли от изометрического 2D к 3D с моделями. Если вас в таком процессе будет посещать мысль, что это халтура, не сомневайтесь в этом, это чистейшей воды правда, но останавливаться не стоит, «всё приходит с опытом».
Не смотря на результат, собранный на коленке ИИ - мы подходим к важному нюансу, о котором и не думали – онлайн.. То есть мы то думали, у нас изначально это было заложено в цель, но мы не закладывали это в начале.
Создать болванчиков в виде NPC всегда проще, это встроено в проект, для особых случаев имеют минимальную базу алгоритма для совершения действий, а игрок это другое… Нам нужно протестировать онлайн, это же важно?
Конечно, мы закидываем ИИ правками, корректировками и получаем это:
Ну что сказать, для результата за пол недели – достойно. Нас как людей далёких от разработки игр это впечатляет и мотивирует. Но чем мы больше начинаем воспроизводить этот матч двух игроков, тем больше приходит осознание – что мы конкретно проебались …(простите за мат)
Если вы не заметили подвоха, то я скажу про него – это серверная часть. От того что у нас есть клиент, карта и два игрока – это вовсе не «онлайн». Помните я писал про структуру проекта? Это как раз архитектурное построение клиент-сервер. В целом, мы же попробовали? Да! Мы увидели что-то кроме квадратиков и кружков? Конечно! Даже в каком-то виде успели потрогать модели и разобраться с ними, понять и принять тот факт, что анимацию придётся делать через «скелетное» построение в том же блендере или покупать готовые паки анимации.
Думаю, на этом можно закончить эту часть поста.
Делаем ли мы какой-то вывод? Да фиг знает, мы же пробуем воплотить свою мечту и создать игру. Так же учимся работать с нейросетями, для нас это впервые. Результат на ваш суд, но хочу отметить, что было много неправильных решений, этот проект несколько раз пережил миграцию в будущем (или в настоящем). То есть то, что вы видите – это история четырехнедельной давности, но спойлерить не буду.
Если у вас проявился интерес к этому проекту или к самой истории, буду очень рад - если вы дадите знать об этом, подпиской, комментарием или что для вас удобней)
Реклама? Наверное, но суть не в заработке, а собрать единомышленников если им реально интересно. Не обессудьте, но а как иначе?
Средне-промежуточный результат можно посмотреть на На сайте, если кому-то интересно)















