Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Управляйте маятником, чтобы построить самую высокую (и устойчивую) башню из падающих сверху постов. Следите за временем на каждый бросок по полоске справа: если она закончится, пост упадет мимо башни.

Башня

Аркады, Строительство, На ловкость

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Gamedev + Godot Engine

С этим тегом используют

Инди Разработка Инди игра Игры Unity Компьютерные игры YouTube Godot Без звука Все
206 постов сначала свежее
14
nklbdev
1 год назад
Лига Разработчиков Видеоигр
Серия Importality: импорт графики и анимации в Godot 4.x

IMPORTALITY - импорт графики и анимации в Godot 4.x⁠⁠

Ох, ребята, это были трудные полгода разработки!

Importality - это аддон для Godot 4.x, содержащий набор плагинов для импорта растровой графики и анимаций из популярных форматов. Если вы замучились после каждой правки графики экспортировать её в промежуточные форматы, а потом заново настраивать импорт в Godot, то это аддон сделает это за вас!

IMPORTALITY - импорт графики и анимации в Godot 4.x Полезное, Разработка, Godot Engine, Godot, Анимация, Developer tools, Game Makers Toolkit, Gamedev, Krita, Aseprite, Piskel, GIMP, Видео, YouTube, Инди, Indiedev, Разработчики игр

Он может извлекать данные из файлов:

  • Aseprite/LibreSprite (с помощью интеграции с приложением)

  • Krita (с помощью интеграции с приложением)

  • Pencil2D (с помощью интеграции с приложением)

  • Piskel (с помощью собственного парсера)

  • Pixelorama (с помощью собственного парсера)

И импортировать их как:

  • Обычные изображения

  • Sprite Sheet (ресурс JSON без хранимого текста, но со всеми данными о спрайтах и анимациях в свойстве "data", а так же изображение-атлас рядом с ним)

  • Ресурс SpriteFrames

  • AnimatedSprite2D/3D

  • Sprite2D/3D и TextureRect, анимированные с помощью дочернего узла AnimationPlayer

А ещё он может импортировать любые другие графические форматы как обычные изображения с помощью внешних утилит командной строки. Теперь вы сможете легко управляться с файлами PaintNET (*.pdn), GIMP (*.xcf) и многими другими!

Аддон доступен на:

  • Godot Asset Library

  • GitHub

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

Показать полностью 1
[моё] Полезное Разработка Godot Engine Godot Анимация Developer tools Game Makers Toolkit Gamedev Krita Aseprite Piskel GIMP Видео YouTube Инди Indiedev Разработчики игр
0
4
Boogernator
Boogernator
1 год назад
Свидетели Godot'овы

Godot. Как живется на ЗП⁠⁠

Привет подписчикам. Было дело исполнял, просил отписаться, пара человек отписалась, но внезапно ещё подписалось. Ну немножко расскажу.

Для случайных читателей, краткий экскурс. 12 лет опыта программистом в игровой индустрии, сейчас примерно полтора-месяца работаю Junior Technical VFX Artist, сначала я прям на воодушевлении не считал себя Junior, сейчас осознаю что скорее даже Trainee. Не пройду скорее всего испытательный, но профессия мне прям нравится теперь) Буду в ней развиваться)

Что хочу сказать, Godot для 3D ну просто забудьте, это помоечная сырая помойка, все сложно, криво неудобно, пздц полный. Люблю Godot, для 2D, для прототипов идеальное, 3D нет, реферы-туторы использую для UE и Unity, ну небо и земля. VFXGraph, ShaderGraph офигенные, на Godot, ну просто базовый GradientMap, во всех редакторах есть базовая вещь, на Godot пришлось писать свой шейдер под него, а у меня всего опыта-то кот наплакал в этой сфере и просто понимаю, насколько мой шейдер выдает гавенный результат в отличии от базового инструментария в SubstanceDesigner например. Прям боль каждый день.
Картиночкой хоть разбавлю, ну вот практикуюсь рисую такие текстурки, не кистями конечно, нодами, но процесс идет, через годик прям удивитесь, гарантирую это. Это одна из текстурок, которая для эффекта EarthCrack нужна.

Godot. Как живется на ЗП Gamedev, Инди, Godot, Godot Engine, Мат, Видео, Без звука, Длиннопост

