Game Dev Artisan
Game Dev Artisan
  • Видео 18
  • Просмотров 284 526
User Input Prompt in Godot 4 - Await User Input
To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/GameDevArtisan . You’ll also get 20% off an annual premium subscription.
Let's create a Confirmation Modal that awaits User input. We can use a confirmation modal to prompt a user to continue or cancel and execute follow up code accordingly.
🌐 Check out the blog post for this video:
gamedevartisan.com/tutorials/confirmation-modal
🗋 Github Project:
github.com/Game-Dev-Artisan/godot-confirmation-modal
💬 Join our growing Discord Community:
discord.gg/p6fGxHEgrx
☕ Support my work by buying me a coffee:
ko-fi.com/gamedevartisan
💬 Follow me on X(Twitter): GameDevArtisan
🎶 Music:
Music provided by Chillh...
Просмотров: 2 090

Видео

Making My Godot Game Jam Into A Full Game
Просмотров 1,2 тыс.4 месяца назад
To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/GameDevArtisan . You’ll also get 20% off an annual premium subscription. In this first devlog we discuss my new game: Survive the Mines - an adventure, crafting, exploration, roguelike game. I outline how my project started from a Game Jam from the Godot Wild Jam, and has evolved into a fully fledged project, ...
Godot Container Nodes - Deep Dive
Просмотров 4,7 тыс.6 месяцев назад
To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/GameDevArtisan . You’ll also get 20% off an annual premium subscription. In our last video we discussed Control Nodes and took a look at the ability to position and size them using the Anchor system. In today's video we'll be looking at the Container Nodes and the various types that arrange the children nodes ...
Learn Godot UI Control Nodes
Просмотров 21 тыс.7 месяцев назад
To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/GameDevArtisan/ . The first 200 of you will get 20% off Brilliant’s annual premium subscription. Ready to take your Godot UI skills to the next level? In this video, we'll delve into the powerful world of control nodes and show you how to master them for creating dynamic and interactive user interfaces in Godo...
I Made A Game In A Week and You Should Too!
Просмотров 3,6 тыс.8 месяцев назад
I spent 1 week making a game about managing 4 survivors who are attempting to repair their vehicle while under attack from an onslaught of zombie hoards! 🌐 Check out the blog post for this video: gamedevartisan.com/game-jams/i-made-a-game-in-a-week-gwj65 🎮 Play the Game on Itch.io: braydeejohnson.itch.io/throughtheforest 💬 Join our growing Discord Community: discord.gg/p6fGxHEgrx ☕ Support my w...
Creating Diablo IV's Inventory UI in Godot 4
Просмотров 6 тыс.10 месяцев назад
In this Feature Study, we'll be taking a look at Diablo IV's Character Panel and Inventory including aspects of it's Itemization. Our goal is to better understand how the latest installation of Diablo in the franchise accomplishes it's implementation of Items, Inventories, and the way that information is presented to a player via the UI components. We'll recreate these elements in Godot 4 to de...
How to Save User Preferences in Godot 4 - Godot Fundamentals
Просмотров 10 тыс.Год назад
In today's video of Godot Fundamentals, we'll be implementing saving for our User Preferences using a Custom Resource and the Resource Saver. With this we'll be able to track our settings for the music and sfx audio levels, our control scheme, and our custom control mappings for our Input Map. 🌐 Check out the blog post for this video: gamedevartisan.com/tutorials/godot-fundamentals/saving-user-...
How to Remap Input Actions in Godot 4 - Godot Fundamentals
Просмотров 8 тыс.Год назад
In today's video of Godot Fundamentals, we're covering how we can remap our input actions to different keys to allow our users full customization of how they play our game. We'll create a custom button that we can select in our menu to listen for our InputEvents and remap the action to the pressed key. 🌐 Check out the blog post for this video: gamedevartisan.com/tutorials/godot-fundamentals/inp...
How to Add Controller Support in Godot 4 - Godot Fundamentals
Просмотров 12 тыс.Год назад
In today's video we’re going to continue our series on Godot Fundamentals. We’ll be adding controller support to move our tank and navigate our UI. We will also be adding input scheme options within our game menu, controller vibrations when firing, and replacing our mouse cursor with a weapon crosshair when our input scheme changes to the gamepad. 🌐 Check out the blog post for this video: gamed...
How to Create Menus and Scene Transitions in Godot 4 - Godot Fundamentals
Просмотров 20 тыс.Год назад
In today’s video we’re going to continue our series on Godot Fundamentals. We’ll be creating a new main menu in which our game will start at and allow us to start and quit our game, as well as introduce some scene transitions when leaving and entering our menu. 🌐 Check out the blog post for this video: gamedevartisan.com/tutorials/godot-fundamentals/menus-and-scene-transitions 🗋 View the source...
How to Create a Target Mouse Camera and Custom Cursor in Godot 4 - Godot Fundamentals
Просмотров 7 тыс.Год назад
In today’s video we’re going to continue our series on Godot Fundamentals. We’ll be introducing a Camera with different modes that will follow our mouse or focus a target. We'll also setup a custom cursor icon. Our Tank's turret controls will also be updated to always point towards the direction of our mouse. 🌐 Check out the blog post for this video: gamedevartisan.com/tutorials/godot-fundament...
Using Godot 4's TileMaps and Custom Data Layers - Godot Fundamentals
Просмотров 12 тыс.Год назад
In today’s video we’re going to continue our series on Godot Fundamentals. We’ll be covering the TileMap and TileSet features within Godot and how you can setup Terrains, Layers, Auto-Tiling, Patterns, and Custom Data for your Levels. By the end we should be able to design our Level using the our TileSet, and see our Tank behave differently based on our current tile type we are interacting with...
Control SFX and Music in Godot - Godot Fundamentals
Просмотров 27 тыс.Год назад
In today’s video we’re going to continue our series on Godot Fundamentals. We’ll cover adding Audio to our Game to improve the overall feel. We’ll look at The Audio Bus Layout, Adding Audio via Audio Stream Players, and controlling our custom Bus volumes from our UI. 🌐 Check out the blog post for this video: gamedevartisan.com/tutorials/godot-fundamentals/audio-and-ui-controls 🗋 View the source...
Building a UI in Godot - Godot Fundamentals
Просмотров 70 тыс.Год назад
In today’s video we’re going to continue our series on Godot Fundamentals. We’ll be adding a simple User Interface to our game which will include a Score which will increase when we pickup our collectables. We’ll also add a reload indicator to visualize the weapon’s reload status. 🌐 Check out the blog post for this video: gamedevartisan.com/tutorials/godot-fundamentals/ui-and-signals 🗋 View the...
Adding Collisions: Layers, Detections, and Interactions - Godot Fundamentals
Просмотров 13 тыс.Год назад
In today’s video we’re going to continue our series on Godot Fundamentals. We’ll be improving our collision detection as well as adding interaction with our Tank and Bullets, by creating some additional interact-able objects such as a crate, pickups, and walls to collide into. 🌐 Check out the blog post for this video: gamedevartisan.com/tutorials/godot-fundamentals/collisions-layers-detections-...
Understanding The Basics of GDScript - Godot Fundamentals
Просмотров 31 тыс.Год назад
Understanding The Basics of GDScript - Godot Fundamentals
How to Compose Scenes with Nodes and SceneTrees in Godot - Godot Fundamentals
Просмотров 11 тыс.Год назад
How to Compose Scenes with Nodes and SceneTrees in Godot - Godot Fundamentals
Getting Started With Godot In 2024 - Godot Fundamentals
Просмотров 25 тыс.Год назад
Getting Started With Godot In 2024 - Godot Fundamentals

