Меня посетила идея - сделать простую Top-Down стрелялку из скриншота. Сразу оговорюсь, это откровенный эксперимент на тему "а можно ли". На звание полноценной игры, или хотя бы ее альфа версии это совершенно не претендует. Даже Top-Down выбран - чтобы не сильно париться с анимациями.
И вот в субботу, делать было нечего и я решил попробовать. Для начала попросил Gemini (мне его рисунки нравятся) сделать мне скриншот выдуманной Top-Down игры про зомби. Описал примерно, что хочу видеть
Неплохо, но простенько
Не то, хотя симпатично
Совсем не то
А вот то, что надо для начала.
В общем, с нескольких попыток, получил перспективный скриншот. Для начала, вырезал героя и парочку зомби
Героиня. Да, для Top-Down это вся анимация
Зомби обычный, самый слабый
Зомби толстый и медленный. На спине видно, что знак радиации я вырезал криво
Зомби шустрый, чтобы не скучно было.
Кстати, тут я накосячил, ориентировать персонажей лучше на правую сторону экрана. Потом в коде пришлось придавать им принудительный разворот, что не очень хорошо, и я потратил 30 минут, пытаясь понять, почему стрела формируется справа от героини.
Дальше я решил, что город мне нужен побольше, с большим разннобразием домов. Скормив первую картинку в качестве референса, попросил сделать то же самое, но с другим масштабом
Совсем неудачный вариант
Вариант получше, но скучно
Вот прям хорошо.
Дальше я почистил улицу и поле от домов, и вырезал домики отдельно
Шаблон улицы
1/3
Дома и машины, как отдельные объекты
Дальше пошло мучение уже ДипСика с просьбой написать код к каждому объекту, для которого нужен был код и куча вопросов, как сделать то-то и то-то. Тут то и начали всплывать косяки моего выбора ракурса.
ДипСик решил писать с красивой разбивкой
На уровне видно расставленные здания и врагов с радиусом обнаружения
Фон я сделал одной повторяющейся картинкой, а домики и врагов расставил вручную. Довольно муторное занятие, особенно "с наскоку", без плана.
В общем, 30 минут рисования - и я получил уровень со зданиями, машинами и врагами. Отдельно замечу, что создание уровней в годоте довольно функционально, но удобным его назвать сложно. В частности, очень неудобно переносить большой кусок тайлсета на уровень. Так что рисовать длинные, насыщенные уровни может занять много времени и сил. Или рисовать тайлсеты так, чтобы можно было легко "нарезать" их удобными кусками, заранее давая тайлам нужные свойства, но для этого нужен опыт работы именно с тайлсетами и именно в годоте.
В общем, примерно к 10 вечера тот "технический минимум", который позволяет это запустить, был готов. Героиня бегала и стреляла, зомби на нее бросались и кусали за жопь.
Вот такой вот результат.
В общем, эксперимент, можно сказать успешный. Учитывая, что параллельно я смотрел видео, ел и гулял с собакой, можно сказать .что чистыми я на это потратил часа 4. Может быть, это кого то и вдохновит попробовать свои силы. Если кто-то вдруг захочет попробовать, можно загрузить с itch.io
Всем привет. Насмотревшись видео в стиле "Делаю игру за вечер с Чат GPT", я решил тоже попробовать. Благо, есть насущная проблема - я люблю под сериал/умное видео что нибудь простенькое поиграть, а таких игр сейчас мало. Браузерные игры превратились в донатно-рекламную помойку, игры на эмуляторах nes/sega или надоели, или не впечатляют. В общем, я решил попробовать свои силы.
Главным требованием стали: минимальное участие меня (наивно! очень наивно!), 2d top-down, и "уникальная" механика - получая урон от поверхности, персонаж прокачивает к этому урону устойчивость. Аналогично, тратя здоровье и выносливость. персонаж увеличивает их максимальное значение (на 1% от потраченного).
Начал я с GDevelop - нейросети утверждали, что он проще всех в освоении. Вот, например, что говорит о нем DeepSeek
GDevelop — это бесплатный кроссплатформенный движок для создания игр без программирования. Он использует визуальную систему событий (похожую на блок-схемы), что позволяет создавать 2D-игры любой сложности (аркады, платформеры, головоломки, RPG) просто перетаскивая объекты и настраивая логику. Игры можно экспортировать на Windows, macOS, Linux, Android, iOS и в веб. Идеален для начинающих и быстрого прототипирования.
Интерфейс GDevelop. Сверху сцена с персонажем, снизу - настройка управления в 2 вариантах, простая и "правильная".
Нарисовав человечка в стиле "квадрат и два отростка", я быстро понял, что превращусь в интерфейс между нейросетью и GDevelop. Учитывая, что они быстро переходят в режим "найти опцию "fuck_user_brain и включи там режим flugegehaimen" не уточняя, где эта опция в десятках меню незнакомой программы, я быстро сдамся. Так что от идеи "игра без кода, на голой логике" я отказался
Немного помучив нейросети вопросами "а что лучше и для чего", я перешел в Годот, решив, что это более простой путь - нейросети пишут код, я его копи-пащу и все в норме. В принципе, это единственная часть, где реальность почти совпала с ожиданиями.
Начать я решил с графики, а именно с персонажа. Ожидания были самыми светлыми, тем более, нейросетки их подогревали, обещая горы бесплатных ассетов на все случаи жизни. Увы, поиск напоминал ковыряние в корзине "все по 100р" в каком нибудь дискоунтере. Все в перемешку, где-то только персонаж, где-то только фоны или оружие, крупные паки или платные или довольно примитивны. К тому же доминировал стиль пикель арта, а мне он не очень нравиться. Так что я решил, что пусть нейросети мне и рисуют. К сожалению, если обычного персонажа или объект они рисуют неплохо, то вот с анимацией начинаются проблемы. Попытка заставить сделать 4 фазы шага, ну или просто одного персонажа с ногами в разном положении не помогают, всегда получается 4 копии одной картинки. И тут я понял, что встрял. Концепт персонажа есть, анимаций нет.
Добрый нейросети тут же предложили выход - сделай из концепта 3D модель, скачай анимации, и в Blender делай хоть миллион фоток, из которых соберешь анимацию. К сожалению, хитрожопые владельцы сайтов, превразающих 2d в 3d, заманив пользователя бесплатными токенами, не дают скачать модель, сделанную в последней версии их нейронки, без купеной подписки. Только из более ранних
Слева - модель в последней версии программы, скачать можно только купив подписку. Справа - модель, которую можно скачать бесплатно.
Ну ладно, смирив чувство прекрасного, скачал бесплатную и попытался с наскоку освоить Blender по советом нейросетей. Увы, их умение объяснять, куда тут тыкать, оказалось заметно слабее моего непонимания. Промучившись два вечера, я стал искать альтернативы. Одной стала VRoidStudio - бесплатная программа для анимации анимешных (простите за невольную тавтологию) персонажей. В ней есть немного шмоток, немного вариаций изменить тело, куча причесок, встроенные анимации и даже фоторежим. Казалось бы, вот оно счастье
Спрайт лист из VRoidStudio - только 4 направления из экономии сил и нервов.
В общем, я впервые получил хоть что-то, похожее на спрайтлист. Дальше я прогнал его через нейронку, чтобы выглядело не так убого
Ну, хоть на что-то похоже.
Самым сложным было распределить картинки так, чтобы Godot корректно считал данную анимацию. Пришлось рубить картинку на части и скармливать по кускам. Но все равно, меня не устроил такой результат. Особенно то, что вместо желаемых 8 направлений были компромиссные 4, на которые я убил кучу времени и сил. Добивать остальные направления ни сил не желания не осталось и я решил, что это не наш метод!!!
Пару дней отдохнув, я пошел опять рыться в ассетах. И нашел ассет рыцаря в 8 направлениях. Скачав его, я скормил одну анимацию нейросети, потребовав переделать рыцаря в девочку с серпом и корзинкой. Неожиданно, сработало. Так, помучив час нейросеть, я получил вот это
Итоговый сет анимации. Про удар забыл.
Причем, из-за торчащего серпа анимации имеют разный центр. По идее, целиться "центром сцены" нужно в пупок, но с таким подходом не получиться. Как результат - анимации немного "скачут", благо из-за размера не сильно заметно. Но вот, например, если добавить анимацию удара в виде "лезвия серпа полумесяцем перед персонажем" - очень заметно. Как это обойти, я не придумал, поэтому просто попросил нейросеть программно сделать эффеск удара. получилась вспышка - не по фен-шую, но хотя бы видно.
Эта жесть с анимацией так меня задолбала, что врагами, не смотря на славянский сеттинг, назначил слаймов. С травой, деревьями и т.д. проблема не было - главное, аккуратно вырезать фон.
Вот таких милах мне сделал нейронка
Более опасный вариант
А вот так изначально могли выглядеть трава, деревья и слаймы. Только вырезать правильно и можно кидать в игру
В общем, дальше стало проще - нейросеть действительно генерила код, который почти всегда работал. Часто даже сразу. Тут еще помогло то, что я примерно знал, чего хотел, и старался ставить конкретные задачи. Например - персонаж умеет ходить, делать рывок и бить. Нейросель все это описывала и даже комментами выделяла места в коде, куда нужно пихать ссылки на анимации.
Особенно меня поразило, что нейросеть довольно быстро сделала генератор уровня приемлемого качества. И даже выделила в начало кода все важные цифры - количество врагов, препятствий, лута. Это позволило мне легко менять сложность уровня на начальном тестировании. В общем, на пару дней я залип.
Отлипнув, я понял, что у меня есть уровень и даже лут, который некуда девать. Первоначальный план в стиле "я потом решу - будет деревня с торговцем или экран, на котором хвалят и считают очки" уперся в стену моей нерешительности. Я уже понимал, что если я буду делать деревню, то промучаюсь с ней неделю минимум, и все ради чего? Снаряжения, да и инвентаря не предполагалось, разговоров особых тоже. Так что я остановился на экране промежуточных результатов, заодно создав глобальную цель - собрать лечебные травы, чтобы вылечить деревню. Но, хотя сделать 3 простеньких экрана было намного проще, чем остальное, по ощущениям, сил на это ушло столько же. Так что я сделал вывод, что всю "скучную" часть лучше стараться по максимуму делать в начале. пока есть силы и энтузиазм, потом доделывать сложнее чисто психологически. Особенно потому, что промежуточные сцены приходится вкорячивать в середину работающей механики, боясь ее сломать.
В целом, ощущения очень двойственные. С одной стороны, сама сборка довольно проста и интересна, при условии, что все уже заготовлено - от идеи, до графики и текстов. С другой, приходится регулярно воевать с самим Godot, поскольку в интерфейсе я плаваю, и с нейросетями, которые то начинают путаться в задачах и коде, то уплывают в перфекционизм.
В общем, после создания первого уровня и врага стало проще - многое стал делать по аналогии, копируя уже работающее и меняя цифры и внешний вид. Нейросеть удивительна: она пишет код с ошибкой, но когда кидаешь ей текст ошибки - тут же говорит "А, ну конечно, так же нельзя делать" и радостно переделывает.
В общем, какие выводы
Сделать игру, не умея программировать и рисовать, можно, хоть и гораздо сложнее, чем об этом рассказывают.
Мечта о том, что стоит открыть базу ассетов и глаза будут разбегаться от выбора - это недостижимо. Скорее похоже на попытку выбрать из кучи уцененной одежды что-то не только приличное, но и себе под размер.
Даже простенькая игра на 3 миссии в редакторе выглядит довольно монстроузно.
Если сразу не раскидывать все картинки, скрипты и сцены по папкам, то в проекте будет адский бардак
Все скучное лучше делать первым, а то потом будет рабочий огрызок игры "без начала и конца" и полное нежелание что-то с ним делать.
Ну, вот и все. Получилось немного скомкано, но я тут опирался на свою память и самые яркие моменты, которые в ней отложились.
Отключили по все улице свет, авария. А напротив большое офисное здание с кучей работников. В обед все потянулись в магазины, конфетки, шоколадки, газировка и т. д. Пятерка не работает, дверь охраняет таджик. Аптека тоже, почта, ну, она спасибо хоть со светом работает. КБ привезли генератор и делают месячную норму по не алкогольным позициям.