Создание 2D платформера в Godot за 30 минут / Изучение движка Godot
Начиная с первого проекта, Godot - показался очень легким и удобным игровым движком. В ходе видео мы с вами разработаем небольшую 2Д игру на Godot и вместе с ней рассмотрим множество основных концепций данного игрового движка.
🍿 Видео с информацией про Godot: • Godot - почему про нег...
🕹 Программа обучения Unity: bit.ly/2AZZBdp
✏️ Статья на сайте itProger: bit.ly/2C7lXdM
Тайм коды:
00:00 - Начало
00:53 - Скачивание и установка
01:47 - Интерфейс
03:31 - Создание узлов (Nodes)
04:23 - Создание главного игрока
13:39 - Передвижение игрока
25:00 - Изменение изображения игрока
27:53 - Создание платформ и прыжка
33:53 - Расстановка платформ в игре
✔ Сообщество программистов: itproger.com/
✔ -------------
Вступай в группу Вк - vk.com/prog_life 🚀
Группа FaceBook - goo.gl/XW0aaP
Инстаграм itProger: / itproger_official
Instagram: / gosha_dudar
Telegram: t.me/itProger_official
Twitter - / goshadudar
- Уроки от #GoshaDudar 👨🏼💻
- Все уроки по хештегу #goshaLessons
"Нужно больше золота", а так как в наш век информация и знания одно из самых ценных, то твои уроки это-Золото). Ждём ещё уроки по этому движку!
*ВАЖНЫЕ ИЗМЕНИЯ GODOT 4* KinematicBody2D стал CharacterBody2D. Слегка поменяли логику, теперь не надо указывать в move_and_slide аргументы. Настройки стен, направления и всего прочего устанавливаются отдельно через собственные свойства , например CharacterBody2D.velocity = Vector2(100,0) или CharacterBody2D.up_vector = Vector2.UР P.s. это не все, еще очень много изменений советую почитать в интернете
Спасибо
@@FANBRO228 да пожалуйста, если честно вообще бы не советовал учить годо по этому ролику, тк он очень устаревший
@@Closemyheart да я понял уже нету новых видео по новой версии движка много всего поменялось
@@Closemyheart а какие бы видео уроки или документацию вы бы могли посоветовать по новой версии?
лол 4 версия мне всю физику сама написала
Спасибо большое за урок, все предельно понятно, продолжайте в том же духе, жду с нетерпением продолжения на эту тему
Да мне тоже очень интересно, также хотелось бы увидеть написание скриптов на языке C++
Это просто КЛАСС !! Надеюсь что будет полный курс про Движок Godot. С самого начала - язык программирования движка, создание игры (желательно под Android), встраивание рекламы, создание apk файла.
@WyverN Видел. Автор скучен. Гоша в сто раз лучше рассказывает !!
@@goldrockpro9079 Ну тогда остается только ждать Гошу) талант объяснять сложные вещи простым языком конечно у него не отнять. кстати у Сканера есть Дискорд сервер - там быстро помогают по большинству вопросов
@@me2beats313 Я за Сканнера)) У него очень много уроков по Годо. А после выхода версии Godot 4.0 он планирует перезапустить уроки.
@@goldrockpro9079 ахрахаапх, ну да, гоша лучше рассказывает. Правда дает он тебе информацию, за практическое применение которой тебе ноги сломают, но зато рассказывают лучше!!! Ты иди ещё купи у него курс по юнити)
@@goldrockpro9079 не знаю скучен он, не скучен. А меня устраивает.
Отличный урок! Спасибо :)
Круто👍 Ждём 3D урок
Прикольно, мне очень понравились и понятно объяснил. Продолжай пожалуйста, удачи тебе
Привет. Для первого ознакомления с движком прям шикарное видео ) Спасибо.
Отлично. Продолжай и дальше. А то многие после начальных уроков не объясняют дальше про Godot на русском. Ждём про стрельбу, анимацию и т.п.
Да, у вас очень легко понимать. И главное уверенность, что можно так делать игру, не смортя по каждой теме урок, а сам принцип работы и уверенность что будет работать.
Спасибо ты всё-таки услышал и сделал по этой платформе. И получилось такое совпадение, что ты меня порадовал подарком на день рождения)
Для плавной остановки хорошо еще использовать фунцию lerp() velocity = move_and_slide(velocity, Vector2.UP) velocity.x = lerp(velocity.x, 0, 0.2)
А что делает lerp? Оно постепенно уменьшаеть значение числа?
шО ЗА Язык програпирования ? Питон ?
@@darkhunter777 У этого движка свой язык GDScript но можно использовать CSharp (c#)
@@ArcticFox42 Это линейная интерполяция. Нахождение промежуточных значений между двумя известными. Если, например, у нас есть 0 и 10, то, интерполированное значение ровно по центру(коэффициент интерполяции, или как правильно, уже не помню, будет 0.5) будет 5. Коэффициент обозначает насколько далеко от первого значения до второго интерполировать. Если коэффициент равен 0, то итоговое значение равно первому, а если 1, то равно второму значению. В основном, в языках программирования реализуется вот так: function lerp(start, end, t) { return start * (1 - t) + end * t; }
огромное спасибо возьму на заметку)
Жду серию уроков по этому движку) Интересно какие еще языки есть и сложно ли на них скрипты писать.
kzhead.info можешь здесь посмотреть там чувак этим давно занимается.
есть C# например. проще всего Gdscript даже проще питона и заточен под движок. и большинство туториалов на нем. поэтому советую начать с него
@Владислав Велес 1) генераторы по большей части - синтакс. сахар. есть итераторы, если приспичит + есть yield 2. насчёт асинхронных функций - yield в большинстве случаев хватит за глаза. 3. про невозможность создания классов - это совсем не понял) скрипт уже является классом. можно создавать кастомные типы напр. с пом. ключевого слова class_name. можно создавать классы внутри скриптов
@@me2beats313, но всё равно легче на с# писать, ибо с gdscript будешь мозги себе больше иметь) Хотя, если разобраться( а там без "Б") то нормально будет
@Владислав Велес в gdscript каждый скрипт это класс
Видео было очень интересный. Пожалуйста, продолжай снимать по Godot
Блин, так интересно пересматривать уроки по старой версии движка... Жалко, что нету гайдов для людей, которые хотели бы создавать игры на новых версиях. Очень надеюсь, что автор заметит этот комментарий (плевать что прошло 3 года) и создаст подробный гайд по четвёрке. Респект👍
чел жизненно
есть гайды, но на английском
@@bloxz8594 знаю, но смотреть в субтитры которые переводят текст и одновременно на само видео очень некомфортно
@@rhapsodies3 ну тут остаётся только учить англ либо испльзовать яндекс с авто переводом голоса
@@bloxz8594 не могу не согласиться
Ураа! Это единственное видео на моей версии :'> Спасибо тебе!
Плюсую тысячу раз
круто, продолжай))
спасибо за продвижение годота. ждем еще контента по годоту)))))))позязя
Я искал такую среду 1год с нетерпением жду продолжения
Спасибо огромное, если честно, то правда в Godot очень удобно работать.
Нужно больше уроков по godot. Хороший движок, но мало таких уроков. Ещё можно было бы сделать выпуск про 3d игру, и создание для неё моделей с хотя бы простенькой анимацией
*В Godot пока что в 3D лучше не суваться, ибо есть проблемы с производительностью.*
@@Mitsumata что, и оптимизировать никак нельзя?
@@graphicsh Можно и легко. Там уже давно с 3D всё пофикшено.
@@variondrakon но графика очевидно хромает.
@@comachine ну ты сказанул годот ещё маленький движок
Продолжайте )
Классно, просто и понятно.
Супер! Движок лучший для новичков! Мне всё понятно впервые ))))
Жду продолжения.
Создай серию уроков, пожалуйста
Буду очень рад если появится серия на эту тему)
27:30 отлично, мы сначала создали 2 условия для передвижения, а потом создали еще два для отражения ассета игрока. Просто хлопки в чат.
Лол, и я об жтом подумал и написал, и сразу твой комент увидел !) 2 гения это сила 😂
++ 32:45 - "За счёт дельты мы сглаживаем"... 6ляять, сглаживаем мы только с помощью математических функции, а дельта, это переменная с плавающей точкой, с помощью которой можно заставить игру работать в зависимости от реального времени, а не от ФПС. Дельта - это время, прошедшее с последнего кадра в секундах. Если есть переменная Speed = 400, используя выражение velocity = Speed * delta, персонаж будет передвигаться со скоростью около 6-7 пикселей за кадр (при частоте кадров 60). Т.е. если комп игрока не вытягивает все 60 ФПС, и его ФПС прыгает от 50 до 60, то игра все равно будет идти в реальном времени, даже при ФПС = 30 (передвижение на 13 пикселей за кадр) его игра не будет замедлять время. Но без дельты (при ручном вводе кол-ва пикселей за кадр), если комп игрока вытягивает только 30 из 60-ти, то его игра будет идти в 2 раза медленней чем должна.
31:00 "is_action_pressed срабатывает только после того как мы нажали, отпустили..." 6ляяяяяяяяять я в axye с этого ютубера... Скаммер чистой воды. Сплошное введение в заблуждение, халтурный и костыльный код, ноль понимания темы (только ее иллюзия) и т.д. до бесконечности... Ещё чувак зеркалит текстуру Игрока, но не зеркалит злоебучий хитбокс игрока -____- Я не могу даже примерно вспомнить сколько раз я пробил свой лоб сильнейшими фейспалмами в течении всего видео...
@@theseangleвот кстати в одной игре у моего друга время было замедленно. А у меня все норм было.
Отличный урок !!!
лучший движок. Давай, пж, еще про него
delta нужна не для того, чтобы сглаживать, а чтобы синхронизировать с реальной производительностью. Дельта содержит время, которое прошло между предыдущим вызовом функции _physics_process и текущим. По умолчанию, функция вызывается 60 раз в секунду (это настраивается в настройках программы) Если вдруг игра подтормаживает, то delta увеличивается, и доумножением на delta мы как бы компенсируем любые тормоза на компе. По-хорошему, на delta следует умножать каждую переменную, которая изменяет velocity. И ещё неплохо сперва нормализовать delta (домножив на 60), чтобы все наши изменяющие переменные не уменьшались в 60 раз. Ну либо все переменные, меняющие velocity придётся указывать в единицах за секунду, а не в единицах за кадр.
Полезный комент 👍
Спасибо, по годот на русском Ютубе мало видео. Очень рад, что вы выложили видео) Очень ждал
Зайди на канал к Сканнеру))
Смотреть видосы по годоту от дударя, когда есть действительно хороший разработчик с канала "Godot 3D Russia", который снимает ХОРОШИЕ и подробные видео по этому движку
@@ellyminaty5146 Да, тем более у Годо Раша этих видео дофига и больше, а у Гоши Дударя только одно видео по простенькому платформеру. Не знаю, как остальным, но я считаю, что простым инди возможностей Годо за глаза. Кто-то говорит, там говно графон, но нет. Графика в Годо на достойном уровне. Возможностей у Годо очень много. Сейчас версия 3.2.2. Боюсь представить, насколько это будет бомбезный движок после выхода версии 4.0.
@@alexraum8579 Ну, объективно, сейчас годот ещё совсем слаб и не может тягаться с юнити на равных. Но если ты энтузиаст и хорош в программировании и разработке игр, то годот крайне интересен, учитывая все ограничения юнити из-за подписок. Ну, а по поводу Дударя, здесь даже говорить нечего. Сколько бы видосов у него не было, учиться по ним никакого смысла нет, ибо он сам не имеет ни малейшего представления о том, что вещает. Видео ради видео и не более
@@ellyminaty5146 Вот именно, Годо полностью бесплатен. Хоть он и не может потягаться с Юнити на равных, но всё же мне за глаза его возможностей. Тем более, у меня ноут средний. Юнити тоже идёт без лагов, но Годо запускается за пару секунд. Плюс, мне его интерфейс как-то больше понравился. Уже и практика с Годо была. Сделал 2д игру небольшую и 3D шутер в стиле Low Poly. Там у меня сам игрок, карта, анимация движения, выстрел, перезарядка, ограничение патронов, вывод хр и патронов в интерфейс, туман добавил, дальность прорисовки и occlusion culling. Также, у меня перс медленно скользил с холма, поэтому я добавил в коде, что полом считается всё при наклоне до 30 градусов. Те, что только вошли в Годо, не знают, как решить это. Поэтому кину этот фрагмент кода сюда... vel = move_and_slide(vel, Vector3(0,1,0), deg2rad(30)) То есть, нужно просто добавить deg2rad(30)) У кого поверхность ровная, это не нужно вовсе. Но если у вас там в игре холмы есть, например, (как у меня) то без этого никуда.
Гоша, давай ещё серию срочно, все ждём
Я всё смотрел твои старые туторы и мне ненравилось что ты льёшь воду, непонятно обьясняешь без сценария, а тут... ДА ТЫ ЛУЧШЫЙ ЮТУБЕР!
Чтобы игрок не продолжал движение после того как вы отпустите кнопку движения можно просто после после elif Input.is_action_pressed("Player_right"): vel.x = speed Написать else: velocity.x = 0 Тогда после отжатия кнопки игрок мгновенно остановиться, сам я новичок, уверен можно придумать что-нибудь получше, чтобы например игрок останавливался плавно, но как сам я пока не знаю, по крайней мере это решит проблему.
elif Input.is_action_just_released("player_right"): vel.x = 0 Работает
Если хочешь чтоб оно плавно скользило просто вместо 0 поставь 5 или 7
Почему godot не видит первую кнопку то есть if input.is_action_pressed("влево")он не реагирует а elif input.is_action_pressed("вправо")он работает пр этом может в любой момент повернуть на лево хотя я жму на право
@@Ya_chelkash та же фигня
Молодец. Благодарствую.
Очень положительный комментарий! Спасибо. Жутко интересно!
Спасибо большое!
Обожаю этот канал
Ты забыл написать: else: Vel.x = 0 Чтобы персанаж оставался, когда отпускается кнопка.
он будет в воздухе останавливаться, лучше так: elif is_on_floor(): vel.x = 0
что за язык програмирования
@@thegreatfaer3081 GDScript
@@thegreatfaer3081 gdscript
Run_mAn_ruN это новый язык?
Нужны уроки дальше) Как создать более сложную и более полноценную игру?)
Оч круто! Только что доделал эту игру. Ждём 2 чсть
Я просил в пережном видио круто спасибо
Жду следующих уроков)
как же все это круто ! одно удовольствие слушать.
Спс! Как же я этого ждал. В этой документации мне лень учить)). Жду короче курсы). Серьёзно, я не против если вы/ты выпустили/ил курсы по godot.
найс) лайк
Может сделаете вторую часть?
Очень жду серию уроков по Godot!
супер. спасибо.
Продолжи пожалуйста снимать такие видео
У тебя лучший канал по программированию
кхм Хауди хо с более милионом подпищиков покинул чат))
Спасибо ты топ 😁😁😁😁😁
Есть канал, который снимает видео по Godot, но твои видео (лично для меня) более понятные
Хотелось бы еще различных видео по этому движку. Уверен, что он не хуже того же юнити будет. Углубиться в эту тему стоит.
Согласен, движок не хуже Юнити. А язык GDScript тоже лучше C#, хотя это уже тема спорная наверно.
Да! Продолжай!
ДА! ПРАДАЛЖАЙ!
Спб за твои тактики! Играю по ним уже давно. Пока получается)
А можно вопрос а если ты пишешь команду if Input.is_action_pressed(player_left) то вскобках надо писать игрок как у тебя или то как у меня называется персонаж
Жду продолжения уроков по Godot engine
Гоша, только твои ролики и помогают рассеять туман неведения. спасибо, что помогаешь нам! Очень хотелось бы увидеть продолжение. И если с платформерами все более менее понятно, то как работать с ЮАЙ генерацией и созданием, например пошаговых стратегий - пока загадка. Очень прошу, выпусти еще роликов!
А не правильнее (проще) так: onready var imagePlayer = get_node("icon") func _physics_process(delta): if Input.is_action_pressed("player_left"): imagePlayer.flip_h = false vel.x -= speed elif Input.is_action_pressed("player_right"): imagePlayer.flip_h = true vel.x += speed то есть вынести развороты игрока в уже имеющиеся IF где ранее уже задавали направление движения ?
Народ жаждет больше видеоуроков по GODOT 2D
пасибо огромное!!!
Спасибо. Я три с лишним часа по хреновейшему гайду пытался сделать то, что с твоей помощью сделал за 20 минут. И при этом мне всё понятно что было в твоём видео. Ты учитель программирования от бога.
@Stalker 8 ну, с английским мне помог Яндекс переводчик страниц. Он сейчас очень неплохо переводит.
Прекрасно
Если вам нужно чтобы персонаж останавливался на поверхности (Но нужно в самом начале объявить переменную friction, которая у меня равна 800, от нее зависит как сильно будет действовать трение на персонажа): if is_on_floor(): if vel.x > 0: vel.x -= friction * delta if vel.x < 1: vel.x = 0 elif vel.x < 0: vel.x += friction * delta if vel.x > -1: vel.x = 0
спасибо!
Жду плейлист с уроками)
10:50 почему просто не подвинуть colision shape влево
было бы неплохо еще примеров разных типов игр
спасибо очень помог
Что нужно добавить к программе? Возможно автор настроил годо до записи видео, но у меня программа не распознаёт пиксельное изображение с aseprite в формате png
спасибо парень
А нельзя для движения персонажа использовать какие нибудь скрипты по умолчанию? есть такая возможность?
Вот круто объясняет Гоша, другие ютуберы когда назначают клавиши, используют стандартные функции, типо "ui_left" и тд, а Гоша показал сразу, что можно и свои создавать. За это мне и нравятся твои уроки)
РЕБЯТА ДЛЯ ИЗБАВЛЕНИЯ ЭФФЕКТА СКАЛЬЖЕНИЯ У ПЕРСА НУЖНО ПРОДУБЛИРОВАТЬ МЕСТО ГДЕ НАПИСАНО Input ВМЕСТО PRESSSED НАПИСАТЬ released И ПОСТАВИТЬ ТАМ ГДЕ VEL.X+= ИЛИ VEL.X-= ,0 И ПЕРС БУДЕТ СТОЯТЬ КОГДА ВЫ ОТПУСТИТЕ КЛАВИШИ УПРАВЛЕНИЯ
Спасибо
Спасибо
Не сработало. Скольжение все ещё есть. И там нет функции released, лишь just_released
@@user-ew6wb1fo7z Тебе just_released и нужно. Только вместо += или -= пиши просто = 0
@@madbuilder9551 да я догадался уже. В гугл забил перевод, а дальше логика. Но другим объяснение пригодится.
Как отслеживать момент когда игрок падает за границы сцены? В той же функции писать проверку?
а почему когда я пишу move_and_slide(vel, Vector2 UP) мне пишет eror parsing expression misplaced: built- In type
Сделайте для версии 4.1, если не тяжело. Многое поменялось
Согл. move_and_slide не работает
спасибо огромное
Адекватное объяснение. Хороший труд ))))))
Жду больше уроков по godot
Наконецсто, видео урок от префсионала.
Звучит смешно, этот чувак просто посмотрел на бугре и интерпретировал на русский ютуб.
@@1play2fun еще и платформер трешовый получился нет нормального прыжка нет анимаций да и само обьяснение поверхностное
@@user-kn9xt7hf2b на скорую руку.
просвистеонала
ну а что вы хотели за полчаса?) это видео для новичков
А как управлять кликами персонажем кликами на экране, если игра под андроид?
а будет вторая серия создание этой игры ? это будет очень классно
лайк бро
это было круто и я сделал 👍
А как вам идея сделать платформер в 3D? Можно будет сделать мини квадрат с полигонами,и заполнить его разными платформами с батутами,и прочей фауной,которая создаёт окружение игры. Я бы реально посмотрел на такую игру на движке Godot 😀
Есть типа того уже
@@nikitagundorov9906 угу, несколько десятков тысячь наверное)) Орегенальная типа идея
Ну идея хорошая, но можешь эти игры посмотреть и на юнити и на других, так как их уже тысяч 5
Красавааааа
Пишет: The argument 'delta' is neger used in the function '_physics_process'. If this is intended, prefix it with an underscore: '_delta'. Что делать?
+
Здравствуйте, такая проблема, у меня в игре спрайт прыгает, а положение точки центра я не знаю как изменить, не могли бы вы помочь?
32:12 Просто супер! В Unity на до либо лучи бросать, либо проверять OnCollisionStay, а тут все автоматом.
Ну тут ещё raycast реализован как узел, можно так:)
После импорта можно выключить галку Filter и переимпортировать, тогда не будет мыла
Можешь подробнее рассказать, как импортировать без мыла?
Можно по больше про создавание игр и сайтов
а как в настройке управления движения назначить сенсорные стики? Там нету категории для мобильного сенсорного управления, а лишь клавиатура + мышь и геймпад. Буду благодарен за ответ.
Все прекрасно, уже сделал полноценный платформер, только есть одно НО, а именно персонаж скользит как на льду. Даже когда я его не трогаю, он может самостоятельно проскользить всю карту. Кто знает как исправить?
Спасибо вам за этот ролик сделайте пожалуйста курс по Godot
Годо, найс
13:39 - Передвижение игрокаb а че делать если в input невысвечиваются твои кнопки которые ты сделал?