Комментарии

  • @elliotbarlow2932
    @elliotbarlow2932 4 дня назад

    My tank doesn’t move forward or backward unless I’m turning and the weapon doesn’t move at all

  • @desoft8b
    @desoft8b 6 дней назад

    Pensé que este vídeo era para añadir soporte de un mando a godot. Godot no reconoce los triggers traseros del mando de stadia como analógicos si no como digitales.

  • @Lorry127
    @Lorry127 14 дней назад

    Great learning resource, thanks for the work!

  • @marcoshenriquesilvamartins6511
    @marcoshenriquesilvamartins6511 25 дней назад

    Para ver a série de videos

  • @nolanroube1009
    @nolanroube1009 Месяц назад

    Thanks, but you speak too fast (or i've look the video at 2X speed...)

  • @TexZeTech
    @TexZeTech Месяц назад

    My change to the audio menu incorporated mute buttons. I'm still in the process of learning the language so don't judge me too harshly. #------------------------------------------------------------------------------------------------------ func _on_master_value_changed(value: float) -> void: if AudioServer.is_bus_mute(MASTER_BUS_ID) == false: AudioServer.set_bus_volume_db(MASTER_BUS_ID, linear_to_db(value)) AudioServer.set_bus_mute(MASTER_BUS_ID, value < .05) elif AudioServer.is_bus_mute(MASTER_BUS_ID) == true: AudioServer.set_bus_volume_db(MASTER_BUS_ID, linear_to_db(value)) AudioServer.set_bus_mute(MASTER_BUS_ID, true) func _on_master_mute_toggled(toggled_on: bool) -> void: AudioServer.set_bus_mute(MASTER_BUS_ID, toggled_on) func _on_music_slider_value_changed(value: float) -> void: if AudioServer.is_bus_mute(MUSIC_BUS_ID) == false: AudioServer.set_bus_volume_db(MUSIC_BUS_ID, linear_to_db(value)) AudioServer.set_bus_mute(MUSIC_BUS_ID, value < .05) elif AudioServer.is_bus_mute(MUSIC_BUS_ID) == true: AudioServer.set_bus_volume_db(MUSIC_BUS_ID, linear_to_db(value)) AudioServer.set_bus_mute(MUSIC_BUS_ID, true) func _on_music_mute_toggled(toggled_on: bool) -> void: AudioServer.set_bus_mute(MUSIC_BUS_ID, toggled_on) func _on_sfx_slider_value_changed(value: float) -> void: if AudioServer.is_bus_mute(SFX_BUS_ID) == false: AudioServer.set_bus_volume_db(SFX_BUS_ID, linear_to_db(value)) AudioServer.set_bus_mute(SFX_BUS_ID, value < .05) elif AudioServer.is_bus_mute(SFX_BUS_ID) == true: AudioServer.set_bus_volume_db(SFX_BUS_ID, linear_to_db(value)) AudioServer.set_bus_mute(SFX_BUS_ID, true) func _on_sfx_mute_toggled(toggled_on: bool) -> void: AudioServer.set_bus_mute(SFX_BUS_ID, toggled_on) #------------------------------------------------------------------------------------------------------

  • @RShakes
    @RShakes Месяц назад

    This was incredibly helpful and well put together! UI has always been one of those things I've never really wanted to mess with but you've demystified it - time to spend some time actually doing it to solidify the knowledge.

  • @MrGramno
    @MrGramno Месяц назад

    If you could zoom godot a bit next time, because right now everything looks very small.

  • @pacsy
    @pacsy Месяц назад

    Good tutorial, Im doing it with 4.3 TileMapLayer is deprecated now! You have to use TileMapLayer instead and I had to restart the IDE to be able to paint with the terrains.

  • @Pleasantnoob64
    @Pleasantnoob64 2 месяца назад

    Hello, using this method how would go about setting up a check button that enables fullscreen

  • @gabwyn-art
    @gabwyn-art 2 месяца назад

    I hope someone in the future will find this useful but now in current godot Emission shape is inside the Spawn options

  • @RedMoon814
    @RedMoon814 2 месяца назад

    Thank you very much for the tutorial. Even though the first quarter was about project organization It was really useful as well :)

  • @user-lo3ny7pn8h
    @user-lo3ny7pn8h 2 месяца назад

    Just a hint: Please do not use "music" in the background for tutorials. It always get really really annoying very fast. Your Videos are interesting and precious enough. Really no need to "improve it further" with elevator music.

  • @edburdo
    @edburdo 2 месяца назад

    I got bit a few times when you read the "check if not this" statement as "check if this". Otherwise, success!

  • @edburdo
    @edburdo 2 месяца назад

    A tip. Somehow I moved my "center point" on the 2D world view. This meant that my coords were off, so when I shot and destroyed a crate, the pickup appear in a new position relative to the wrong starting coordinates. I fixed it by finding the "move" tool (looks like a dot with 4 triangles pointing in cardinal directions). I put that back to "0,0" and then everything seems to work properly now.

  • @RedMoon814
    @RedMoon814 2 месяца назад

    Thank you for the video. Helped a lot. I just want to add that in the bullet script, when I called body.destroy() it was making the debugger complain: "Cant change this state while flushing queries" So I changed the call body.destroy() for body.call_deferred("destroy") and the debugger was happy again :) Kudos!

  • @gabwyn-art
    @gabwyn-art 2 месяца назад

    For some reason everything works fine except for the function at 10:47, the signals are already conected but after pressing space and waiting 1 second i get the next error : "Invalid set index 'Value' (on base 'float') with value of type 'int' ", in that _on_reloaded function, I tried typing 1.0 or using reload_progress.value = float(1) but I still got error, why is always the UI the hardest part😭

    • @gabwyn-art
      @gabwyn-art 2 месяца назад

      Bruuh, I put en_collected instead of _on_collected, damn you spelling mistakes lol

    • @xhappybunnyx
      @xhappybunnyx 21 день назад

      @@gabwyn-art love those late-night "wth is wrong now??" moments that end 10 mins later after realizing a goofy typo... I liberally select and ctrl-d just to make sure I don't do this (as often) anymore

  • @ugib8377
    @ugib8377 2 месяца назад

    For a game jam project, this looks amazing! I like the art style you used for the players, slightly reminiscent of the Rimworld pawns, with a bit more detail of course. Lots of potential here it seems. That steam library you were talking about, was that to integrate steam multiplayer into your game? Or? I look forward to the next dev log!

    • @GameDevArtisan
      @GameDevArtisan 2 месяца назад

      Thanks, I've been working on it a bit on and off the last while, hoping to be able to put an update out soon. Also, the steam library is for integrating Steam's SDK into Godot, it's called GodotSteam

  • @ugib8377
    @ugib8377 2 месяца назад

    I've heard so many people suggest that GDScript is really similar to python. When honestly, I see a ton of similarity with C#. Just without the horde of semicolons. (Which is going to take some getting used to again...) But yeah, sure functions are defined with func. But there is type inference, or static typing. Enums. Even the comparison operators are similar. Which is lovely, because I just spent a few months learning C#. So this won't be too hard to move over to GDScript.

    • @GameDevArtisan
      @GameDevArtisan 2 месяца назад

      Yea, the beautiful thing is that you can also use C# with Godot if you choose to, even mix and match GDScript with C#. I prefer the simplicity of using GDScript, but understand when some want to use C#.

    • @ugib8377
      @ugib8377 2 месяца назад

      @@GameDevArtisan Indeed. I did a fair bit of research trying to work out what version I wanted to download. All in all GDScript looks like it has more presence in tutorials, and more documentation overall. Not to mention I don't need an IDE for GDScript, where that is not the case for C#, as I read. With another point being that when you start mixing garbage collection into the whole ordeal, things can start to slow down, or act wonky. So GD script it is! I can't wait to dig in and actually work along with your videos tomorrow. Too late for me to do any meaningful learning tonight. Heh...

  • @ugib8377
    @ugib8377 2 месяца назад

    Thanks for the overview. Relatively new to the game dev scene. Done some work in Pygame and Monogame, looking to try out Godot to see how it goes. I look forward to watching through your series to get better oriented. +1 sub

    • @GameDevArtisan
      @GameDevArtisan 2 месяца назад

      Welcome! Thanks for the sub, hope the videos help you get started with Godot!

  • @Adamreir
    @Adamreir 2 месяца назад

    Your inventory window looks like it’s made in paint, but your tutorial is amazing!

    • @GameDevArtisan
      @GameDevArtisan 2 месяца назад

      Close, I used Aesprite for the pixel art. I tend to like the low poly/pixel aesthetic, so this can be seen as more of a Demake of the inventory of D4.

  • @savmass
    @savmass 2 месяца назад

    Great video. I'm still kind of confused as to why you'd use Vbox and Hbox Containers when control seems to do it all? Do those give you more flexibility with layout I'm not seeing? Maybe if the case of wanting to have multiple boxes evenly spaced out?

    • @GameDevArtisan
      @GameDevArtisan 2 месяца назад

      I do a follow up video where I cover the Container nodes, but the basics are that Containers control the size and positions of the children, where a control only acts on the node itself.

  • @RedshirtAfficionado
    @RedshirtAfficionado 2 месяца назад

    This tutorial is not the best for absolute beginners as you go over a lot of things without actually explaining what they are or what they do (such as @onready). You just say to set it, but not why or how it works. Thankfully godot documentation is really good.

  • @toms__animations200
    @toms__animations200 2 месяца назад

    Great video

  • @FoxyFernAnimation
    @FoxyFernAnimation 2 месяца назад

    Super helpful video, thank you! Made me understand better how vbox, hbox etc work and how to utilize them properly.

  • @FudgedDiceRoll
    @FudgedDiceRoll 2 месяца назад

    This was exactly what I needed to see after another tutorial channel breezed through creating a UI and I decided to clean my file structure breaking said UI because I wanted a cleaner file structure for my project.

  • @pihotinez_gosha
    @pihotinez_gosha 2 месяца назад

    Thank you

  • @Majorlydevilish
    @Majorlydevilish 2 месяца назад

    I've followed this tutorial multiple times, looked through the code to see any mistakes, and yet, My weapon won't fire for some reason, and I don't know what to do. Edit: I figured it out! Apparently I was missing a part of a line code. What happened was in the weapon script, I was missing a "state ==" before "STATES.RELOADING"

    • @GameDevArtisan
      @GameDevArtisan 2 месяца назад

      Ah yes, you have to watch out for things like expressions that lead to a block of code!

  • @CyberSkull
    @CyberSkull 3 месяца назад

    Really learning a lot from these.

  • @victorgustavo4366
    @victorgustavo4366 3 месяца назад

    how to make a "loop" in the sound?FOr example, footsteps sounds?

  • @heneagedundas
    @heneagedundas 3 месяца назад

    Very useful. I've only recently started learning Godot, so this is full of useful tips, e.g. I didn't know the await command could be set to wait for a sound to finish rather than for a fixed time! Now to go tidy up my learning project game.

  • @Neqator
    @Neqator 3 месяца назад

    This is not the first time I’ve been watching Godot guides, but this is the first time I’ve seen such a detailed one (about bus and master and audioserver) about sound...

    • @GameDevArtisan
      @GameDevArtisan 2 месяца назад

      So glad to hear this was helpful!

  • @comradecid
    @comradecid 3 месяца назад

    just stumbled across this, and i have to say i'm relieved. mastering godot's particular approach towards layout has been nothing short of aneurysm-inducing.

    • @GameDevArtisan
      @GameDevArtisan 2 месяца назад

      Took me quite some time to get around the Control node behavior, I'm glad this helped!

  • @Pro_max5
    @Pro_max5 3 месяца назад

    Thank you ❤

    • @GameDevArtisan
      @GameDevArtisan 2 месяца назад

      You're welcome 😊

    • @Pro_max5
      @Pro_max5 2 месяца назад

      @@GameDevArtisan 😁❤

  • @troyna77
    @troyna77 3 месяца назад

    ty. i appreciate your work in doing these tutorials.

  • @sxlg_32
    @sxlg_32 3 месяца назад

    10:00 while may not be an issue here it's best practice to use call_deferred when grabbing focus from _ready()

  • @troyna77
    @troyna77 3 месяца назад

    ty

  • @ticketforlife2103
    @ticketforlife2103 3 месяца назад

    Gdscrpit is underrated honestly

  • @tarkindev
    @tarkindev 3 месяца назад

    what software do you use for your pixel art?

    • @GameDevArtisan
      @GameDevArtisan 3 месяца назад

      I use Aseprite for all my 2d pixel artwork, I've even used it for some 3d textures!

  • @tarkindev
    @tarkindev 3 месяца назад

    very simple and easy to understand!

  • @hellblazer8543
    @hellblazer8543 3 месяца назад

    wait, so you mean to tell us that theres a way to understand Godot UI? haha. loved this tutorial. thank you!

    • @GameDevArtisan
      @GameDevArtisan 3 месяца назад

      You bet. I'm glad this was helpful. Stay tuned for more.

  • @morgen3369
    @morgen3369 3 месяца назад

    I did something like this for a shop confirmation in a way less practical way. This is adaptative to a lot of different uses, I will definitely use this, thanks!

    • @GameDevArtisan
      @GameDevArtisan 3 месяца назад

      Glad it could help expand a use case! Would love to see how you put it to use!

  • @agriasoaks6721
    @agriasoaks6721 3 месяца назад

    Sensei, Can we somehow implement it in different scenario? Like in the Battle Start Screen thing in a strategy card game or some sort.

    • @GameDevArtisan
      @GameDevArtisan 3 месяца назад

      You sure can, the await method can be used in the same way for multiple choices, drop down menus, and other use cases. The flow of prompt and response would be very similar, though the implementation might look slightly different.

  • @GameDevArtisan
    @GameDevArtisan 3 месяца назад

    To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/GameDevArtisan . You’ll also get 20% off an annual premium subscription.

  • @PhucHuynh-u7m1k
    @PhucHuynh-u7m1k 3 месяца назад

    Great tut! Very beginer friendly

  • @rsimpao
    @rsimpao 3 месяца назад

    Honestly one of the best fundamental videos I've seen so far!

  • @SonnoMaku
    @SonnoMaku 3 месяца назад

    I have zero programming knowledge so a lot of the terms and whatnot go right over my head. Guess I've got a lot more I need to figure out before I can even begin. lol

    • @GameDevArtisan
      @GameDevArtisan 3 месяца назад

      It can be a bit overwhelming at first. It can be a hard balance to strike while using certain language to define terms. I'd like to do better at being more expressive and descriptive in future videos!

  • @sambrown7691
    @sambrown7691 4 месяца назад

    Really enjoying following along on these tutorials, has absolutely been the most I've gotten from any code along style video. One thing I'd love to get a better understanding of though: From what I've seen so far (and I'm new to this), it seems to me like writing a function with an underscore prefix (ex. _input(), _physics_process()) denotes hooking into an existing function from a parent node. So when I saw that the custom functions you wrote for the UI label scripts - _update_label_score() and _on_collected() - I wasn't sure how to reconcile it. Was this a typo? Is my assumption wrong? I'm aware of how pedantic this sounds, but I'd appreciate the clarification.

    • @GameDevArtisan
      @GameDevArtisan 4 месяца назад

      Not pedantic at all. I will normally reach for the underscore to denote when a function is private to the class, and shouldn't be called externally. In other languages you can denote with a public/private, but Godot doesn't have the same feature. Sadly using underscore also doesn't actually make it private, it's more of a convention.

    • @sambrown7691
      @sambrown7691 3 месяца назад

      @@GameDevArtisan understood, appreciate the info!

    • @xhappybunnyx
      @xhappybunnyx 21 день назад

      fwiw this is a terrific question

  • @sweatyeti
    @sweatyeti 4 месяца назад

    Very nice guide. Thank you!

  • @mintydog06
    @mintydog06 4 месяца назад

    This was a great tutorial. Thanks very much.