Два года смотрел на геймдев со стороны и думал «когда-нибудь». Этой весной надоело думать.
Две недели, ноль опыта в программировании, код писала нейронка. Больше нигде нейронка не была замечена. Весь контент — человеческий. Получилась маленькая игра про костёр в замёрзшем лесу — к вам тянутся духи, вы их греете, пока не налетел ветер и всё не пошло по одному месту.
Девять минут, бесплатно, в браузере.
Друзья говорят, что четвёртая ночь — это больно. Проверьте сами.
Всем привет. Я бы хотел рассказать про игру, которую делаю последние 8 месяцев. Это “Roguelite RPG”, с упором на генетику. Большинство RPG построено на боях в разной тематике, где после боя игрок получает опыт, деньги, предметы или экипировку. В процессе игры персонаж прокачивает параметры, изучает таланты и скиллы, и продвигается по локациям со все более нарастающей сложностью. Я решил попробовать отказаться от этих систем. Основная идея IRSEN такая - после боя игрок разбирает врагов на биоматериал, извлекает гены и перестраивает собственного персонажа.
Генетическая Карта
Почему я вообще выкинул обычный лут.
Мне не хотелось делать еще одну систему “меч/пистолет +3, броня/силовое поле +5%, кольцо на крит”. Я попытался сделать так, чтобы награда после боя была не предметом, а частью билда. Т.е. не “нашёл новый шмот”, а “добытый из врага ген меняет тело персонажа”. Причем изменение персонажа не статическое, а динамическое.
Единицей лута является ген, который может менять характеристики персонажа. И когда ген установлен в генетическую карту, он начинает влиять на финальные параметры игрока. Однако в любой момент ген можно извлечь из карты и вернуть характеристики к базовым значениям. Причем расположение гена на генной карте играет свою роль, каждый ген связывается с соседями и образует генетические цепочки.
Примеры генов
А каждая цепочка в свою очередь выдает персонажу новые умения. Таким образом, в процессе составления генетической карты, игрок может двигая одни и те же гены по карте собирать их в различные цепочки и получать различные умения. В любой момент цепи можно разрывать и образовывать новые. Которые также дадут свои умения. Гены я разделил на пять архетипов, каждый из которых обозначен своим цветом. Цепочка состоит из трех генов. При составлении цепочки, два из трех генов должны принадлежать к одному и тому же архетипу. Такие комбинации позволяют создавать 25 вариантов составления цепочки (порядок у меня не играет роли). Что дает 25 скиллов.
Один и тот же ген в зависимости от точки и местоположения на генетической карте может попадать в несколько цепочек. Т.е. если разместить гены архетипов B и С в линию вида
[C][C][C][B][B] - это даст сразу три умения.
[C][C][C]
[C][C][B]
[C][B][B]
Но на карте конечно гены выстроены не в ряд, и к одному и тому же гену может в разные цепи подключаться до четырех других генов. Сам по себе каждый ген имеет различные уровни развития. В генетической лаборатории игрок может сливать гены, и получать из двух исходных генов новый ген, такой же по архетипу, но с более продвинутым аллелем. Это классическая прогрессия предметов из игр.
Начиная с какого-то момента при развитии, на генах начинают кроме параметров проявляются свойства умений. Эти свойства начинают влиять на умение и изменять ядро его работы. Это немного похоже на PoE.
Выбор следующего сектора
Если взять обычное умение наносящее AoE урон по ряду врагов, и добавить на генетическую карту один ген со свойством этого умения, оно может быть преобразовано в умение по соло-цели, плюс повышает урон и увеличивает перезарядку. Но теряет способность цеплять побочные цели. А если на это же умение поставить ген с другим свойством, оно начинает при ударе развешивать дебаффы на цели. Можно конечно взять и поставить сразу несколько разных параметров на одно и то же умение. Сейчас я уже сделал по 2-3 различных свойства на каждый скилл, пытаюсь таким образом увеличить варианты развития персонажа. Каждое свойство также может развиваться через лабораторию, или например сжигаться с гена и переноситься на другой ген.
Основной игровой цикл у меня такой: сражаешься с группой врагов, после боя извлекаешь из них гены, используешь гены чтобы усилить текущие, или добавить в цепочки, или нарастить количество одинаковых цепочек чтобы поднять ранги умению. Персонаж меняет свойства и скиллы, и может сражаться с более сильными противниками. В любой момент если снять все гены с персонажа, получится опять стартовый перс, который начинал игру.
Извлечение генов и генный профиль врага
Враги у меня не просто мешки с лутом. Каждый враг имеет свой генетический профиль. После боя за каждого убитого врага игрок получает несколько попыток извлечь ген. Он выбирает тело из списка убитых врагов и решает, гены каких архетипов сейчас ему нужнее. Например, враг-танк будет с большей вероятностью отдавать гены синего архетипа (защита, выносливость…), а враг-кастер - гены с псионическим профилем (псионическая сила, либо пробивание…). Псионика у меня - это аналог кастов.
Ну конечно есть набор других систем, которые влияют на персонажа, но каждую из них отдельно описывать долго: адаптации, перки, катализаторы, импланты, поглощение, стабилизация генов. Отдельно упомяну лишь мутации.
По сюжету у меня были ядерные удары по планете, и все, кто их пережил, спустились под землю. Там более сильные сущности мутировали и пожрали более слабых. После этого перестроили тела и подчинили отряды условно живых созданий (да, это скелеты). Персонаж игрока - один из выживших людей, который слабее подвержен облучению и умеет перестраивать тело напрямую генетически. Он отправляется в эти подземелья и имеет небольшой отрезок времени для того чтобы найти самого сильного врага в глубине и уничтожить его. По ходу игры есть фоновое радиационное облучение, которое постоянно действует на игрока. И через определенные отрезки времени повышает накопленную радиацию. Когда радиация накапливается до предела - персонаж мутирует, ему выдается случайная мутация, которая начинает портить игру.
Мировая карта
Например мешает исцеляться, отключает мини-карту, заставляет пропускать ходы в бою, или усиливает врагов. Чем больше таких мутаций накоплено, тем сложнее играть. И в какой-то момент под тяжестью мутаций персонаж умирает и игра завершается. Т.е. надо успеть пройти её до того как мутации тебя убьют.
Подземелье разделено на этажи. Чем глубже этаж, тем сильнее облучение. Этажи разделены на сектора. Сектора - это небольшие карты, которые проходишь от стартовой точки до финальной. Далее попадаешь на Станцию Обработки.
Станция Обработки
На ней можно выбрать следующий сектор, и попытаться разблокировать проход на более глубокий этаж. Таким образом проходишь все глубже, пока на шестом этаже не найдешь босса и не сразишься с ним. В демо-версии сейчас четыре этажа.
Как я пытаюсь сделать это читаемым.
Проблема с которой я столкнулся (кроме основной проблемы - про игру никто не знает) - это то, что все мои идеи тяжело объяснить игроку. Когда игру тестировали первый раз, то многие вещи мне пришлось словами разъяснять, иногда со скринами в телеграм. Сейчас я уже конечно сделал несколько систем обучения, начиная от туториала со скринами и текстом который появляется по ходу игры, заканчивая принудительным онбордингом который не дает тебе продолжить игру пока ты руками первый раз не возьмешь гены из лута, не соберешь первую цепочку и не перенесешь скилл на панель. Я даже ввел стартовые геномы, которые заполняют игроку начальный генетический профиль с несколькими собранными цепочками.
Генезис
Однако все равно часть вещей я еще не придумал как объяснять. Например три одинаковые цепочки генов продвигают умение на второй ранг, а пять цепочек - на третий. Как объяснить игроку это через игру, идей пока что нет. Я добавил это в подсказки и туториал - но их никто не читает. Видел запись как игрок играл первый раз: как только появилась первая подсказка - он сразу нажал “Отключить” со словами что не собирается ничего читать. А когда умер из-за слабых скиллов, то выслал мне отзыв, что игра конечно прикольная, но непонятно почему он умирает.
В общем, демо-версию я уже выложил в Steam, называется IRSEN. Скриншоты и часть описанных систем относятся к текущей рабочей версии, которую я готовлю к следующему обновлению демо.
Публичная демо-версия сейчас основана на предыдущей сборке: там уже можно попробовать основной цикл с боями, генами, мутациями и генной картой, но часть показанных здесь визуальных и системных изменений появится в обновлении в начале августа. Буду благодарен, если кто-то поиграет и пришлет отзывы или идеи по игре. А если сама идея прогрессии через гены врагов звучит интересно - буду также благодарен за вишлист, комментарии или любые мысли по системе.
Всем привет. Я фронтенд. JS, TS, React, Next.js — стандартный джентльменский набор. Но всегда хотел попробовать геймдев. Руки не доходили. И вот — дошли.
Встал вопрос: какой движок брать?
Unity — мощно, но тяжело и с лицензией пляски. Unreal — это ракетостроение. А Godot я скачал на пробу — и меня затянуло.
Почему Godot для бывшего фронта — зашло:
1. GDScript — как Python, только проще. Забудь про this, bind, бесконечные useCallback. Просто пишешь speed += 5 — и работает.
2. Сцены = компоненты. Делаешь машину → сохраняешь как сцену → кидаешь на карту. Знакомо по React, только визуально и без лишнего бойлерплейта.
3. Сигналы вместо EventEmitter. Всё то же самое, но встроено и не течёт.
4. Бесплатно и открыто. Не надо думать о лицензиях и «когда потребуют деньги». Качай и делай.
5. Физика из коробки. В вебе ты подключаешь библиотеку и молишься. Тут добавил CharacterBody3D — ходит. VehicleBody — машина с подвеской и колёсами. Без танцев с бубном.
Что ломало мозг:
· Нет npm install. Первое время рука тянулась к терминалу.
· Визуальный редактор вместо vim. Но привыкаешь за пару дней.
· Ось Y — высота. Первые объекты улетали в небо, потому что я тыкал y как в вебе.
Что в итоге:
За пару вечеров — работающий персонаж, машина с физикой, посадка/высадка, запуск двигателя. И кайф. Такого кайфа от кодинга у меня давно не было.
Godot — лучший вход в геймдев для веб-разработчика. Просто бери и делай. Никакой магии.
Всю жизнь пилю сайты на React. Лендинги, админки, фриланс. Но с детства была одна мечта — сделать свою игру.
Не ради денег. Ради того самого чувства, когда кто-то запускает твой мир и говорит: «Ого, круто же».
Год думал. Месяц назад начал.
Делаю симулятор российской глубинки. Деревня, старая копейка в гараже, дедова тайна. Без донатных помоек, без «заплати чтобы ускорить». Просто игра, в которую сам бы играл ночами.
Пока есть только прототип: персонаж ходит, машина заводится, можно ездить. Впереди — разборка двигателя по болтам, деревня с живыми соседями и много русского колорита.
Не знаю, взлетит или нет. Но кайфую от процесса как никогда.
Если вам тоже нравится идея — подписывайтесь, буду делиться прогрессом. И критика очень нужна.
Я делаю её один и последние недели провёл не за добавлением нового контента, а за охотой на баги. Иногда казалось, что стоит исправить одну проблему, как где-то появляются ещё три.
Большая часть работы вообще не видна игроку. Зато теперь игра работает стабильнее и ощущается гораздо цельнее.
KEEPALIVE - это короткий психологический хоррор про программиста, который поддерживает соединение с человеком по ту сторону терминала, пока окружающая его система постепенно разваливается.
Доброго времени суток, господа и дамы, я делаю свою игру и мне нужно сделать спрайт листы(spritesheets) для своего персонажа, но рисовать я не умею. Может кто нибудь подскажет, как и с помощью чего можно сделать спрайт листы. Возможно, вы знаете какие-нибудь бесплатную нейросеть или инструмент который хорошо для этого подойдет, или какие-либо другие способы, для которых не нужно умение рисовать, для реализации задуманного мной. И на всякий случай, игру разрабатываю на игровом движке Godot
Всем привет. Насмотревшись видео в стиле "Делаю игру за вечер с Чат 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 миссии в редакторе выглядит довольно монстроузно.
Если сразу не раскидывать все картинки, скрипты и сцены по папкам, то в проекте будет адский бардак
Все скучное лучше делать первым, а то потом будет рабочий огрызок игры "без начала и конца" и полное нежелание что-то с ним делать.
Ну, вот и все. Получилось немного скомкано, но я тут опирался на свою память и самые яркие моменты, которые в ней отложились.