Никогда бы подобное в фотошопе не нарисовал, а тут мне объяснили, подсказали, есть короче софт где и программист может рисовать нормальные прикольные штуки)

Godot. Как живется на ЗП Gamedev, Инди, Godot, Godot Engine, Мат, Видео, Без звука, Длиннопост

Вот например, текстурка мне для партиклов, анимашку с ней не покажу, нельзя)
А вот для первой сырую наработку пожалуй выложу

Согласен профи VFXер засмеет, но я нормально к критике отношусь, мне главное что базу понимать начал, сам могу и текстурку сделать и маску к ней для шейдера, а динамику потом подтюню, ну и с партиклами, да с объектом оно гармоничнее смотрится.

Что ещё сказать, ебало мне набили крепко с неделю назад, нос сломали, все лицо синеё, так что если раздражаю кого, не переживайте мне все прилетело стократ, как говорится))

В телеге у меня было голосование, будет видосик как сделать простенький фаербол в 2D и без шейдеров, прям немудренный будет чисто на партиклах, суперкрасоты не ждите, суть постараюсь донести, но немножко откладывается. Губа верхняя не работает пока, говорить трудно.
Посттравматическая нейропатия второй ветви тройничного нерва, а мне ещё казалось что я очень длинные названия для классов пишу иногда, вот как надо писать)))

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

Так что закончу на позитивной ноте, заниматься надо, если развиваться, учиться, практиковаться, то все получится. Верить надо в себя и возраст не причина для отмазок, мне через 3 дня 40 лет исполнится, ну вот решил сменить профиль, возможно ещё пожалею, но в любом случае буду в этом направлении двигаться, единственное что возможно с Godot на UE переключусь, ну это если для 3D.
А для инди 2D Godot топчик!!!!

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

p.s. По релизам на Яндексе, организационные моменты возникли, но Борщ как копейки приносил ожидаемо, так и приносит рублей 30 что-ли)) хотя фичеринг прошли CTR иконки адекватный, ну проверили попробовали, любопытный опыт)
Вот этот шедевр игровой индустрии, ну показательный вариант, что если в голове народился треш и кажется, что он интересен будет людям, скорее всего это не так))
https://yandex.ru/games/app/240717


Зато мы теперь сработались хоть, полноценная команда из 5 программистов, во всем есть плюсы, жаль что из-за работы теперь вообще нет времени на инди свое, но все ещё будет)
Теперь зато я уже точно решил, что следующая моя игра это будет хардкорная тактика, по выходным иногда дописываю базу, боевка аля BattleBrothers будет, логика у меня почти вся готова, движение по гексам осталось допилить, никак решиться не могу)

Пардон, что отнял время, захотелось что-то пографоманить о бытие) Всем удачи!

Показать полностью 2 1
[моё] Gamedev Инди Godot Godot Engine Мат Видео Без звука Длиннопост
5
5
GoblinCave
GoblinCave
1 год назад

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера!⁠⁠

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Приветствую, человеки и прочие расы фентезийного болота. В первой статье мы познакомились с движком Godot, сделали простенькую карту и настроили управление персонажем.

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

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Пока что у нас есть вот это нечто...

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

Этот гад способен менять свое направление прямо в воздухе и к примеру развернутся на пол пути к пропасти. В каких то платформерах это нормально и является частью игровой механики, но у нас игрок будет СТРАДАТЬ!

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

"Игрок может двигаться по оси X (влево-вправо) только находясь на земле"

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

func handle_acceleration (input_axis, delta):

if is_on_floor() and input_axis !=0 :

velocity.x = move_toward(velocity.x, SPEED * input_axis, ACCELERATION * delta)

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

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

Казалось бы, на этом можно закончить, но есть нюанс.

Игроку нужно сначала взять хотя бы минимальный разбег в нужную сторону, чтобы избежать прыжка на одном месте. Грубо говоря, он должен сперва нажать клавишу "ВПРАВО", а уже потом "ПРОБЕЛ" иначе не сработает. Это неудобно, особенно когда нам нужно запрыгнуть на выступ находясь у стены. Дело поправимое, залазим обратно в эту же функцию и дополняем ее.

func handle_acceleration (input_axis, delta):

