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

Башня

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

Играть

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

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

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

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

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

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

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

Godot + Godot Engine

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

Gamedev Инди Разработка Инди игра Без звука YouTube Все
149 постов сначала свежее
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
6
Boogernator
Boogernator
2 года назад
Свидетели Godot'овы

Бомбаж 3-дня продолжается⁠⁠

Ну спьяну я как-то лепанул пост, что не уважаю тестеров, ну так и есть, что поделать, извинятся не буду, потому что не за что. Я вроде уже и подзабил на это дело.
Но ворвался очередной QA-Lead и вот я не понимаю чего они спорят, я им говорю что ну не покрыть в геймдеве никогда 100% все юнит-тестами, ну вот спорят, загоняют меня в минуса, да и хер с ними. Я просто сейчас все по полочкам разложу.
Shader это же код?) Код, инструкция для видеокарты.

Ну вот его заход

Бомбаж 3-дня продолжается Godot, Godot Engine, Инди, Мат, Длиннопост

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

Бомбаж 3-дня продолжается Godot, Godot Engine, Инди, Мат, Длиннопост

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

Бомбаж 3-дня продолжается Godot, Godot Engine, Инди, Мат, Длиннопост

https://pastebin.com/b9GN8z5T
ну вот код визуального шейдера, который я с https://www.materialmaker.org/ беру, потом дописываю и вывожу нужное в uniform чтобы пользоваться можно было из проекта на ходу.

Я может и инфантильный неудачник, но уважения к тестерам у меня точно не прибавилось, если подобный срач это уровень QA-Lead холдинга компаний)
Что называется, схуяли?))

Оно почти всегда фидбек такого уровня и есть

Бомбаж 3-дня продолжается Godot, Godot Engine, Инди, Мат, Длиннопост

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

Бомбаж 3-дня продолжается Godot, Godot Engine, Инди, Мат, Длиннопост


p.s. Чел в комментах написал, что у меня корона потолок царапает, да ничего не царапает, каждый день появляются посты, как кто-то начинает делать очередной хит, который всем крышу снесет, а потом тишина и никто никогда не пишет, а какая она жизнь после провала.
У нас 2$ Arpu на андроиде, оценка 4.5 ретеншен второго дня 14%, но это провальный проект, надо 4$ хотя бы иначе, ну трафика не нальют, молчу про фичеринг. Я хотя бы последовательно делаю и делаю, это вообще все началось, что я где-то отписался, чел меня спросил, как попасть в геймдев, я ответил, ну и закрутилось, ну собственно по заветам своего же поста, вот устроился на работу, два проекта попутно запустил провальных, ещё один делаю, но тот гарантированно провальный, там просто трешачок по фану) Расскажу все как и обещал, как издателя искали, как на WhiteNights в Сербию наш проект возили, контракт кончится, смогу свободно рассказывать и все будет как обещал)

p.p.s. Для совсем отбитых, включите NSFW я в прошлом посте выложил свою попку, можете представлять, как стегать меня там будете или что там у вас в голове)) Enjoy!!!

Показать полностью 4
[моё] Godot Godot Engine Инди Мат Длиннопост
10
4
Boogernator
Boogernator
2 года назад
Свидетели Godot'овы

Godot4. Немножко анимашек⁠⁠

Всем привет, смотрю там нормально бомбануло людей с прошлого моего поста, хотя кого бомбануло, я бы поспорил, что людей))
Ну да бог им судья, что хочу сказать, вот сами видите дорогие подписчики, вместе с вами изучал годот пару лет, писал про все подряд и про плохое и про хорошее и про странное и про полезное. С игрой мы таки провалились, ну да пусть злорадствуют те кому хочется, мы сейчас собрались "почилить на работке", ну образно выражаясь, я устроился на работу, в должности
Technical VFX Artist
Вообщем делаю всякие анимации на шейдерах, да партиклах, ну буду честен меня взяли не за красивые анимации, а за способность их интегрировать, чую кодить буду больше чем раньше)
Это шейдер.

Это тоже шейдер.

Это вот партиклы

Это вот тоже партиклы

Это вот турбулентность на сладкое

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

Вот мой паблик, там можно спросить что угодно и попросить видос на любую тему интересующую, ютуб в последнем ролике.
https://t.me/boogernator
Была группа, ну может оживет ещё, но нету времени этим заниматься

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

p.s. А адекватные, ну мы с вами не потеряемся) К слову сказать 10% людей плюсануло мой прошлый пост, я не одинок в своих мыслях) Всем не понравишься, да ну и хер с ними)
Все ещё будет)

p.p.s.
Как попасть в геймдев, одна история
Я там писал что для сорокалетних не прокатит, я ошибался, сам по своим заветам действовал, учился, практиковался и получил по заслугам) Мне через полторамесяца 40, а я меняю профессию с кодера на артиста, все можно если хотеть.

Показать полностью 4
[моё] Надоело Godot Godot Engine Видео Без звука YouTube Мат Длиннопост
0
6
Boogernator
Boogernator
2 года назад
Свидетели Godot'овы

Godot. Animated Particles⁠⁠

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

Ну вот коротенький видосик записал. Хотя пост уже писал как-то на эту тему.

Всем спасибо за внимание.

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