Пікірлер
@iqronegoro1538
@iqronegoro1538 2 күн бұрын
Enemy, geez
@VitMine777
@VitMine777 2 күн бұрын
How to make it that way, that when you tap enter while you're typing it basically saves the font and you are not typing in that Input anymore
@williamgessler6461
@williamgessler6461 3 күн бұрын
Before finishing the video I wanted to add a way for the player to die as I didn’t like seeing the negative numbers in my debug window 😂 I ended up having to adjust the match statement as well to not print endless “no weapon/player” messages. Else: Print(“no weapon/player) set_state(State.PATROL) To create the “game over” I added an if statement If health_stat.health <= 0: queue_free() print(“GAME OVER”) Thank you for the awesome tutorials! And I hope this helps someone.
@Juliaardbei
@Juliaardbei 3 күн бұрын
I struggled with this concept for quite some time. This tutorial was super helpful, and I really like how you send the 'level_name' argument with the signal to create a signal that's unique and very dynamic. I wanted to have multiple interconnected levels with two 'exits', so I experimented with also sending a 'trigger_name' argument, based on which new level I'm trying to access. It took a lot of fiddling, but it worked! Now it's super easy to add a new level, and put in multiple buttons/area2Ds to go to the next level. Thanks so much for this tutorial, it really gave me a better understanding of how to simplify my code and make it as dynamic and versatile possible. Awesome!
@williamgessler6461
@williamgessler6461 4 күн бұрын
Noticed around 9:00 when trying to add setget to the end of my export line I got an error. I typed the set_health function and simply deleted the setget bit entirely and my code is running correctly still. Not sure if it’s a syntax thing or I’m gonna run into issues later. Hopefully this helps someone else!
@williamgessler6461
@williamgessler6461 5 күн бұрын
Ran into an error when trying to run my game. The error says the provided callable is null Main looks like Func _ready Player.player_fired_bullet.connect(bullet_manager, “handle_bullet_spawned”) Im new to game making and these videos have been the best thing for learning how to use Godot.
@erniecooper
@erniecooper 5 күн бұрын
Thanks for this series. I'm watching/writing it the second time. Small challenge converting it to Godot 4 but not bad. My end goal is to make a game similair to 'Vagrus the riven realms'. Its mostly text, clicking on maps, simple combat scenes.
@wangfashuai
@wangfashuai 6 күн бұрын
GOOD!
@july_fish
@july_fish 7 күн бұрын
halfway through the tutorial! thanks a lot
@benbutcher2608
@benbutcher2608 9 күн бұрын
Just incase anyone is using Godot 4 and newer text_entered is now called Text_submitted
@theempire8461
@theempire8461 11 күн бұрын
🎩🧐🐕
@hopelives7469
@hopelives7469 11 күн бұрын
If you're a beginner and using Godot 4, this is where it ends.
@hijumiyuki6738
@hijumiyuki6738 12 күн бұрын
would you consider making a tutoriol on how to make a visual novol/dating sim from scratc
@gryzman
@gryzman 13 күн бұрын
good stuff. I wish these were open sourced so that we could all learn from it.
@MagicMaskedMonkey
@MagicMaskedMonkey 14 күн бұрын
damn now i can make my onkey throw hands
@jaywalmoose9623
@jaywalmoose9623 16 күн бұрын
17:48 Fairly sure it's pronounced like "Buska kyole" , and it's Irish for "Music box". The creator's surname sound pretty Irish, so it must be
@synder68
@synder68 20 күн бұрын
Just finished this video. Thanks godot 4 really has changed a lot of things, but its still fun following along.
@hijumiyuki6738
@hijumiyuki6738 22 күн бұрын
its signal_name.emit() in godot4 and not emit_signal
@jamajnasoares5702
@jamajnasoares5702 23 күн бұрын
10:11 You edited the code OUT OF SCREEN. SCUM.
@ykyjohn
@ykyjohn 23 күн бұрын
I have a main scene inside it there is a level scene and under it there are sceneA and sceneB. What I want it to communicate sceneA wuth sceneB, to be more specific I want to access a node from sceneB from sceneA.Need to grab its reference that way I could have every other access down from that node. godot should just have a simpler way to do that, as we do inside a scene with nodes. found this video hard to understand, can't get the bigpicture right the way. Need to be clear what the main scene is, and what scripts are attached to which node. Iguess what you did was to have the main scene in the root node grab information from a scene and save it in a variable, then you just passa it on to another scene in the time it is created in the scene tree. As doing this way you do have its reference that way it is easy to do. In my case the scenes were added prior game launch, so it means there is no reference from those scenes. I think it is really dumb not to have a specific way to communicate between scenes as we do with nodes. It is such obvious features and the access would not break anything as it would be an specific access in a very specific moment. As it seem godot does not offer such a direct feature we must use more memory and do much mote work to do just a simple task.
@Dragon20C
@Dragon20C 23 күн бұрын
I am having an issue where when finding a path it returns an empty array with no warnings, I tested both the start and end points and astar provides values from them but no path is created, what could be the issue?
@Dragon20C
@Dragon20C 23 күн бұрын
okay I fixed it, it seems it was not calculating the points around, in the connect points function.
@roundninja
@roundninja 26 күн бұрын
I'm still having trouble with CommandProcessor.gd line 36 at 15:30, I'm trying to get it to work in Godot 4 with a packed string array but I keep getting errors.
@cosmicrenegade
@cosmicrenegade 29 күн бұрын
Watched the entire series and dropped a like on every video. I came from Unity myself, and it's incredible how much you were able to explain Godot concepts with a very simple text adventure game. I can also tell you're a really experienced programmer based on how you teach (not just a guy who knows how to code like me). Thanks to you, I feel like I have a solid enough foundation for Godot functionality-wise to begin expanding with different prototypes for my game. I can't wait to watch more of your videos!
@user-ss9lw9mf8k
@user-ss9lw9mf8k Ай бұрын
Can someone give a code for Godot 4?
@sakitakramsumit9989
@sakitakramsumit9989 Ай бұрын
how u open the game pls say
@toonor360
@toonor360 Ай бұрын
Great series!! Loved the fast pace. Definitely my favorite tutorial vids I've seen so far! I followed along with Godot 4 which added some extra challenge that made it even better!!
@CellarPhantom
@CellarPhantom Ай бұрын
Frikking awesome! Did you ever release the third video with adding dynamic obstacles?
@CellarPhantom
@CellarPhantom Ай бұрын
I managed to do it myself. with a similar function as add_point(pos: Vector3), but erase_point(pos: Vector3) instead. Used for placing object in real time (in running game). if astar.has_point(astar.get_closest_point(pos)): astar.remove_point(astar.get_closest_point(pos)) points.erase(world_to_astar(pos)) if debug_mode: _remove_nav_cube(pos)
@CellarPhantom
@CellarPhantom Ай бұрын
Awesome man! I followed this tutorial using Godot4, and instead of using meshes I used a gridmap and got point positions for every cell (they are small cells like in Minecraft). Thanks a ton!!
@The_Foreman
@The_Foreman Ай бұрын
The only thing I'd say that's desperately missing from this series is the dangling fruit that was in editor gui based exit creation. I'd look it up elsewhere but my only lead is when we turned Room into a Tool and the warning about how dangerous messing with that stuff was.
@jayman1462
@jayman1462 Ай бұрын
is there anyway to do this without doing the whole new child thing and having the scene switcher always be the root? i came here to find this out, and don't want to have to restart my entire project, but i also don't want to use singletons--for the reasons stated.
@nalbakri
@nalbakri Ай бұрын
For the life of me I can't get the "refactoring change_room" bit to work. I managed to translate the PoolStringArray to PackedStringArray as per Godot 4.2 and it's not throwing me any errors. But if I try to run the program after removing signal response_generated(response_text) it crashes straight away with the error "Invalid get index 'response_generated'(on base: 'Node(CommandProcessor.gd)')." If I add that back in, it runs but doesn't show the room description or exits. Anyway, here is the code that I'm using and any help on the response_generated problem would be greatly appreciated. func go(second_word: String) -> String: if second_word == "": return "Go where?" if current_area.exits.keys().has(second_word): var change_response = change_area(current_area.exits[second_word]) return " ".join(PackedStringArray(["You go %s." % second_word, change_response])) else: return "There is no exit in that direction!"
@nalbakri
@nalbakri Ай бұрын
Well, I watched the rest of the video and managed to get my description text back. The code I used works apparently, but only if I leave in response_generated(response_text).
@charles-philippebernard51
@charles-philippebernard51 Ай бұрын
Thanks a lot, it has explained a lot to me. Just one thing, wouldn't it be simpler to have one Record bus muted and with a Record effect? I got it working that way
@themonamoua
@themonamoua Ай бұрын
In Godot 4 9:02, you add @ to export and take off (String). This should be the updated format example below: @export var GameRoom_name = "Room Name" @export var GameRoom_description = "This is the description of the room."
@bitnewt
@bitnewt Ай бұрын
I love TypeScript too and often wish I had some of my TypeScript features in GDScript. The way to use an enum as a static type is so useful, thanks!
@YMPancakes
@YMPancakes Ай бұрын
This was a huge help! Thanks so much for helping me from the past!
@ohcomeonism
@ohcomeonism 2 ай бұрын
Loved the series! Thanks so much, loved following along and getting to know Godot better.
@updownbanana
@updownbanana 2 ай бұрын
Hi, great tutorial overall, but some of your math in difficulty scaling is wrong. The goal was to add 0.125 to enemy speed every difficulty tick, but in order to level out the speed you instead added 0.125*difficulty on every tick. You didn't notice because your method still kept the speeds in sync and the clamp kept it from getting ridiculously high, but when tested you can see that the enemy speeds cap out at around difficulty 7 instead of at 20 like they were supposed to. The correct thing to do here would be to add 0.125*difficulty ONLY when the enemy spawns, and then continue just adding 0.125 every tick. Not sure if my input on a 3 year old tutorial for an old version of godot matters but might as well say it anyway lol
@lohhaoyi555
@lohhaoyi555 2 ай бұрын
Thanks for this whole comprehensive and well-thought out tutorial , managed to implement the additional third word component too , was a bit of a stretch but proud of myself when I managed to do it. 😁
@3kkousedflash246
@3kkousedflash246 2 ай бұрын
these are insane giving me so much inspiration with how simple yet effective both art in some and mechanics in others are absolutely incredible
@DontCutAcross
@DontCutAcross 2 ай бұрын
Thanks for your tutorial! I used this code for the cleanup function in Godot 4: func cleanup(): if $ButtonClickedSound.is_playing(): await $ButtonClickedSound.finished queue_free()
@kanaverum
@kanaverum 2 ай бұрын
Liked for the content, subscribed for the unexpected bonus of making me realize GDScript supported ternary operations - how did I miss that until now?! :D
@awper3607
@awper3607 2 ай бұрын
This is why Version Control is a very powerful tool. I am pretty sure I screwed up some where in-between the lines, so what I did is pulled in my previous working version and just worked off that and managed to get back on track. Saved me 6 hours of starting from scratch. Thank you for the amazing tutorials!
@nicktab
@nicktab 2 ай бұрын
Update to setting the scroll bar in Godot 4.x at 12:30 the command should be changed to crollbar.connect("changed", Callable(self, "handle_scrollbar_changed"))
@zGoldenHawk
@zGoldenHawk 2 ай бұрын
what does the := sign do?
@junba1810
@junba1810 Ай бұрын
It lets Godot know that the variable will be of the type that comes after equals. For example if you have var x, Godot doesn't know what type x is, it could be an integer or a string or a bool. If you type var x = 100, Godot assigns the integer 100 to the variable x but still, you can store anything you want in x. You can go later and do x = "hello" and that won't give any errors. However that is not good practice in programming. You want to define your variable types if you can. Goin back to the example, if you type var x: int = 100, Godot knows that x is an integer. If you try and do x = "hello" that will give you an error! If you instead, type var x := 100 Godot will automatically assign x the type that comes after the equals. In this example since 100 is an integer, Godot will automatically assign x the type of integer.
@zGoldenHawk
@zGoldenHawk Ай бұрын
@@junba1810 ❤️‍🔥
@Virviil
@Virviil 2 ай бұрын
Can we get networking here? like multiplayer shooter?
@Liquid_Rigel
@Liquid_Rigel 3 ай бұрын
Any plans to continue this tutorial?
@Wargaartun
@Wargaartun 3 ай бұрын
For Godot 4 - 17:15 when connecting the weapon signal weapon.connect("weapon_fired", self, "shoot") it should be weapon.connect("weapon_fired", shoot) It's probably really obvious, but it took me some time to figure out. xD Great series btw! I'm following along with my own game concept (not that different, but a little bit with making my own sprites), so I don't really copy/paste everything and need to come up with various solutions. Your commentary really makes it easier to grasp the meaning. Even after 3 years (it actually challenges me to look more through documentation, in order to find out the current funcionality, so it helps the uderstanding aswell!) Cheers and thank you!
@williamgessler6461
@williamgessler6461 4 күн бұрын
@Wargaartun thank you for your comment. I had this issue in an earlier video and managed to get through it with a bit of research.
@alphabeta3029
@alphabeta3029 3 ай бұрын
In Godot 4 room description would look like this, i.e. multiline in export and setter in place: @export_multiline var room_description : String = "Some long and very complicated room description" : set(new_value): $MarginContainer/Rows/RoomDescription.text = new_value room_description = new_value
@WhoIsCraig
@WhoIsCraig 3 ай бұрын
I know this is an old tutorial, but I'm a litlte confused. You created a set function for current ammo, but then you called that function directly, which defeats the purpose of making it a set function. Shouldn't you just put " current_ammo -= 1 " and then the set function would be called automatically?
@jmbiv_dev
@jmbiv_dev 3 ай бұрын
Great question! You’re correct that just trying to change the value should call the setter, in theory, but in Godot 3.x it didn’t always work like that. I don’t remember the full context of this video, but in Godot 3.x setters and getters did not get called when you tried to change their associated value from within the same script. They only got called when you changed the value from other scripts. Because of that, you often needed to still manually call that setter function since you often change the variable in the same script that it is declared in. If you’re using Godot 4.x though then the set/get functions will always get called, so it isn’t an issue anymore. Hope that helps!