if is_on_floor() and input_axis !=0 :

velocity.x = move_toward(velocity.x, SPEED * input_axis, ACCELERATION * delta)

elif not is_on_floor() and input_axis != 0 and velocity.x == 0:

velocity.x = move_toward(velocity.x, SPEED * input_axis, ACCELERATION * 10 * delta)

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

Передвижение влево-вправо доступно только при нахождении на земле. Если игрок нажал сначала "ПРОБЕЛ", то произойдет прыжок на месте. Сдвинуться по оси X (влево-вправо) он уже не сможет, так как находится не на земле.

Нам нужно определить, находится ли персонаж в состоянии прыжка - это not_is_on_floor()

Раз происходит прыжок на месте, то ось X остается неизменной - это velocity.x == 0

Наша попытка передвижения вызывается нажатием клавиши направления - это input_axis !=0

Если все три условия соблюдены, то мы позволяем совершить передвижение по оси X, однако произойдет оно только один раз и только в одном из выбранных направлений. Все потому, что в следующем кадре значение velocity.x уже не будет равно нулю и данное условие перестает работать. Чтобы этот одноразовый рывок имел смысл, нам нужно увеличить значение ACCELERATION. Можем сделать для этого отдельную переменную, но я обошелся простым умножением на 10.

Что мы получили по итогу?

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

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

Самое популярное препятствие в платформерах - это пики точеные!

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Рисуем пики 16 х 16 в любом удобном графическом редакторе...

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Путь: Рендеринг - Текстуры - Default Texture Filter;

Нарисовав препятствие - загружаем его в ресурсы проекта. Создаем новую сцену "Spikes" и добавляем дочерний узел "Sprite2D". Как подцеплять к нему текстуру мы проходили в первой статье - советую почитать если еще незнаком. Чтобы наша картинка не замылилась ввиду ее пиксельного стиля - поменяем текстурный фильтр на Nearest.

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Узел "Area2D" и раздел "Collision"...

Area2D - куда тебя ведать?

Создаем еще одну сцену (не узел) и за ее основу берем "Area2D" (вот это уже узел). Данная штука нужна чтобы обнаруживать пересечения объектов. У многих объектов есть такой раздел как "Collision", а в нем слои и маски.

Для того, чтобы было проще понять - объясню на примере:

Слой - это область, где данный объект МОГУТ увидеть другие объекты и взаимодействовать с ним.

Маска - это область, где данный объект МОЖЕТ увидеть другие объекты и взаимодействовать с ними.

Например, мы поставим объект "StaticBody2D" из которого состоит наша карта на первый слой. "CharterBody2D" который является нашим игроком мы поместим на второй слой.

Если у "CharterBody2D" в разделе маска мы укажем второй слой вместо первого, на котором находится "StaticBody2D" - наш персонаж его просто не увидит. А это значит, что игрок просто провалится в пол.

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Объект World находится на первом слое, объект Player на втором. Маска Player видит объекты лишь на втором слое.

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Из-за этого зоны столкновения у объектов Player и World не взаимодействуют и мы проваливаемся вниз. 

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Если выставить у Player маску первого слоя - он начнет его видеть и взаимодействовать с ним. По этой причине мы вновь твердо стоим на поверхности.

Теперь, когда мы знаем для чего нужен данный узел - пора сделать точеные пики действительно опасными. Заходим в сцену и выбрав узел Area2D переименовываем в "HazardArea". В разделе "Collision" выставляем третий слой, а вот маску оставляем пустой. Наши пики никого не должны искать - они сами выступают объектом поиска.

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Теперь переходим в сцену Spikes и нажимаем на кнопку добавления дочерней сцены. Она находится рядом с кнопкой добавления узла. Выбираем нашу сцену "HazardArea2D". Добавляем для "HazardArea2D" два дочерних узла "CollisionPolygon", определяя область столкновения.

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Можно создать область для одной пики и просто скопировать ее...

Теперь мы переходим в сцену "Player" и создаем дочерний узел "Area2D", называем его "HazardDetecter". Уже к этой области привязываем дочерний"CollisionShape". В узле "HazardDetecter" выбираем раздел "Collision" и оставляем графу слоя пустой. Но в разделе маски и выбираем третий слой - именно в нем мы будем искать область опасности "HazardArea".

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост
Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Графа слоя - пустая, графа маски - выставлена на третий слой...

