- Видео 18
- Просмотров 284 526
Game Dev Artisan
США
Добавлен 29 авг 2022
Welcome Artisans! We're helping you create Games in the Godot Game Engine! Tutorials, Concepts, Game Mechanics, Devlogs, and more!
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...
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
My tank doesn’t move forward or backward unless I’m turning and the weapon doesn’t move at all
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.
Great learning resource, thanks for the work!
Para ver a série de videos
Thanks, but you speak too fast (or i've look the video at 2X speed...)
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) #------------------------------------------------------------------------------------------------------
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.
If you could zoom godot a bit next time, because right now everything looks very small.
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.
Hello, using this method how would go about setting up a check button that enables fullscreen
I mean saving the setting
I hope someone in the future will find this useful but now in current godot Emission shape is inside the Spawn options
Thank you very much for the tutorial. Even though the first quarter was about project organization It was really useful as well :)
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.
I got bit a few times when you read the "check if not this" statement as "check if this". Otherwise, success!
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.
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!
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😭
Bruuh, I put en_collected instead of _on_collected, damn you spelling mistakes lol
@@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
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!
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
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.
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#.
@@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...
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
Welcome! Thanks for the sub, hope the videos help you get started with Godot!
Your inventory window looks like it’s made in paint, but your tutorial is amazing!
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.
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?
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.
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.
Great video
Glad you enjoyed it
Super helpful video, thank you! Made me understand better how vbox, hbox etc work and how to utilize them properly.
Glad it was helpful!
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.
Great to hear!
Thank you
You're welcome
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"
Ah yes, you have to watch out for things like expressions that lead to a block of code!
Really learning a lot from these.
Glad to hear it!
how to make a "loop" in the sound?FOr example, footsteps sounds?
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.
Glad it was helpful!
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...
So glad to hear this was helpful!
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.
Took me quite some time to get around the Control node behavior, I'm glad this helped!
Thank you ❤
You're welcome 😊
@@GameDevArtisan 😁❤
ty. i appreciate your work in doing these tutorials.
My pleasure!
10:00 while may not be an issue here it's best practice to use call_deferred when grabbing focus from _ready()
Great point! Thanks for sharing.
ty
My pleasure!
Gdscrpit is underrated honestly
I agree!
what software do you use for your pixel art?
I use Aseprite for all my 2d pixel artwork, I've even used it for some 3d textures!
very simple and easy to understand!
wait, so you mean to tell us that theres a way to understand Godot UI? haha. loved this tutorial. thank you!
You bet. I'm glad this was helpful. Stay tuned for more.
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!
Glad it could help expand a use case! Would love to see how you put it to use!
Sensei, Can we somehow implement it in different scenario? Like in the Battle Start Screen thing in a strategy card game or some sort.
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.
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.
Great tut! Very beginer friendly
Glad it was helpful!
Honestly one of the best fundamental videos I've seen so far!
So glad to hear that! Thanks.
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
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!
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.
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.
@@GameDevArtisan understood, appreciate the info!
fwiw this is a terrific question
Very nice guide. Thank you!
Glad it was helpful!
This was a great tutorial. Thanks very much.
You're very welcome!