Your First 2D GAME From Zero in Godot 4 **Vampire Survivor Style**

Поделиться
HTML-код
  • Опубликовано: 16 янв 2025

Комментарии • 1,3 тыс.

  • @PixelBladeStudios
    @PixelBladeStudios 10 месяцев назад +375

    Finally a tutorial that covers the "why" and not just the "what". Well paced, clearly explained and properly sized to make it digestible. Thoroughly enjoyed making this Vampire Survivor. GDQuest is my go-to place for all things Godot!!

    • @Gdquest
      @Gdquest  10 месяцев назад +21

      So rewarding to read that. Thank you.

    • @sameeryachouh9097
      @sameeryachouh9097 10 месяцев назад +2

      @@Gdquest I second that! The explanations you gave for everything that we typed were awesome. It helps so much when you explain the syntax and the logic behind the programming!

    • @mikk.t.7824
      @mikk.t.7824 9 месяцев назад +4

      "Science isnt about what, its about why." Quote i made inspired by Cave Johnson

    • @jonathanherring2113
      @jonathanherring2113 6 месяцев назад

      @@mikk.t.7824
      Might be more accurate to say science is about "How"
      since "Why" usually involves moral or motivational questions which can't be answered from a purely Empiracle approach.
      Q: How did my house burn down?
      Science: "Because of a chemical reaction in genetically engineered fruit reached a temperature high enough to ignite the wood paneling of your house which provided ample fuel which combined with the airflow of the house provided oxygen allowing for combustion"
      Why did my house burn down?
      Reason: "Because you told Cave Johnson that sometimes life gives you lemons and he got angry and decided to use ridiculous methods to get back at you"
      Science is one of the disciplines and has limitations.

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

      i wish i could buy the paid ones (i don't have a job though)

  • @seanolson6958
    @seanolson6958 Год назад +1009

    For anyone else that encounters mobs sticking to the player when they collide from above, be sure to disable all moving platform layers of the `CharacterBody2D` nodes. In the Inspector panel of the `CharacterBody2D` nodes for both the player and mob, expand `CharacterBody2D` > `Moving Platform` and disable all layers in `Floor Layers`.

    • @balas2cents
      @balas2cents Год назад +48

      Thanks for this fix.

    • @Gdquest
      @Gdquest  Год назад +147

      @seanolson6958 Thanks for contributing and being around.

    • @miadietrich7347
      @miadietrich7347 Год назад +26

      This worked, thanks! What's the explanation for why this worked, though?

    • @Gdquest
      @Gdquest  Год назад +191

      What triggered this behavior is that by default, Godot 4 has calculations to detect moving platforms, for side-scrolling games.
      So if a character is on top of a moving platform, it'll move the character with the platform.
      In this case, when the slime walks above the Player Character, Godot thinks that the Player is a platform and the Slime is on top of it so it moves the Slime with the Player Character.
      Ideally, in Godot, the "Moving Platform" should not be on by default because it doesn't make much sense outside of platformers.
      Thanks @seanolson6958 for sharing the fix with everyone. I'll try to add a caption for it in the video.

    • @miadietrich7347
      @miadietrich7347 Год назад +16

      @@Gdquest This makes perfect sense, thank you for the explanation!

  • @Toon_Pirate
    @Toon_Pirate 10 месяцев назад +30

    Truly one of the best tutorials I've ever followed. I usually give up after 30 minutes due to bad or confusing directions and getting stuck, but I had no problem following along with this one all the way through. And I'm really happy with the results that's given me a good foundation to build upon!

    • @NathanThomson
      @NathanThomson Месяц назад +1

      totally! Great tutorial

    • @monke1340
      @monke1340 21 день назад +1

      Fr though, I have the exact same experience

  • @kevinle6454
    @kevinle6454 7 месяцев назад +70

    I have seen a lot of comments regarding the fact that they are taking constant damage/losing health no matter what is happening, so I'm commenting here to help future people.
    Basically you have to change your player hurtbox collision mask to that of the collision layer of your slimes(a lot of people seem to have missed this part of the video 1:44:00). The reason why you were taking constant damage was probably because your player collision layer was set to 1 while your hurtbox collision mask was set to 1 by default, so your hurtbox will constantly detect the player and hence constantly damage you.
    Hope this was helpful

    • @SamSevenUp
      @SamSevenUp 6 месяцев назад +4

      I had changed the visibility mask and not the collision :x (I lost 30 minutes)

    • @butterdog-ew4zg
      @butterdog-ew4zg 6 месяцев назад

      Thank you so much. upon rewatching this part, i remember seeing these settings being made but somehow forgot to set them myself.

    • @HighImHorizon
      @HighImHorizon 5 месяцев назад +1

      @@SamSevenUp lol i did the same thing

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

      YOoowww Thankyou so much i was researching for about 30min on why this happens.

  • @kosotoru2321
    @kosotoru2321 Год назад +34

    This is huge, I picked up Godot a few days ago and watched a bit of a different tutorial but never actually made any progress because of how overwhelmed I felt. Today I decided to give it another chance and you guys upload this. Thanks!

  • @crazyspaces91
    @crazyspaces91 6 месяцев назад +9

    I'm only 30 minutes in, and I have to say this tutorial is excellent. The second you bring up something where I'd like more context or something explained a bit more in-depth, the very next breath is you doing exactly that. Bravo, sir. You have taken the teacher role seriously and passed with flying colors.

  • @awfyboy
    @awfyboy Год назад +53

    The use of path2d to spawn mobs was very smart! Great tutorial. I've been using Godot for 3 years and have even finished a game, and yet I've learned a lot of new techniques from this video.

    • @Gdquest
      @Gdquest  Год назад +16

      That's really very nice to read. It's exactly the balance I was hoping for the tutorial between being accessibile to beginners but still useful to experienced devs. Thanks a lot.

  • @diegoandradex12
    @diegoandradex12 11 месяцев назад +162

    This was one of the best videos on the channel. Here are some questions about how we could improve the game, like Brotato style, I mean how we could start these:
    1 - How to add a wave system?
    2 - How to add upgrade items?
    3 - How to make enemies drop coins to buy items?
    4 - How to make trees breakable and drop items?
    5 - How to make a home screen, with settings and character selection?
    6 - Create character properties and update as items are picked up?

    • @natecooper01
      @natecooper01 10 месяцев назад +13

      This was a tutorial, these are good follow on questions that I'm looking forward to learning more about as well. I'd add:
      1 - How to add multiple enemy types and randomly spawn them
      2 - How to add multiple items/weapons and randomly spawn them
      3 - How to add item tiers, e.g., normal, rare, legendary

    • @real_rob251
      @real_rob251 10 месяцев назад

      Will you cover these at some point?

    • @kaus05
      @kaus05 10 месяцев назад +35

      ​@@real_rob251 nah bro go ahead and find them on your own itll be more fun

    • @Deathzuki.
      @Deathzuki. 7 месяцев назад

      yeah please do these things it will help a lot of people including me GDQuest!!

    • @Deathzuki.
      @Deathzuki. 7 месяцев назад

      yeah please do these things it will help a lot of people including me GDQuest!!

  • @FilenameNULL415
    @FilenameNULL415 Год назад +151

    I really like the Godot Engine. This tutorial really helps for a lot of begginers. You're making a good job!

    • @Gdquest
      @Gdquest  11 месяцев назад +15

      So glad it works well :)

    • @its_mahabubur
      @its_mahabubur 5 месяцев назад

      @@Gdquest i have a problem when i fully swap up the vertical bar in 1:52:46 my color gone to fully white . It doesnt make my color colorful help me

  • @miadietrich7347
    @miadietrich7347 Год назад +49

    I went from launching Godot for the first time to completing this tutorial in just a few hours! This is really exciting, and so much more accessible than my attempts with Unity. I also found all the easter eggs, what a clever way to earn discounts. I applied them all, and have preordered the courses for next year. :)
    It's clear you're all very passionate about how to teach in the most effective ways. I'm really impressed, and looking forward to the rest of this journey. Thank you!

    • @Gdquest
      @Gdquest  Год назад +17

      Thanks a lot for taking the time to write this. It's a refreshing coffee break in the middle of burning the midnight oil.

    • @CaptainDouchie
      @CaptainDouchie Год назад +2

      whats the easter eggs if u dont mind sharing xD, im trying to purchase the course as a gift for my friend who will be studying game dev next year

    • @forestgames03
      @forestgames03 Год назад +1

      ​@@CaptainDouchie he asked not to share it + to watch the video if you want it

    • @Gdquest
      @Gdquest  Год назад +5

      Thank you for respecting that :) The intention is not to prevent anyone from getting the coupons. It's to encourage everyone to compete the tutorial.

    • @Xonides
      @Xonides Год назад +3

      @@Gdquest I can assure you that folks like myself will watch it twice simply because we missed the coupons.
      I didn't realize until over halfway through the video that the whistling was supposed to be a cue to look for the code. I thought it was my roommate trying to distract me or an ad on one of my other windows.

  • @yeiskelcisneros2298
    @yeiskelcisneros2298 Год назад +18

    This was such a great start in game development. I was looking for an updated tutorial and a Vampire Survivor style project was an amazing idea. Thanks!

  • @Temple_Cloud
    @Temple_Cloud Год назад +68

    Just want to confirm this is a great tutorial and worth the time. It is split up into sensible chunks, so you don't need to watch the whole thing in one go and can easily go back and review.
    The author is obviously experienced at teaching and I felt there was has high empathy toward the student (compared to some other tutorials out there). It can be daunting learning a new complex UI with a plethora of options, but GDQuest does a really great job of making sure you understand what he is doing and why.
    So all in all... Great tutorial! I agree with the others, definitely something fun you can do on a lazy Sunday afternoon! Super fun!
    Thanks GDQuest! Great job...
    PS: I also had to do two runs of the vids! I missed the 'Easter Eggs' on the first run because they pop up real fast and I was poking around in Godot! So pay close attention! There is a little 'whistle' when they pop, so if you hear one of those - make sure you are looking at the tutorial, not you Godot editor!

    • @stevenrivera6464
      @stevenrivera6464 11 месяцев назад +1

      I'm glad I'm not the only one this has happened to! I've counted 3 coupons, is that right?

    • @Temple_Cloud
      @Temple_Cloud 11 месяцев назад +1

      @@stevenrivera6464 - I had to go look at my notes... but it looks like there are 4. At least that appears the case when I did it.

    • @stevenrivera6464
      @stevenrivera6464 11 месяцев назад +1

      @@Temple_Cloud - ah, thanks for that!

    • @aydnsafi2054
      @aydnsafi2054 8 месяцев назад

      what are those coupons? for discount?

    • @Temple_Cloud
      @Temple_Cloud 8 месяцев назад

      @@aydnsafi2054 - -It was, however I think they no longer apply. I believe they have expired and are no longer valid.-
      Edit: Looks like I was wrong! See below. Maybe is the best option is to just collect 'em and have a go!
      Still worth looking at the tutorial though! It is a corker.

  • @persononyoutube3000
    @persononyoutube3000 Год назад +4

    This is really great. As a programmer that's used Unity casually in the past, I've taken a few half-hearted stabs at Godot in the past and never really understood the "scenes and nodes" paradigm. A hands-on project format like this really helped. Now I feel like I have a pretty solid foundation of Godot and can continue on from here. Thanks for this.

  • @Gatrehs
    @Gatrehs Год назад +9

    For anyone with as terrible hearing as me: at 29:40 he's saying Ctrl+D
    A second note on that, it doesn't select all instances of the text, you might have to press it multiple times.

  • @ItsUnderMotion
    @ItsUnderMotion Год назад +5

    I just subscribed yesterday after going through your Godot 2021 series for a few days and successfully making the Dodge the Creeps game, and this is the first new video I see on my feed. Best surprise ever! Thank you for making Godot so accessible to aspiring game devs!

  • @kazabon_
    @kazabon_ Год назад +9

    I want to thank you and the team for all the time and effort you put into these videos and content, it feels so goo to create the first project on the journey of Game Development! Rivers of Gratitude

    • @Gdquest
      @Gdquest  Год назад +4

      Thank you for writing. It feels nicer to work knowing people enjoy what we make.

  • @-Kailinn-
    @-Kailinn- Год назад +4

    You did a great job making this really engaging, I didn't intend to get through so much since I go back to work tomorrow after a 2 week break. I started and the time went so fast I didn't realise I was close to done already. Thank you.

  • @marcusstrout
    @marcusstrout 6 месяцев назад +2

    16:59 In order to close the Current Scene window, the key command is F8 (for those wondering how he was able to close the window without clicking anything).
    1:04:55 The quick switch to the Rotate tool is done by pressing E. Hovering over the icons in the top of the View window will display their shortcut keys.

  • @BinaryBolias
    @BinaryBolias Год назад +198

    A few notes, _generally pertaining to optimizing this project,_ based on my personal preference:
    *-* References to existing objects, such as _"HappyBoo"_ for the player character, can instead be done via an _@export_ variable to allow for greater versatility; if the node changes location in the scene tree, for instance _(even without a unique name),_ Godot will automatically update corresponding _@export_ variable entries. *(@export var happy_boo: Node2D)* This also makes changing the referenced object easy, and not require an update to the script.
    *-* Function calls pertaining to animation, such as the player character's, can be done from _func _process()_ rather than _func _physics_process()_ for efficiency, as the latter tends to be run more often, so purely visual effects would generally be better handled within _func _process()._
    *-* It may be desirable to use a static variable for the enemy's reference to the player character, though I rather use a normal variable I named "target_node" _(instead of "player"),_ which I could change on a per-enemy basis to define arbitrary locations for each enemy to travel towards, which I can use to give enemies more interesting behavior. Enemies could, for instance, randomly decide to travel to nearby trees, or other nearby enemies, or could additionally have behavior for moving away from the target, and thus randomly travel away from a nearby enemy or tree instead.
    *-* _@export_ variables may be good to have for packed scenes as well, such as the gun's bullet scene. *(@export var bullet: PackedScene)* Godot will handle updating the scene reference when the file path is changed from within the Godot editor.
    *-* Instead of setting both the _global_position_ and _global_rotation_ of a newly spawned bullet individually, the _global_transform_ value (which includes rotation and position) can be copied from the gun to set _position_ and _rotation_ at the same time.
    *-* An excuse to introduce the functionality of _Path2D_ and _PathFollow2D_ is nice, but I prefer to use a bit of math and get a proper circular border to spawn enemies on. What I did was create a new "CreepSpawner" scene inheriting from _Node2D,_ and with a single _Timer_ child node to handle spawn timing. The _CreepSpawner_ has an export variable for what kind of enemy it spawns _(multiple enemy types could hypothetically just be done with multiple spawners),_ and another export variable for its desired spawn radius. When its timer elapses, it chooses a random angle with _randf_range(0.0, TAU),_ then turns that angle _(spawn_angle)_ into a position based on radius _(spawn_radius)_ with _Vector2(spawn_radius, 0.0).rotated(spawn_angle)._ I can then just have the _CreepSpawner_ be a child of the player character; a new enemy has its _global_position_ set to the spawner's _global_position_ plus the randomly chosen position. It might sound like a lot, but it's basically just two extra lines of code in the enemy spawning function, rather than dealing with any _Path2D_ node. Using a wide, rectangular path as shown in the video produces uneven spawns, as most of the path is angularly concentrated toward the top and bottom and corners; a square would be less bad, a regular hexagon less still, but a circle is perfect. Side-note: My function to choose an angle does happen to be minutely biased to the angle of 0, as TAU radians is equal to 0 radians, but it's impossible to observe in practice.
    *-* The "Motion Mode" of player character and enemies should be set to "Floating".

    • @Craulback
      @Craulback Год назад +9

      Very helpful, thanks!
      Although func _physics_process is synced to the "physics ticks per second" you set in project settings (default 60), and func _process is run as fast as possible on every rendered frame.

    • @alejmc
      @alejmc Год назад +2

      As a totally newcomer explorer to all things Godot, this post is amazing as it answers many questions I had.
      I was feeling very uneasy with too many ‘preload’ and ‘nodes’ string based lookups… as it seems that any change: the hierarchy or renaming the nodes would create problems right away.
      There was still that ‘has_method’ one though, will see about that later.r
      Don’t get me wrong, this tutorial has been great, I even like the Path2D idea as it gives artistic freedom to any designer to create crazy spawn paths if need be; but there are definitely so many things I would like to know more about… GDScript seems to work perfectly with the existing built-in functionality but will have to dive deeper into more custom tailor made things.
      Is it easy to make a pool that reuses bullets? Do we have to or in Godot is fine without them (as it’s reference counted)? Using a full IDE like Rider? Etc

    • @BinaryBolias
      @BinaryBolias Год назад +8

      @@alejmc For a bullet pool, the bullet-firing weapon could be provided with its "pool" of bullets _(as child nodes)_ on startup, with each of these bullets able to be "active" or "inactive".
      Instead of instantiating a new bullet each time one is to be fired, the weapon would need to find one of its inactive bullets to activate and shoot, with each bullet merely deactivating itself instead of freeing itself from memory upon hit or age-death.
      Maybe the weapon could simply have an integer variable for which index value (of its child array) to be looking for an inactive bullet at, and increment this value by 1 whenever it sucessfully fires a bullet or notices the corresponding bullet at the index is already active.
      *Alternatively **_(likely a lot better),_* the fired bullets could send signals to their corresponding weapon when they deactivate, and the weapon could have an internal array of unfired bullets. _The signal sent would include a reference to the bullet node itself._ In this case, the gun would fire the last element of this array _(removing from and adding to end or arrays is most optimal),_ thus activating the bullet and removing it from the array, and any bullet which sends its deactivation signal to the weapon gets added back to the end of the array. The weapon can thus only fire if the size of this "inventory" (or "bullet clip/magazine") array is nonzero.
      This system minimizes the instantiation and deletion of objects, which could be quite nice for performance, but it _of course_ introduces stricter limitations on how many bullets can be active at once.
      I think such limitations could be an elegant aspect of design, especially if incorporated diagetically, such as, _in this case,_ with a gun which isn't resupplied from external sources, but rather has limited ammunition which (magically?) travels back to the gun after having been fired, or perhaps instead a magic staff which must continuously provide energy to all active projectiles, and thus has a limit to the quantity of them which are simultaneously active.
      Otherwise, Godot seems to have nice garbage management systems. Anything inheriting from _RefCounted_ is automatically cleaned up when no longer referenced, and the _queue_free()_ function is generally a good option for nodes and such.
      *The online documentation with extra information and tutorials can be found at docs.godotengine.org*
      Bonus idea: Enemies with enemy spawners as children. Maybe enemies can create _(temporary)_ paths as they walk, which additional enemies may spawn from.

    • @alejmc
      @alejmc Год назад +1

      @@BinaryBolias that’s quite a complete take on pools! Thanks!
      Could call for a generic pool management, maybe even Godot internal for all things pooling.
      In a full production environment I think I would go for enemies, bullets, VFX, etc to be as such.

    • @Gdquest
      @Gdquest  11 месяцев назад +58

      I hope you stick around. Some of the choices made in the tutorial were deliberately aimed at simplifying the cognitive load but many of your observations lend themselves to an excellent second iteration. Thanks for posting them.

  • @kalgorian
    @kalgorian 11 месяцев назад +8

    Thy for the Video. I'm 50 plus and just started to learn this kind of stuff. Great tutorial for beginners. Looking forward fore more.

    • @Gdquest
      @Gdquest  11 месяцев назад +1

      Awesome! I hope you have a lot of fun with making your own projects. You're welcome to join our Discord server and share whatever you make. Some people are extremely helpful with feedback and sharing what they learn. You can find the invite in the description.

  • @HistoryUnveiled310
    @HistoryUnveiled310 Год назад +5

    Thank you so much for this amazing video. Was waiting for a Godot 4.0 tutorial for so long. Great job by you guys and Nathan especially.

  • @KnochenMarkSaege
    @KnochenMarkSaege 11 месяцев назад +2

    This is one of the best tutorials for development I've ever seen.
    Thank you so much for all your content & the app to get started with GDScript.
    Also, explaining all these shortcuts when you need them is a blessing on it's own.
    It feels so intuitive to use the Godot engine :D

  • @felipecorrea6472
    @felipecorrea6472 Год назад +10

    I started learning Godot this week and a vampire survivor like was first little project I wanted to do, I searched for a tutorial literally the day before yesterday, thank you guys

  • @Snoows-bu4oi
    @Snoows-bu4oi 11 месяцев назад +1

    The more time passes, the more I love Godot. My first little game! Really great, thanks again and keep it up, your channel is awesome !!!!

  • @WesCrockettCA
    @WesCrockettCA 10 месяцев назад +5

    Was able to follow this tutorial really easily. Even added in tree-spawning directionally (so they spawn randomly but only in the direction I am currently moving).
    I plan to customize it too, to show spawn counts and kill counts as well as have the gun follow the mouse rather than getting the nearest mob. I think doing simple customizations like this will really help understand the logic.
    The only area I got tripped up with was collision layers/masks. I missed the step to set the hitbox collision layer and it took me a while to figure that one out.

    • @Gdquest
      @Gdquest  10 месяцев назад +2

      Thanks for highlighting exactly where you had an issue! This allowed me to go back and watch the editing there and think about the recording and how to improve it.

    • @WesCrockettCA
      @WesCrockettCA 10 месяцев назад +1

      ​@@Gdquestfor sure! I think a little demo showing what happens if you have the wrong layers set. In my issue, my PLAYER was set to the wrong layer and it caused damage to itself. When I had damage set to 500 I would insta-die on load.

    • @Gdquest
      @Gdquest  10 месяцев назад +1

      That's really great info! Thanks a bunch.

  • @MrDinoc
    @MrDinoc 9 месяцев назад +1

    what a well presented tutorial. i feel so confident after watching this.

  • @potinhuu
    @potinhuu Год назад +7

    This is the best tutorial that i've seen so far. even moderate devs can learn much on this one ! this is GOLD. i'll share with every dev i see

  • @supjay3945
    @supjay3945 10 месяцев назад

    This tutorial is the most friendly to follow I have attempted. I was able to follow along without issues as far as instructions. I paused it a few times to input the codes and I did not finish in one sitting, but was able to pick up without issues. I have seen videos that jump around too quick or move there mouse too sudden. Thankyou

  • @aFriendlyPest
    @aFriendlyPest Год назад +4

    Thank you for this. I completed your free starter coding program and now this tutorial. I feel like most of the lessons I find make me feel a sense of hopelessness and frustration. Your lessons are thorough enough that I generally find success and learn something with every action, even if I don't remember 50%.
    Maybe someday I will look back on this comment from a position of a successful developer and smile. IDK. Thank you

    • @Gdquest
      @Gdquest  Год назад +4

      Thank you for writing this. Please keep going and don't give up. Most roadblocks to understanding are a matter of finding the right explanation for you. I think of it as a long term treasure hunt or quest 😉 where you keep track of the areas that are still fuzzy for you and you flag them as subjects for which you're still looking for an explanation that works for you.

  • @carlmeyer96
    @carlmeyer96 8 месяцев назад +1

    This is such a great tutorial. Thank you so much! As someone that does programming full time this hits the sweet spot between explaining enough learn godot but not spending too much time explaining the basics. I have really enjoyed following along and looking forward to expanding the project using my own sprites!

  • @MultiLeandrini
    @MultiLeandrini Год назад +4

    I just installed Godot (came from unity) and I followed this tutorial and learned so much.
    There's a few requests I have:
    -Spawn trees as you move around, but not on places where you've already been.
    -Shoot on click and on the mouse angle.
    -Display score.
    -Pick up bonuses to improve the bullet power.
    Some of them I know how to implement some I don't.

    • @Gdquest
      @Gdquest  Год назад +1

      Thanks for the suggestions

    • @guillermoesparza3783
      @guillermoesparza3783 Год назад

      Yeah I'm trying to figure out a good way to implement random object spawns as well as bonuses both seem tricky. I think having a guide on how to build modular systems can be a great video as well!

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

    Hands down the best Godot tutorial I watched... I started this week making a bullet hell vampire survivor game but felt a bit stuck. This helped a ton and I have tons of ideas on how to build on it. Thanks

  • @phatman808
    @phatman808 Месяц назад +3

    For anyone who has a problem with the layer and mask setup for the gun not detecting slimes, I had to delete and re-add the Gun node to the Player node for it to work right. For whatever reason it would only work if I had the mask and layers set on BOTH the Gun node itself AND the Gun node that was a child to the Player node, but after removing it from the Player node and re-adding it, it worked as the tutorial showed.
    I've read of similar problems in other projects, I don't know if there's a way to update/reload/purge cache/whatever besides deleting and re-adding that would fix this.

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

    Thanks for adding sound effects when discount code is on screen

  • @gggeese2982
    @gggeese2982 10 месяцев назад +6

    If anyone had a problem with the character dying for no apparent reason, the reason is that the mask was not removed from the HurtBox (mask 2 for mob)

    • @Numpkins
      @Numpkins 7 месяцев назад

      thank you. I knew it had to be something with the mask but couldn't figure it out.

  • @Jell0yee
    @Jell0yee 8 месяцев назад +1

    This is the best godot tutorial I’ve seen! I like that it shows what to do and why to do it and sadly lots of other tutorials don’t do this

  • @hithisisandreas
    @hithisisandreas Год назад +4

    Wow, this was super fun and really empowering! I can't wait to apply this to a solo project! Thanks GDQuest! ❤

    • @Gdquest
      @Gdquest  Год назад +1

      Thanks a lot for writing this. I hope you showcase your project in the Discord server. It's always nice to see where gamdevs start and what they end up making over time.

  • @arnaudmulton3161
    @arnaudmulton3161 7 месяцев назад

    There are many godot tutorials on youtube and how-tos but none so finely detailed and as clear as yours, you got a new subscriber. Very high quality video

  • @betadyne9559
    @betadyne9559 Год назад +7

    Such a good job you guys are doing ! It's been almost a year since I started thanks to the similar video you released in Godot 3.5 that really helped me make things click ! I reached a level now where I think I should be the one doing tutorials on some advanced code structures !

    • @Gdquest
      @Gdquest  Год назад +1

      So heartwarming to read that!

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

    what i love about this is that you are a great teacher. you have a great grasp on what someone who doesn't know any coding would know and work from there. you don't assume external knowledge. you work step by step but include dead ends so we can backtrack and understand why we do certain things. when i see a 10 minute tutorial, i know i'm going to spend twice that time with the video paused trying to understand the code i just copied. You do a great job of demonstrating why you take every step. subscribed.

    • @Gdquest
      @Gdquest  Месяц назад +1

      Thank you for having taken the time to write to tell me this. I really appreciate it!

  • @Lansamatv
    @Lansamatv Год назад +4

    Please continue uploading tutorials like this, also board games like billiards and chess and implement multiplayer in the games, thank you very much ❤

    • @Gdquest
      @Gdquest  Год назад +1

      Thanks for the suggestions :)

  • @CrowStealer
    @CrowStealer 3 дня назад

    Keep up this way of teaching , you are very easy to follow and have a nice vibe. Keep up the awesome work! Cheers!

  • @DrunkenLeaf
    @DrunkenLeaf Год назад +4

    I had no idea that the access as unique name was a thing. that's killer for onready variables so I don't have to worry about re assigning the node path every time I reorganize my node tree.

    • @MrEnvisioner
      @MrEnvisioner Год назад +3

      You can also export statically typed node variables to likewise get a node regardless of path. Pro: it works in any scene. Con: you have to assign the path in the Inspector ahead of time. Example: `@export var my_sprite: Sprite2D`.

  • @asmitsaxena5387
    @asmitsaxena5387 10 месяцев назад +1

    I just wanted to say , that , I've completed very short (just adding trees in the scene and before) and the tutorial is so well explained , it carries developer tips to quickly improve , and makes coding easy too , I had never found any tutorial that good , If you want to learn godot , It is highly recommended

  • @rockyhitcha9604
    @rockyhitcha9604 Год назад +21

    1:31:44 Hi, I noticed a small tweak that might help. Try swapping these two lines of code:
    %ShootingPoint.add_child(new_bullet)
    new_bullet.global_position = %ShootingPoint.global_position
    This should give us the effect we’re looking for. Keep up the great work!

    • @kristianlovealot
      @kristianlovealot Год назад +3

      I had an error here ... Found out my mistake was that I wrote "$ShootingPoint" instead of "%ShootingPoint"... silly me...

    • @six5618
      @six5618 11 месяцев назад

      Thanks man this was driving me crazy! I was wondering why my bullets kept spawning away from the gun.

    • @GameFolklore
      @GameFolklore 10 месяцев назад

      @@kristianlovealot Found out my mistake was that I wrote "%shootingPoint" instead of "%shootingPoint"... silly me...

    • @samuilzaychev9636
      @samuilzaychev9636 9 месяцев назад +2

      @@GameFolklore Thats the same thing though. If you were talking about his reply in the first one a "$" is used instead of a "%"

    • @shado905
      @shado905 9 месяцев назад

      I had no idea why the bullets werent working. Thanks!

  • @Gridfen
    @Gridfen 5 месяцев назад +1

    Really impressed with this course, while simple and understandable, it goes through all important parts and why-s of how things done and for what reasons there are X and Y features, and how to use them. For a fairly experienced dev without any gamedev experience this was quite informative as a godot intro and overview of baseline features needed in likely every game possible.

  • @xelonix_
    @xelonix_ Год назад +3

    Great job as always! I will be learning this during the holidays!

  • @speedylom1170
    @speedylom1170 11 месяцев назад +1

    This is an amazing tutorial! I learnt a lot of ways to do things simply via existing Godot systems that I just didn't know were there.
    Thank you so much for taking the time to create this 😁

  • @diruthewinner
    @diruthewinner Год назад +6

    I use POP os too and I only know one youtuber that uses linux for game development - GDquest!

  • @tonyhacker932
    @tonyhacker932 9 месяцев назад +1

    i can't tell how usefull it was I was stuck on my second project searched answer every where but I got my answer here love your video

    • @Gdquest
      @Gdquest  9 месяцев назад

      Really glad to know it was helpful to you :)

  • @JxtoGames
    @JxtoGames 7 месяцев назад +3

    For y_sort_enabled, the shadows appear in front of the player when the player walks above the tree. But the shadows should always be behind the player. How do you do it such that y_sort_neabled doesnt affect certain child nodes of tree, like its shadow?
    Edit: I figured it out. Basically the z index is the ultimate in figuring out which gets drawn in front of what. Higher z index means will be drawn first. Ysorting only applies if something is on the same z index as another.
    So what I did was to change the z index of the shadow of the tree to be -1. This makes it such that the shadow will always be rendered behind the player, trees and the white background. Since I want the shadow to be in front of the white background, but behind the player and trees, I changed the z index of the background to -2.
    So the z index for background =-2, shadow of tree and shadow of player =-1, tree and player = 0.

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

      Thanks for that! I scrolled down the comments a bunch ctrl+f'ing for "shadow" until I found this. I thought I couldn't be the only one it bothered haha.

    • @FieldmarshalDoob
      @FieldmarshalDoob 7 дней назад

      Thx, you saved me from my 1 hour suffering of why y sort dosent work

  • @karlitoo40
    @karlitoo40 8 дней назад +1

    Great tutorial. Well explained. I could follow easily without any godot knowledge 👍

  • @entropywastaken
    @entropywastaken 11 месяцев назад +3

    I literally had no prior experience when it comes to game development. I mainly work on robotics/computer vision with python/c++ etc. so I have decent coding experience but never touched any game engine. Just wanted to do something fun and this video helped me grasp the fundemantal concepts really well. Thanks for uploading this video!

    • @Gdquest
      @Gdquest  11 месяцев назад +2

      Thank you for taking the time to write and especially for sharing the bit about your background. It's very helpful to know who we're making this for.

  • @dingus4138
    @dingus4138 Год назад +1

    What crazy timing, I just picked up Godot a few days ago and have been building a VS like game and was running into some issues and then this video gets released today! Looking forward to going through this, thanks!

  • @WaterMelon-dump
    @WaterMelon-dump Год назад +6

    Hi guys, i got a problem at 1:14:21. The problem is that I specified all the parameters as in the video, but my gun does not change its position at all, can anyone help?

  • @Grafii2198
    @Grafii2198 8 месяцев назад

    Honestly this tutorial sparked my interest in making games, and it was really fun making it in godot, I tried many tutorials in the past for various engines but this is the one that clicked with me! Thank you so much for making it!
    Are you planning on making a part 2 for it? With more in depth mechanics like, stats, waves, perhaps even maps and most importantly levels and items. I think it is essential for these kinds of games and having a guide on how to do that would provide so much knowledge for creating so many things and not just the ones for the purpose of this project!

  • @Zyppeh
    @Zyppeh 8 месяцев назад +9

    My toxic trait is thinking I can actually do this

  • @Haddedam
    @Haddedam 9 месяцев назад

    This is a great tutorial and absolutely on a proffessional level compared to other amateur efforts. I finally understand what does what and why. And it manages to do the harder thing: not over explaining.

  • @GuyThatDoesStuff2604
    @GuyThatDoesStuff2604 9 месяцев назад +3

    Thank you for this great tutorial. However, I need some help with this problem I am facing. At 1:45:25 you start adding health to the player. When I type var overlapping_mobs = %HurtBox.get_overlapping_bodies(), the selection for a popup with get_overlapping_bodies() never appears, so when I run the entire game later when we finish it, it never works. I assumed that I set the area2d node or collision shape incorrectly, but after checking the scripts and redoing the code, it still would not run correctly. I would include the error message, but there wasn't any. Is there anything that I could be doing wrong?

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

    This was the most fun I've had in a long time, and I've been having a lot of fun! Thanks for the video.

  • @Mahti77
    @Mahti77 Год назад +4

    This is nice, but how is this "From Zero" if you have pre-build tscn-files to import? ;)

    • @ariton2990
      @ariton2990 Год назад +3

      True though. Might be an unpopular opinion but I hate when people do that in tutorials.

    • @Gdquest
      @Gdquest  Год назад +5

      It's about learning from zero. We provide learn gdscript from zero, for people who have never coded before, Godot tour 101 to introduce the editor, and then they can jump on to this, effectively allowing them to start learning from zero.

  • @ThatDarnLag
    @ThatDarnLag 5 месяцев назад +1

    Whenever I do tutorials, I say "make it my own", it's the best way to learn from them; At the end of the video he states "copy, customize, create". I love that he stated this and that has gotten an instant subscribe from me (also the tutorial itself was excellent and the best beginner tutorial for godot out there).

    • @Gdquest
      @Gdquest  5 месяцев назад

      Thank you for taking the time to write this! :)

    • @ThatDarnLag
      @ThatDarnLag 5 месяцев назад

      @@Gdquest The fact that you are also responding to comments on a 7 month old video astounds me even more! If I ever know someone learning godot, I will give them a shove in this direction too!

    • @ThatDarnLag
      @ThatDarnLag 5 месяцев назад

      Ok, I've been looking into your courses, and I honestly think that I will buy the big bundle. It looks amazing, I very much enjoyed this tutorial, the Kickstarter looked also very promising, and you were incredibly kind to me and all of your commenters. Keep doing what you're doing! And also, are you really a single person?

    • @ThatDarnLag
      @ThatDarnLag 5 месяцев назад

      Oh wow! You have even more incredible free tutorials on your website!

  • @ClumsyCars
    @ClumsyCars 6 месяцев назад +5

    >make a game from zero
    step 1; use our already created player

  • @thehansboi
    @thehansboi 5 месяцев назад +1

    that was really awesome, showed me a whole lot of features and i understood everything, i'm excited to go try making a game by myself now

  • @ColinBroderickMaths
    @ColinBroderickMaths 9 месяцев назад +9

    "From zero"
    "Here is a ready made project"
    Come on.

    • @cyborne0_0
      @cyborne0_0 6 месяцев назад +1

      The only thing he really did is animations and some basic character code, which you can probably learn somewhere else, this video was more about writing the code, and making the actual layout of the game from premade assets

  • @anveio
    @anveio 6 месяцев назад

    Best tutorial I've seen, I followed along and structured the code to my own liking and had everything working. Thanks so much!

  • @yeahitsmesofkinwhat
    @yeahitsmesofkinwhat 11 месяцев назад +5

    It kind of bothers me that you said "You should know at least a little bit of coding" then go on to explain what a zip file is and how to unpack it. Those two things are diametrically opposed.
    If you added in a corollary that this part is for beginners, or a timestamp to skip this part, I'd have less of a gripe.

    • @Gdquest
      @Gdquest  11 месяцев назад +2

      We provide a free course to learn code from zero in the video. We just don't want to slow down the video by having to introduce every code concept. Overall it's designed to be very accessible.

  • @Bytezawa0x7d3
    @Bytezawa0x7d3 6 месяцев назад

    Perfect tutorial for beginners who just read introduction of docs. Important functions are well explained with straightforward game example, helping audiences to establish clear understanding of how the game engine is used.

  • @Dran_Kito
    @Dran_Kito 8 месяцев назад

    Finally got around to working through this tutorial and it was great and easy to understand. I look forward to more in the future!

  • @11nephilim
    @11nephilim 7 месяцев назад +1

    Gotta say this is an *excellent* tutorial, I've been looking for more after finishing the Brackeys ones but kept running into "beginner" ones that failed to explain the "why" of things enough to really build an understanding of what's going on. After watching this though a lot of things started making a ton of sense!
    I managed to make a basic lil addition to the script that flips the gun sprite so it's not upside down when it goes to the left of the character! It might be a simple change but it adds some polish and it's the first new "feature" I've figured out how to code by myself! Gonna see if I can figure out how to implement more new stuff tomorrow... maybe a wave system? Should be fairly easy to check if all the mobs are dead and then set a timer until a new wave begins, and then increase the mob spawn rate each wave.

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

    wow, thank youuu so much! finally, my FIRST finished "game" by watching Godot tutorial (I've seen severals before, but always lost in the last few chapters). Thank you! I'm really a noob in game dev, just started like month ago with different engine. You guys really a big help! :) Thanks!

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

      Very glad it got you started on a good foot. Happy trails on your learning journey!

  • @parkerpierce8931
    @parkerpierce8931 11 месяцев назад +1

    Fantastic experience getting through this, learned a LOT!

  • @arioche
    @arioche 10 месяцев назад

    one of the best tutorials I have ever seen in YT. thank you.

  • @---bl3sr
    @---bl3sr 10 месяцев назад

    For a long time i've been wanting to learn godot and it seemed so daunting but this was a lot of fun! Thank you so much

  • @Imsooloveicecream
    @Imsooloveicecream 9 дней назад

    I watched full tutorial and everything worked for me, thanks for tutorial!

  • @infinite2692
    @infinite2692 11 месяцев назад +1

    Mission accomplished!
    Looking forward to advance now, thank you!

  • @pastpresence8173
    @pastpresence8173 11 месяцев назад +1

    Rougelites are one of my favourite game genres and I'm happy to be able to actually create one! I've had a lot of trouble dropping projects halfway because of complexity and being overwhelmed, so thank you lots for the simple and easy-to-follow tutorial! Can't wait to learn more ^^

    • @Gdquest
      @Gdquest  11 месяцев назад +1

      Very glad to read that! I hope you keep going. :)

    • @goldenwattle7863
      @goldenwattle7863 11 месяцев назад

      @@Gdquest does this code work in godot 4.2?

  • @MAUROdns
    @MAUROdns 5 месяцев назад

    This video is definitely worth watching twice. Once to take notes on the technical stuff and again to code along. Thanks for sharing the best basics tutorial!

    • @Gdquest
      @Gdquest  5 месяцев назад +1

      Thank you for the kind words. It makes the late nights worth it. 3D tutorial coming up!

  • @DGermishuizen
    @DGermishuizen 19 дней назад

    Amazing tutorial, really enjoyed it and was very easy to follow along !

  • @bearwater8747
    @bearwater8747 Год назад +2

    MY son and I are taking the week to learn this course. thank you so much for making this. We will let you know how it turns out

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

    took me another, 3 hours? after the tutorial finished to implement a kill counter(getting signal linked from the slime instances was trouble), add the score to the game over screen, make the slimes increase speed the longer theyre alive, AND add a restart button to the game over screen(which now also deletes the player when he dies, and causes the slimes to stand still). the fact that this one got my problem solving juices going is awesome. love it

  • @jordantangco9187
    @jordantangco9187 10 месяцев назад

    Absoutely incredible tutorial. I was getting super frustrated with Godot, but this has really helped me out!!

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

    This is an amazing tutorial. The code is really simple to understand and everything is straight to the point. Great content! Keep it up please.

  • @TheThescroll
    @TheThescroll 10 месяцев назад

    This was intuitive and easy to follow, I'm very impressed with the quality of the tutorial! Thank you for putting this together, this has inspired me to give Godot a shot!

    • @Gdquest
      @Gdquest  10 месяцев назад

      Very happy to hear that! Thank you for your feedback :)

  • @TJatBF
    @TJatBF 9 месяцев назад

    Great tutorial - really insightful.
    My top troubleshooting tips for anyone that's struggling are:
    - Check your spelling! And,
    - When Ctrl-dragging and dropping, check your paths match those on the tutorial! (I lost an hour looking for info on preloading when it was simply that the path hadn't copied in full)

  • @siamemex1555
    @siamemex1555 11 месяцев назад

    Thanks for the tutorial. Total beginner and I found it really clear and helpful. Brilliant.

  • @Mack_the_Knife
    @Mack_the_Knife 10 месяцев назад

    I was accumulating all of this info over days through forums and small tutorials and here everything is compact in one video. Guess i still learned some more but this would have been great 😅
    Thanks for the great vid!

  • @sashetha9548
    @sashetha9548 9 месяцев назад

    Exceptionally explained and easy to follow! Already thinking about some simple features I could try to implement from another tutorial. All in all, feel like I learned a lot in a very short period of time.

    • @Gdquest
      @Gdquest  9 месяцев назад

      Thanks a lot for the feedback :)

  • @thiagoknot
    @thiagoknot 7 месяцев назад

    Man, this tutorial is incredible, thank you so much

  • @DeviantPlot
    @DeviantPlot Год назад +1

    excellently done, Nathan! quite the upgrade from the oldie Dodge the Creeps tut :) this should go into the official docs and replace the previous one on the Getting Started section there.

    • @Gdquest
      @Gdquest  Год назад +2

      Thank you! I'm glad you liked it.
      We'd have to take GDQuest's name out if it were to go into the Godot Docs. That would prevent us from making a living and continuing to push content out.

  • @Hey_nice_shirt123
    @Hey_nice_shirt123 5 месяцев назад

    Thank you so much for the free tutorials on the website. You are amazing. You earned a new sub

  • @HighnessCuts
    @HighnessCuts 11 месяцев назад

    Completed this Tutorial. ❤
    Thankyou

  • @watdatu876
    @watdatu876 8 месяцев назад

    I'm going back to Godot development (started with Godot 3) and this is such an great Godot 4 tutorial. Even though I'm using C# in following this tutorial, the great explanation/tips in this tutorial and improved Godot 4 C# docs really helped me in my journey back to game development using Godot. Thanks!

  • @squanistthepixelartguy
    @squanistthepixelartguy 10 месяцев назад +1

    Very helpful. I want to learn Godot, and am planning to watch one of this kind of code-along video while doing it, then make something original using what I learned, and repeat. Seams to be an effective way to learn so far.

  • @spiderbro9496
    @spiderbro9496 Год назад +1

    You guys are the real heros

  • @ratboyboyrat
    @ratboyboyrat 11 месяцев назад

    Very good tutorial, thank you!
    Keep up the high quality content.

  • @ZackExxists
    @ZackExxists Месяц назад +2

    If you get to _physics_process(delta): in the video, as of 12/6/24 on Ubuntu 24, if Godot autocompletes to "func _physics_process(delta: float) -> void:" that's fine. just leave it as is and continue programming as normal.

  • @iceman9355
    @iceman9355 9 месяцев назад +1

    This was a genuinely amazing tutorial, i am basically a head empty baby when it comes to game dev, but thanks to you kind sir, i now know a great bit more than i did before. I tip my hat to you.

    • @Gdquest
      @Gdquest  9 месяцев назад

      Thanks a lot for letting me know. I'm really glad it helped. I hope it motivates you to keep going.

  • @drpainnuk3d
    @drpainnuk3d Год назад

    Awesome stuff man! Great vid as always! Looking forward to the course :)

    • @Gdquest
      @Gdquest  Год назад

      Thanks a lot for the kind comment :) :)

  • @tupuchandaa5192
    @tupuchandaa5192 День назад

    Hi, thanks for this tutorial and course, this was very clear! The very first that I listened to and watched first, then tried to apply it and copy. I'm heading to the next step for me: try and make a new mob or something like that to see if I understood correctly!
    Thanks for this ! :D