Осталось настроить сигналы... вы еще не знакомы с ними?

У многих узлов есть доступные сигналы и узел Area2D - не исключение. Посмотреть доступные сигналы можно в колонке справа, перейдя в раздел "Узел". Нас в первую очередь интересует сигнал "area_entered", что в переводе на человеческий означает "Обнаружена область".

В графе маска указан третий слой и именно на нем находится "HazardArea". Когда наш узел "HazardDetecter" обнаружит другой узел типа Area2D - сигнал сработает. Но что нам делать с полученным сигналом?

Сделаем простенькую систему смерти и возрождения!

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Свет, камера - мотор!

Для начала добавим камеру, которая будет следовать за нашим персонажем. В разделе "PositionSmoothing" выставим "Speed" на 5 пикселей в секунду. Эта небольшая задержка сделает движение камеры более плавным.

Теперь нам потребуется зафиксировать точку для возрождения. Ей будет выступать стартовая позиция с которой мы начинаем игру. Создаем переменную стартовой позиции и при запуске игры закладываем в нее координаты начального положения игрока.

@onready var starting_position = global_position

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Теперь переходим в узел "HazardDetecter" к разделу сигналов и ищем "entered_area". Нажимаем правой кнопкой мыши, тыкаем присоединить и выбираем наш объект "Player".

Это создаст в скрипте новую функцию, под которой мы пишем всего одну строку.

global_position = starting_position

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Присоединение сигнала к узлу...

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

"Если будет обнаружена Area2D - позиция игрока вернется на стартовую"

Остается только расставить наши точеные пики по карте и мы можем смело отлетать на стартовую точку при столкновении с ними!

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Вот они слева направо - пик, кол, штык, клык и острие...

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Разбежавшись прыгну со скалы...

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Вот я был и вот я у респауна...

Остался чисто косметический момент, а именно - анимация персонажа. 2D сеты анимации вы можете легко откапать на просторах интернета, я же расскажу вам как их правильно настроить.

Заменяем узел спрайта на "AnimatedSprite2D" и в разделе "Sprite Frames" создаем новый. Перед вами откроется окно кадровой анимации, куда вы и будете загружать кадры.

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост
Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Стой, прыгай и беги...

Создаем три анимации - "idle", "jump" и "run". Первые две состоят из одиночных спрайтов, так как это статичные позиции. А вот для бега я решил добавить три спрайта. В окошке с FPS мы устанавливаем частоту кадров при анимации, в нашем случае поставили 12.

Теперь переносим зажав ctrl узел "AnimatedSprite2D" в наш код в виде переменной и создаем функцию update_animation.

func update_animation (input_axis, delta):
if velocity.x == 0:
animated_sprite_2d.play("idle")
if input_axis !=0:
animated_sprite_2d.flip_h = (input_axis < 0)
animated_sprite_2d.play("run")
if not is_on_floor():
animated_sprite_2d.play("jump")

Снова переведу для вас на человечий язык:

Если мы стоим на месте - запустить анимацию стоячего положения;

Если нажата одна из кнопок движения, то мы проверяем направление. Если нажата кнопка "влево" - то зеркально разворачиваем объект анимации. Проигрываем анимацию бега.

Если мы не на земле - запускаем анимацию прыжка.

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Добавьте готовую функцию в список под phisics_process

Молодой гоблин щупает движок Godot за всякое... Продолжаем изучение Godot на примере 2D платформера! Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Godot, Godot Engine, Разработчики, Разработчики игр, Indiedev, Платформер, Длиннопост

Теперь наш персонаж действительно ожил...

Наконец-то мы получили подобие игры!

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

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

Продолжим доводить данный проект до ума в следующей статье! А пока что подписывайся на мой блог и оставь пару комментариев. Тебе не сложно - а мне поможет!

Показать полностью 24
[моё] Gamedev Разработка Инди игра Программирование Программист Инди Godot Godot Engine Разработчики Разработчики игр Indiedev Платформер Длиннопост
0
5
Boogernator
Boogernator
1 год назад
Свидетели Godot'овы

Godot4. Пятничный VisualShader и немножко треша)⁠⁠

