● Примерно так выглядит сбор "деталей" для создания модельки в "Dragon Bones".
Из более сотни вариантов выбираются самые удачные части тела и вырезаются для дальнейшего использования в конструкторе.
Нейросеть Stable Diffusion хорошо прорисовывает тени, детали одежды и в половине случаев даже лица получаются более-менее адекватными. Но есть проблема - руки и в особенности пальцы.
Любой кто пытался сгенерировать изображение с руками сталкивается с кучей артефактов. Кривые, непропорциональные и иногда лишние культяпки. В среднем лишь 1 из 100 вариантов более-менее удовлетворяет запросу.
● Как это исправить?
Можно просто добавить в запрос "detailed fingers" и без конца мучать нейросеть в ожидании чуда. Но куда проще взять "ситуацию с руками" в свои руки. Я владею Photoshop на базовом уровне, но даже таких знаний хватает, чтобы исправить косяки робота.
Я отобрал модельки с менее уродливой правой рукой (та где видно пальцы). Именно с ней связанно больше всего косяков. С помощью графического редактора я удалил лишнее и дорисовал недостающее. В основном применялся "Штамп". Цветовая палитра копируется пипеткой, обводка при помощи кисти.
▸ Эволюция руки
Таким образом вместо соотношения 1/100 удачных, мы получаем уже 5-10/100, что делает работу с нейросетью более продуктивной. Да, программа не нарисует все за вас, придется научиться хотя бы редактировать графические элементы. Но это уже в половину проще чем рисовать все с нуля.
Продолжаю изучать нейросети как инструмент в разработке игр. Подписывайся на мой гоблинский блог, впереди еще больше интересного!
Каждый раз когда я выкладываю пост не о программе Endorphin 2.5.2 не буду здесь объяснять, что это (я не заявлял, что буду сюда выкладывать только об этой программе) на меня набрасывается куча "людей" предъявляя ко мне претензии не относящиеся к смыслу поста, а через некоторое время кто нибудь зовёт админов.
Будьте спокойнее и адекватнее когда пишете свои комментарии.
Бесплатно скачать торрент Endorphin 2.5.2 можно по этим ссылкам:
Делаем игру.... Вспомните "Аватар" Д.Камерона, да, вот в том стиле, но, в волшебном мире! Представьте: нетронутая природа, магия, монстры-аборигены – всё слилось в кучу, а мы здесь, выживаем, развиваемся, даже свою деревню создаём! Вот такой волшебный коктейль... готовы узнать больше?
"Наша игра" - это волшебное путешествие в мир круговорота природы и магии. Вы можете окунуться в него в одиночестве или разделить его с друзьями. Главная цель - разгадать секреты этого мира, научиться выживать в симбиозе с окружающей средой, либо же обуздать ее, став на путь разрушения. Этот пост- продолжение предыдущей темы "Разработка многопользовательской игры с открытым миром"
Архивы мира
1. Сеттинг - Экосистема Чудес
Это магическое царство дикой и нетронутой природы, где ранее не ступала нога человека. С первого взгляда - это великолепное место, однако многие представители местной флоры и фауны являются весьма опасными и способными защитить себя. От каждого угла грозит опасность: шипы, яд, взрывы, стихии, укусы, острые клыки, всё вокруг стремится схватить и откусить кусочек неосторожного путника.Во многом, это связано с тем, что в этом мире каждый камень, даже каждая песчинка, несет в себе магию, жаждущую проявиться в самых разнообразных формах.
Здесь бродят Лапчики(Quibz) (некие разумные существа, порою, похожи на прямостоячих животных) многие из которых могут общаться и даже устанавливать дружеские отношения. Практически всех диких животных можно приручить и разводить на своей ферме, извлекая из них ценные ресурсы и даже использовать их в качестве верных спутников.
Но особое внимание заслуживают Трульчики (Wigglynx) (разнообразные духи природы), которые могут быть как надежными помощниками в повседневных делах, так и источником непредсказуемых трудностей, требующих вашего внимания и решения.
2. Сюжет - Летопись Природы
Девочки пробуждаются внутри огромного цветочного бутона. Возможно, эти цветы обладают невероятной силой, но природа этой силы остается загадкой на будущее.
Открыв глаза, им не ясно, где они находятся, какие задачи им предстоит решить и даже кто они такие (при выборе героя игроки должны определить аспект, связанный с сущностью определенного животного, который будет придавать им уникальные способности и бонусы к характеристикам).
Голод и жажда становятся все более ощутимыми. Неожиданно на их пути появляется лапчик Эрик. После краткого знакомства, он делится историей Цветущей Лощины(Blossom Hollow). В прошлом эти магические цветы украшали всю долину, но теперь их последний островок остался в кратере затухшего вулкана. Виною всему стали гигантские сорняки (Wiggly Weeds). Лига скаутов взяла на себя миссию истребления колючих вредителей, а теперь девочкам предстоит присоединиться к ним и помочь сохранить этот уникальный уголок природы.
После выполнения всех вводных заданий игроки получают свой первый наградый значок и отправляются в поселение Шимпик (Shimpick), где установлен алтарь хвастунов и игроки могут разместить свои почетные значки для публичного обозрения. Здесь, огромные лапчики следят за порядком, другие - торгуют ценностями, а заправляет всем крошка Сэм.
И наконец то наступает переломный момент в судьбе каждой девочки. Они сталкиваются с выбором, который определит их дальнейший стиль игры: путь гармонии с природой или путь разрушения.
В каждом биоме присутствует несколько точек интереса, связанных с захватывающими историями. Основной сюжет проведет игрока через все локации, но возможен и свободный подход, позволяющий исследовать мир в режиме песочницы.
В игре три главных антагониста: дикая природа, необузданная магия и сам игрок. Они постоянно находятся в конфликте друг с другом. Кроме того, в игре отсутствуют мальчики, а их местонахождение и судьба пока что остаются загадкой
В следующем теме раскрою тему геймплея, игровых механик и баланса
Endorphin — это пакет программного обеспечения для динамического синтеза движений, разработанный NaturalMotion .Эндорфин можно использовать для создания компьютерных симуляций большого количества независимых персонажей, взаимодействующих друг с другом и с миром в соответствии с краткими сценариями или «поведениями». Он сочетает в себе физику, искусственный интеллект и генетические алгоритмы для создания реалистичной анимации.
Я создал эту анимацию задав только ключевые позы:
Можно добавлять окружение с которым будут взаимодействовать ваши персонажи:
Все анимации и их окружение можно сохранить и использовать в игре или в создании мультиков и фильмов.
Длина записи анимации 5 тысяч кадров.
Заранее сделанные анимации можно соединить с симуляцией например персонаж будет идти по анимации, а его руки будут вести себя по симуляции в той позе в которую вы их поставили в Endorphin.
Основу ходьбы вы можете увидеть слева.
Поза персонажа была этой:
Можно сделать чтобы до какого момента была анимация а потом симуляция когда анимация не активная она серая(такой тип анимации не может взаимодействовать с окружающим миром и персонажами) а когда анимация белая она уже может со всем взаимодействовать это всё легко настраивается (в программе уже есть куча анимаций):
Можно сделать так чтобы симуляция плавно перешла в анимацию с помощь события перехода:
При помощи значка маска на панели инструментов можно добавить персонажам поведение например: сохранение равновесия, прыжок, принимание позы эмбриона, шатание.
Можно толкнуть персонажа используя стрелочку также в панели инструментов:
С помощью значка замочка можно ограничит или полностью остановить части тела персонажа:
А чтобы создавать объекты нужно использовать фигуры на панели иструментов серые фигуры поддаются законам физики в отличие от синих фигур которые статичны:
Можно изменять гравитацию используя пункт который так и называется и находится в правом углу экрана:
И ещё в программу можно загружать или прямо в ней создавать своих персонажей и оъекты.
В этой программе можно поиздеваться над персонажами:
Сделав например из этого:
Это:
Внутри программы есть наглядные туториалы.
Программа Endorphin 2.5.2 использовалась фильмах и видеоиграх, таких как Troy , Poseidon и Tekken 5.
В основе программы лежит технология euphoria которая вам наверняка известна по серии игр GTA и Star Wars - The Force Unleashed.
В Endorphin 2.5.2 можно загружать собственных персонажей например монстров, пришельцев и собственные объекты например танк, самолёт, вертолёт или простой стул стол т.д.
Бесплатно скачать торрент Endorphin 2.5.2 можно по этим ссылкам:
Для тех кто первый раз читает мой гоблинский блог - расскажу кратко что тут происходит. Я сам являюсь зеленым новичком в разработке игр и в своем блоге описываю этапы изучения столь сложного дела. На данный момент - это работа с движком Godot 4.
Чтобы не мучать вас длинными статьями, я разбиваю этот путь на кучу мелких блоков. Один пост - одна механика движка. Все гоблинские заумные слова расшифровываются на человеческий, так что даже пациент из Кащенко поймет о чем речь. Погнали!
● Создание сцены с персонажем:
В прошлой статье мы создали редактор карт с автоматическим заполнением, кто не читал - почитайте, будет полезно. Теперь нам нужно сделать персонажа, которым мы будем бегать по данной карте. Для этого нам нужен узел типа "CharacterBody2D", на основе которого мы и создаем новую сцену. Сделать это можно выбрав вкладку "Другой узел".
Как выглядит узел "CharacterBody2D"
● Визуальное изображение персонажа:
Узел это конечно хорошо, но мы пока ни черта не видим - нам нужен визуальный образ. Добавляем дочерний узел "Sprite2D". В его настройках находим вкладку текстуры и добавляем иконку Godot. В будущем мы заменим спрайт на анимацию, но пока нам хватит такой затычки.
Узел "Sprite" -> Texture -> Быстро загрузить
● Настройка зоны столкновения:
Чтобы наш персонаж не проваливался в текстуры и реагировал на поверхности мы должны настроить зоны столкновения. В прошлом уроке мы работали со слоем Collision в нашем TileMap. Тут же мы добавляем узел "CollisionShape2D", который представляет из себя выделение зоны столкновения в виде простой геометрической фигуры. Вид этой фигуры мы выбираем во вкладке "Shape".
Узел "CollisionShape2D" -> Shape -> Новый RectangleShape2D
● Начальные данные для физики и управления:
Создаем скрипт для нашей сцены и первым делом зададим константы. Константа - это постоянное значение, которое не будет меняться в ходе работы программы.
Чтобы создать константу мы пишем: const название_константы = значение
Переменные же создаются по другому: var название_переменной = значение
Давайте разберемся за что отвечают указанные нами значения:
speed и acceleration - от этих значений будет зависеть скорость передвижения по оси X (влево-вправо)
jump_velocity - это значение влияющее на высоту прыжка. Ось Y в Godot перевернута с ног на голову и отрицательное значение означает вверх.
friction - значение влияющее на скорость остановки при прекращении передвижения.
Так выглядят наши константы в коде
Так же мы добавляем значение гравитации, однако оно выставляется из внутренних настроек проекта.
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
● Общая функция для управления персонажем:
Задав исходные данные мы можем приступать к настройкам функций нашего персонажа. Для этого мы пишем стандартную функцию Godot:
func _physics_process(delta):
Для тех кто не знает - эта функция вызывается перед каждым физическим кадром, который привязан к физическому fps, он по умолчанию равен 60 раз в секунду.
var input_axis = Input.get_axis("ui_left","ui_right")
Get_axis - это функция которая присваивает переменной одно из двух значений при нажатии одной из двух кнопок. Первое значение равно -1 и задается при нажатии клавиши "влево". Второе же равно 1 и задается при нажатии клавиши "вправо". Если на момент кадра не нажата ни одна из этих кнопок, значение равно 0. Это позволяет нам определить нужное направление для изменения координат персонажа.
Влево = -1 | Вправо = 1 | Стоим на месте = 0
● Движение по оси X (влево-вправо), создаем новую функцию:
handle_acceleration (input_axis, delta)
В нее мы добавляем условие, что должна быть нажата одна из клавиш - влево или вправо.
if input_axis !=0:
Если данное условие выполнено, то мы совершаем перемещение в заданном направлении. Для этого используется функция move_toward.
velocity.x - это переменная отвечающая за перемещение по оси X.
В move_toward мы задаем три параметра через запятую. Изначальная точка, точка в которую мы должны прийти, шаг в сторону нужной точки за один кадр.
Каждый кадр мы двигаемся в выбранную сторону, начальная точка меняется и это создает замкнутый круг движения. А чтобы его запустить, мы добавляем нашу функцию под physics_process и в конце пишем move_and_slide().
move_toward ( начальная точка, точка прибытия, расстояние шага за один кадр )
▸ А где тормоза то !?
● Как сделать остановку?
Мы начали двигаться и если не нажмем кнопку в противоположную сторону - улетим за край карты. Чтобы разорвать наш круг постоянного движения мы должны сделать функцию тормоза.
Копируем нашу прошлую функцию и переименовываем ее:
handle_friction (input_axis, delta):
Так же меняем заданное условие, input_axis должен быть равен нулю. Главное помнить, что знак равенства при сравнении выглядит вот так "==".
if input_axis == 0:
В функции move_toward заменяем значения. Первое остается прежним, на втором ставим ноль, а на третьем стираем acceleration и пишем friction. Все это в сумме обеспечит нам быструю остановку.
Функции обратные друг другу
● Движение по оси Y (прыжок, гравитация), создаем новую функцию:
aplay_gravity(delta):
Если мы не на земле, то бишь в воздухе - нас должно тянуть вниз.
if not is_on_floor():
velocity.y += gravity * delta
Ставим именно "+=", так как это сделает плавное падение с нарастающим ускорением. Не забудьте умножить на delta, иначе все произойдет за долю секонды.
● Следующая функция для прыжка:
handle_jump(delta):
Для нас важны два условия - нахождение на земле в момент прыжка и нажатие нужной клавиши.
if is_on_floor() and Input.is_action_just_pressed("ui_accept"):
Если данное условие соблюдено мы приравниваем параметр оси Y к значению высоты прыжка.
velocity.y = jump_velocity
Добавляем эти функции под physics_process, а после переходим на сцену "world". Туда из общего списка ресурсов перетаскиваем сцену "player".
.tscn - это формат сцены в Godot
Как выглядит наш блок с функциями
● Что у нас получилось в итоге?
✓ Если вы нажимаем клавишу влево или вправо - персонаж двигается в выбранном направлении.
✓ Если ни одна из клавиш направления не нажата - мы останавливаемся.
✓ Если мы находимся в воздухе - нас тянет вниз с каждой секундой все сильнее.
✓ Если находясь на земле, мы жмем прыжок - нас подкинет вверх.
▸ Оно живое!
Вот так при помощи четырех простых функций мы создали основу физики и управление персонажем. Надеюсь разобрал каждый шаг максимально подробно и понятно.
✓ Зеленые новички - крепитесь и подписывайтесь, скоро новая статья. На очереди две темы - "анимация персонажа" или "двойные прыжки и прыжки от стены".
✓ Опытные шаманы - запасайтесь успокоительным, ибо дальше будет еще куча попыток освоить gamedev.
✓ Ну и все кто имеет свое мнение, поддержку или усмешку - пишите комменты!
Анимации создаваемые в этой программе не требуют моушен капчер, но при этом остаются на том же уровне, а чаще всего и лучше ведь никто не будет для всего лишь одного момента в игре прыгать с огромной высоты без парашюта. Или вам захотелось показать космос пожалуйста:
Всё анимируется благодаря ключевым позам:
Endorphin — это программный пакет для динамического синтеза движений, разработанный NaturalMotion . Эндорфин можно использовать для создания компьютерных симуляций большого количества независимых персонажей, взаимодействующих друг с другом и с миром в соответствии с краткими сценариями или «поведениями». Он сочетает в себе физику, искусственный интеллект и генетические алгоритмы для создания реалистичной анимации. В отличие от Euphoria , также разработанной NaturalMotion, Endorphin — это не движок, а инструмент 3D-анимации для Microsoft Windows.
В Endorphin 2.5.2 можно загружать собственных персонажей например монстров, пришельцев и собственные объекты например танк, самолёт, вертолёт и т.д.
Заранее сделанные анимации можно соединить с симуляцией например персонаж будет идти по анимации, а его руки будут вести себя по симуляции в той позе в которую вы их поставили в Endorphin.
Все анимации и их окружение можно сохранить и использовать в игре или в сознании мультиков и фильмов.
Длина записи анимации 5 тысяч кадров.
Бесплатно скачать Endorphin 2.5.2 можно по этим ссылкам:
Для тех кто первый раз читает мой гоблинский блог - расскажу кратко что тут происходит. Я сам являюсь зеленым новичком в разработке игр и в своем блоге описываю этапы изучения столь сложного дела. На данный момент - это работа с движком Godot 4.
Чтобы не мучать вас длинными статьями, я разбиваю этот путь на кучу мелких блоков. Один пост - одна механика движка. Все гоблинские заумные слова расшифровываются на человеческий, так что даже пациент из Кащенко поймет о чем речь. Погнали!
● Узлы, сцены и прочие слова не связанные с BDSM - это интерфейс Godot 4:
▸Наглядно показываю что и где
Основа движка Godot - это узлы и их древо. Блоки могут быть самого разного назначения, от визуального изображения, до настроек звука. Сцена - это отдельная группа узлов. Она нужна чтобы структурировать элементы и не путаться. Например, можно создать отдельную сцену с узлами нашего персонажа, а после добавлять эту сцену как узел в другую.
Создадим сцену нашей карты и назовем ее World. Для этого выбираем "2D сцена" как на скрине выше. Теперь можем добавить к сцене дочерний узел, нажав на плюсик. В поиске ищем TileMap - это узел для работы с тайл-сетами будущей карты.
● Что такое TileMap:
TileMap - это крайне полезный инструмент, который позволяет создать автоматическое заполнение карты. В разделе TileSet выбираем новый, внизу выбираем "Набор тайлов" и в открывшемся окне загружаем заранее подготовленный файл.
▸Шаблон для создания тайл-сета
Тайл-сет - это набор элементов из которых будет состоять будущая карта. Его можно нарисовать или поступить как истинный гоблин и взять ассеты в интернете. Чтобы не перетаскивать каждый кусок этого набора в нашу сцену, мы настроим автоматическое заполнение.
● Настройка рисования карты в TileMap:
В правом блоке узла TileMap вы найдете вкладку "Terrain Sets" (набор местности). В ней мы нажимаем "Добавить элемент" и в открывшемся блоке снова жмем "Добавить элемент". Теперь в центральном блоке выбираем вкладку "Рисовать" -> "Свойства рисования" - > Terrains.
▸Настройка местности
В обоих выделенных вкладках выбираем созданный нами элемент Terrain. С его помощью мы настраиваем области тайл-сета. Именно по ним Godot определяет какой кусок ставить следующим.
▸Настроенный TileMap
● Зоны столкновения для TileMap:
Помимо визуального изображения, нам нужно добавить для карты физический слой. Выбираем Physics Layer и добавляем новый элемент. Далее в разделе рисования выбираем "Физика" и наш слой. Так как наша карта состоит из блоков - выделаем каждый квадратом.
Теперь другие объекты будут видеть нашу карту и воспринимать ее как физическое препятствие.
● Как работает настроенный TileMap:
▸Рисуем что хотим
Теперь мы можем буквально рисовать карту, создавая любые формы. Алгоритм определяет какую часть нашего тайл-сета ставить в зависимости от соседних элементов. Просто води курсором с зажатой ЛКМ, а Godot сделает все остальное.
▸А вот это уже что-то похожее на элемент игры
Создание основы для уровня теперь занимает всего пару минут. Но помимо карты нам нужен наш персонаж, опасности и условия для завершения уровня. Этим мы займемся в следующем уроке.
Надеюсь гоблин смог пояснить за механику тайлов и вы смогли дочитать эту графоманию до конца.
✓ Зеленые новички - крепитесь и подписывайтесь, скоро новая статья.
✓ Опытные шаманы - запасайтесь успокоительным, ибо дальше будет еще куча попыток освоить gamedev.
✓ Ну и все кто имеет свое мнение, поддержку или усмешку - пишите комменты!