Всем добрый вечер и немножко больше, очень благодушное настроение наконец-то))
Жена с сыном вернулись с отпуска, как-то попустило сразу)
Записал видосик как сделать dissolve шейдер, ну как и обещал))

Отлично все, гляньте скока заработали за три дня после релиза))

Godot4. Пятничный VisualShader и немножко треша) Godot, Godot Engine, Инди, Gamedev, Видео, YouTube, Длиннопост

Жизнь теплится, 11 копеек ARPU, это больше чем Теоден даже ожидал, на яндекс играх можно заработать))
Ладно я в телеге своей уже размотал почему это нормально, тут мне пофигу, топовая аналитика будет уже только там))
По инерции пытаюсь что-то на пикабу писать, но сам не понимаю зачем, хейт только ловить) Все кому нравится мой подход уже давно и так со мной или лично познакомились или просто переподписались)

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

Я просто к тому, что кто был ради Godot подписан, ну лучше отписывайтесь, ещё немножко я попишу полезного, а потом буду постить всякую херню и эротические фотки своего восхитительного тела, мне через месяц 5-ый десяток пойдет, я больше не хочу размениваться на ерунду всякую))

Показать полностью 1
[моё] Godot Godot Engine Инди Gamedev Видео YouTube Длиннопост
0
36
GoblinCave
GoblinCave
1 год назад
Лига Разработчиков Видеоигр

Первые попытки освоить движок Godot - делаем простой платформер⁠⁠

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Уже неделю моя гоблинская тушка не подавала признаков жизни на Пикабу. Все кто думали что я сдох - не дождетесь, я мудитировал и искал знания в молитвах Горку и Морку. В переводе на человеческий - смотрел и читал обучающие материалы по Godot.

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

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

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Тут наша сцена и связанные с ней узлы...

Создаем карту

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

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Все мы иногда статичное тело...

Правой кнопкой мыши жмякаем на нашу 2D сцену "World" и выбираем "Добавить дочерний узел". В списке ищем "StaticBody2d" и теперь у нас есть база. Добавляем два дочерних узла уже в статичный объект - "Polygon2D" и "CollisionPolygon2D".

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

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Рисуем будущую карту при помощи CollisionPolygon2D...

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

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Код приравнивающий форму фигуры к форме области столкновения...

Теперь нам нужно сделать так, чтобы визуальная фигура повторяла форму области столкновения. Нажимаем на нашу сцену и добавляем к ней скрипт. GD-script во многом схож с языком Python и более-менее прост в понимании. Сначала добавим наши узлы в виде переменных, для этого зажимаем "ctrl" и перетаскиваем в код после блока extends.

Прописываем функцию ready, она будет воспроизводится сразу во время запуска сцены. А дальше просто приравниваем форму фигуры к форме области столкновения (polygon_2d.polygon = collision_polygon_2d.polygon).

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Получаем дешевую и сердитую карту - все в гоблинском стиле!

Карта готова, но что делать теперь? Пора добавить нашего персонажа-марионетку.

Создаем новую сцену и для ее основы берем узел CharacterBody2D. Для будущей простоты восприятия я переименовал его в Player. Чтобы увидеть нашу тушку - добавим к ней дочерний узел "Sprite2D", а чтобы можно было еще и потрогать "CollisionShape2D".

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Добавляем иконку

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Выделяем область столкновения...

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

Тело готово, пора научить его шевелиться и реагировать на физику. Для этого мы создаем для нашего Player свой скрипт.

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Наши переменные...

Задаем переменные через const (constants - постоянное значение). Значения констант не могут быть изменены в ходе самой программы, на то они и постоянные. Для чего нужны эти значения расскажу ниже.

const SPEED = 150.0

const JUMP_VELOCITY = -300.0

const FRICTION = 1000.0

const ACCELERATION = 600.0

На этот раз мы берем не функцию ready, а другую - physics_process. В отличии от простого process, здесь время между выполнением функции будет одинаковым. Это обеспечит нам стабильность при передвижении объектов.

Начнем с настройки гравитации!

Дело в том, что система координат X-Y в Godot имеет свои приколы. Ось X идет от отрицательной к положительной слева направо, однако ось Y идет от отрицательной к положительной сверху вниз. То есть ось Y буквально перевернута с ног на голову. Если непонятно - объясню проще:

Хотим передвинуть вправо - прибавляем к оси X;

Хотим передвинуть влево - вычитаем из оси X;

Хотим передвинуть вниз - прибавляем к оси Y;

Хотим передвинуть вверх - вычитаем из оси Y;

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Гравитация... беспощадная ты с*ка!

Как же нам заставить персонажа падать под давлением гравитации? Для начала добавим переменную GRAVITY равную 1000. Затем создаем свою пользовательскую функцию и называем ее aplay_gravity.

Мы должны падать когда находимся в воздухе, то есть не на полу. Буквально говорим программе "Если объект не на полу сделай следующее: измени положение по оси Y в положительную сторону на заданное нами расстояние".

if not is_on_floor():

velocity.y += GRAVITY * delta

Что такое delta? Это время между кадрами, благодаря чему перемещение будет стабильным вне зависимости от FPS.

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

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

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Отлично, нас прижало как после "Балтики 9"!

Теперь настраиваем прыжки!

Для этого создаем еще одну пользовательскую функцию handle_jump. Мы говорим ей: "Если мы нажимаем кнопку прыжка и находимся на полу - измени положение по оси Y в отрицательную сторону". Напомню, что константа прыжка имеет отрицательное значение.

if Input.is_action_just_pressed("ui_accept") and is_on_floor():

velocity.y += JUMP_VELOCITY

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

К гравитации добавляются прыжки...

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Прыжок веры...

С прыжками и гравитацией мы освоились, теперь научимся ходить-бродить!

Надеюсь вы еще не забыли, что направление у нас зависит от отрицательного или положительного значения? Есть такая штука в Input как get_axis, где мы задаем две клавиши. Нажатие первой клавиши прировняет переменную к значению -1, нажатие второй клавиши наоборот к 1. Если ни одна из клавиш не нажата, переменная принимает значение 0.

Создаем переменную input_axis внутри physics_process, на этот раз через var, ведь она будет менять свои значения в процессе. А далее задаем машине установку "Если нажата одна из двух клавиш, то мы меняем значение по оси X в зависимости от выбранного направления".

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

Начальная точка - velocity.x

Конечная точка - наша скорость SPEED помноженная на направление (-1 или 1)

Промежутки - наше ускорение ACCELERATION помноженное на время между кадрами delta

if input_axis !=0 :
velocity.x = move_toward(velocity.x, SPEED * input_axis, ACCELERATION * delta)

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Вот наш код...

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

А вот признаки жизни... беги Форест - БЕГИ!

Двигаться мы можем, а вот с остановкой проблема. Что не дает нам вечно кататься по земле? СИЛА ТРЕНИЯ!

Для того чтобы создать силу трения мы делаем похожую функцию. Только теперь конечной точкой у нас выступает 0, а вместо ACCELERATION берем параметр FRICTION. Включается все когда мы не нажимаем кнопки движения, то есть input_axis равен нулю.

if input_axis == 0 :

velocity.x = move_toward(velocity.x, 0, FRICTION * delta)

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост
Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Бегаю, никого не трогаю... к земле притягиваюсь во время прыжка...

Вишенкой на торте внутри физической функции является move_and_slide которая и отвечает за все эти процессы. Без нее указанные выше шаманские обряды просто не запустятся.

Получился максимально простой гоблинский платформер. Конечно, это пока сложно назвать игрой... но оно работает во славу Горка и Морка! В данном посте я рассказал лишь основы изученного, благо материал заготовлен почти на месяц вперед.

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

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

P.S.

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

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост
Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Традиционный тематический гоблин в конце!

Показать полностью 18
[моё] Gamedev Разработка Инди игра Программирование Программист Инди Python Godot Godot Engine Новичок Код Разработчики игр Игровой движок Платформер IT Unity Unreal Engine Длиннопост
9
5
Boogernator
Boogernator
1 год назад
Свидетели Godot'овы

Godot. Есть же ещё один релиз. Топовый движок⁠⁠

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

С первого захода прошли модерацию, мы теперь не просто шарашка мы теперь студия настоящая) Это прошло наконец-то под именем студии нашей. G-Witness, понятно что ноги из этого сообщества растут, но мы свидетели любого Джи, не только Godot'ом единым существует человек.

Даже не буду стесняться, вот этой игры я ссылку выложу)
https://yandex.ru/games/app/240717?lang=ru

Godot. Есть же ещё один релиз. Топовый движок Gamedev, Абсурд, Godot, Godot Engine, Инди игра, Инди, Мат, Длиннопост

Это ЗомбиБорщ, кому не нравится, да и пох я с супами не общаюсь, а кто в теме, тот знает что Борщ не суп!!!!

Godot. Есть же ещё один релиз. Топовый движок Gamedev, Абсурд, Godot, Godot Engine, Инди игра, Инди, Мат, Длиннопост

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

А вообще я хочу о другом сказать, вся эта канитель с сообществом началась два года назад, вот с этого поста можно сказать
Как попасть в геймдев, одна история

Ну и я многое осознал, во-первых все что я написал там, оно все так и есть, я сам по этой статье и вернулся обратно в большой геймдев.
Да не все получалось, да не самый популярный движок.
НО!!! Три релиза за полгода, один под заказ пинболл сделали куда-то в ОАЕ там фиксировано заплатили, трафик идет по первому релизу, ну платежи, как шли так и идут, органики может и смешно, но 2$ ARPU имеем, сейчас треша наделаем с него трафик перельем туда где настоящее f2p.
Это первое важное, на движке можно делать игры и под мобилки и под веб и под пк, он годится подо все.
А второе, ну вот я же нашел работу и я сейчас Technical VFX Artist, очень странный микс конечно, я кодю больше чем анимашки делаю, но я вообще ощущаю себя на своем месте, не буду писать ЗП, а то опять тестеры взбунтуются, если дрочишь и дрочишь одно и тоже, то в какой-то момент, твои навыки смогут закрыть потребности бизнеса и ты понадобишься, ну если я нашел вакансию на Godot, то и вы сможете.

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

А кому любопытно, в выходные скорее всего запишу видос вводный по VisualShader простенький dissolve шейдер для 3D напишу)
Всем подписчикам удачи в разработке!!!!

Показать полностью 2
[моё] Gamedev Абсурд Godot Godot Engine Инди игра Инди Мат Длиннопост
1
7
Boogernator
Boogernator
2 года назад
Свидетели Godot'овы

Godot. Использование Tool. 1 вариант⁠⁠

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

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

Всем спасибо, удачи в разработке.

[моё] Godot Godot Engine Gamedev Инди Видео YouTube
0
Партнёрский материал Реклама
specials
specials

А сколько у вас?⁠⁠

Вы когда-нибудь считали, сколько экономите с вашим кешбэком и скидками? Предлагаем провести небольшие вычисления (потому что считать выгоду всегда приятно).

Реклама Реклама. ПАО «Банк ВТБ», ИНН: 7702070139

Калькулятор Выгода
232
wolchy
wolchy
2 года назад

Моя работа делать так, чтобы вам было не скучно отдыхать от вашей работы!⁠⁠

Моя работа делать так, чтобы вам было не скучно отдыхать от вашей работы! Волна постов, Работа, После работы, Gamedev, Игры, IT, Godot Engine, Длиннопост, Разработка, Программирование, Иллюстратор, Иллюстрации, Художник-самоучка

Я делаю еееееегры :)))

Ну, и всякие картинки пилю тоже время от времени, но это вы уже в курсе :)

А это моя старая и чуть более брутальная работа ;)

Моя работа делать так, чтобы вам было не скучно отдыхать от вашей работы! Волна постов, Работа, После работы, Gamedev, Игры, IT, Godot Engine, Длиннопост, Разработка, Программирование, Иллюстратор, Иллюстрации, Художник-самоучка
Моя работа делать так, чтобы вам было не скучно отдыхать от вашей работы! Волна постов, Работа, После работы, Gamedev, Игры, IT, Godot Engine, Длиннопост, Разработка, Программирование, Иллюстратор, Иллюстрации, Художник-самоучка
Показать полностью 3
[моё] Волна постов Работа После работы Gamedev Игры IT Godot Engine Длиннопост Разработка Программирование Иллюстратор Иллюстрации Художник-самоучка
33
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии