The Dangers of Taking Shortcuts (as a Game Dev)

preview_player
Показать описание

What's up, Gamers?
I finally got around to making a projectile system that's actually, like, good and useful - and I go in depth on what I set up, hopefully it's helpful to anyone watching!

The game that I'm developing as an indie game dev is called Isadora's Edge! A 2D Pixel Art platformer game, that I'm developing in the Godot Game Engine! If you're new to Godot or have any questions about Godot or game dev in general, feel free to ask me!

=== THE LOVELY AND TALENTED INSANDIO ===

=== ATTRIBUTIONS ===
Music used in the background is from the incredibly talented Low Frequency Music!

=== HASHTAGS ===
#GameDev #IndieGame #Godot #GodotEngine #IndieGameDev #Vimjam #8BitsToInfinity #Vimlark #VimJam2 #VimJam2021 #Vimjam2021 #Devlog #GameDevlog #GameJam #GameJamDevlog #Jam #GMTK #GMTKJam2021 #GMTKJAM2022 #Indie #Game #Dev #IndieDev
Рекомендации по теме
Комментарии
Автор

Now, I think you can add another point as to why slopes in games are not recommendet: Bouncing projectiles off of a slope xD

percycreeper
Автор

My scripts usually turn out generics accidentally. Like I also had to make a projectile, then I needed another projectile... But rather than writing the code for it again, I sort of thought "wait, I already wrote a similar thing, let me just build on that"

DarthBiomech
Автор

The deep dive wasnt boring at all, actually I think it really helpful. Not only was showing the process really interesting to watch, it added to your point in a pretty obvious and easy to understand way. Great video, well done!

Dr_mafario
Автор

NGL, this was a better ad for GODOT than anything I've ever seen. Seeing people actually use tools seems pretty convincing.

TubeTAG
Автор

thank you so much for including the projectile controller in the video i really needed that haha

nimmcymeow
Автор

Some of the most difficult parts about initially learning how to code are questions like these.
"What is the end result of what I'm trying supposed to look like?"
"Am I doing something in a complex way that should be simple?"
"Is this process even necessary or on the right track to what I need?"

This kind of video answers a LOT of that, but in a way that's helpful.
By getting to see the full process, with everything from you talking about how quick prototyping is helpful to how/when/why you shifted into using a more universal system, and everything between, it gives a great perspective on what to aim for, how to work, and what to work towards.

Especially those sections where you talk about about implementing features into the node...
You explained what each function is for, why you put them there, and importantly you showed what it LOOKS like when it's fully put together. That's the part less-good coders than you can have a really hard time with. Without seeing an end-result of what a really good system ultimately would look like, it's hard to know where to go.
And on top of that, you showed examples of what it looks like in-game giving a 'why' for it all, applying it directly to a project.
Even the part where you talked about implementing a signal for 'if/when something might come up' and don't have a use for it yet.
That's the thing about being new to coding... EVERYTHING is an 'if/when something might come up.' And it's hard to know where to go or how to implement 'if/when' chunks of code, and what the CODE ITSELF should LOOK like when something IS implemented. You showed that, and it clears up SO MUCH.

That's the kind of stuff that helps the most for people trying to learn how to do any number of things too, even for things completely unrelated to projectiles, or even if they're not using Godot, it's brilliantly conveying the process AND end goal of what it's all for, what it looks like when done well, and why you'd do it that way.

There are countless tutorials. "This is how to make a projectile do X." Followed by showing the coding process for how to make that happen, how to iterate upon it, what else it can be used for.

But there are SO FEW informative resources for how to iterate on something like the CODE itself, a node, a system, anything.
It's easy to imagine what the projectile looks like when it's doing 'X' and so it's easy to know when the code is working.
But it's hard to imagine what a system/node/code/signal/etc FOR that code actually should LOOK like when it's fully applied.

What you did here is the kind of thing actually gives something STRIVE for, whether for a new-coder or someone more experienced.
Like, I legitimately know for sure that if I manage to code something that LOOKS like what you've built here, with all the options and the layout you've made for yourself, and if I make it FUNCTION with even part of what you've implemented, that I'll not only have DONE something useful and helpful in terms of a good result, but I'll ALSO know how to code better, I'll BE BETTER at making good-quality systems/nodes/anything and everything else that I'll need to learn how to do.
I can't say that after learning from most tutorials because they lack the entire context of what the full code of some big system (like a projectile node) looks like and blends with the rest of an entire game.
I can say that after watching your video here and trying to replicate it. I might need to watch tutorials for how to do some of it, but getting to see what yours LOOKS like and trying to make something that looks and functions like it... that's way better.

You talking about the whole thing and showing what the node looks like (in-engine) along with what it looks like in play (in-game) is better than a tutorial.
I could stay up all night trying to figure out how to do what you did here. I won't because sleep is good. haha
But I could easily dedicate this entire month to this. "How do I make a Node that looks and functions like Kenneth's?"
Because you did it for yourself, I know it's a good thing to try doing, it's a good target and practice and worth doing, AND most importantly I got a glimpse as to what it SHOULD look like when done because you showed the tangible Node itself and how it works in-engine and in-game at once. So now I actually have something clear to aim for, I can know when something isn't working, I can keep trying things because if there are parts you've made here that I haven't figured out or implemented to my own Node attempts yet then I know I have more work to do and it will BE FOR something I KNOW I'll benefit from.

There are only a handful of S-tier videos in every context.
In the context that this video falls into, in a landscape of tutorials about how to do things in-game and showing the process of coding how to do it, but a lack of showing what a well-built, easily-usable, polished and extremely useful type of system with all sorts of unique applications looks like... you showing what that kind of finished system of code looks like and how to put it together that way and why...
This is S-tier, Kenneth.
Good stuff.

lanternvalley
Автор

Love to see all of it coming together!

rustunicornswarzoneshorts
Автор

Love it. Just wanted to tell you that your content genuinely help me a ton as I'm building mu own game. Please, keep going, this is actually priceless. Your charisma and pacing are top notch!

lev-th
Автор

The explanation of how this system works is actually really interesting, hopefully you will upload more of these kind of explanations!

cash
Автор

You can tell he put on a shirt just for the video with the heatwave going on.

skepays
Автор

Interfaces have also been a godsend lately for handling simple behaviours that can vary depending on the object/entity. Like having an IDamageable or IKnockbackable or others and having the objects that use those interfaces override the abstract functions of the interface. Instead of testing for each kind of enemy or projectile when doing an attack, just checking if the entity/projectile implements the interface and then calling the function. That has saved me so much time lately when solo developing in Unity.
Also love to see the progress! As always very fascinated and inspired by your videos.

ares_dev_yt
Автор

something learned the hard way too, if you have at least 2 pieces of code with some similarities, no matter how small you better encapsulate it in a single system or function, saves a lot of time in the long run

Axelpvz
Автор

That's why you should always start thinking about your game code architecture from start. Use c#, make interfaces, abstract classes...etc. It seems tedious for a beginners, but it just saves your monthes/years of work in the long run.

shinpansen
Автор

I appreciate this look into game development. hope you have a good day or night.

rune
Автор

New hobby dev starting on godot stuff and I am absolutely loving vids like this! Sub time for sure. I love seeing your process and it is really making me think about how I am doing things! Thanks!

Archelon
Автор

You explain things very well and clearly, it's definitely not boring! Thanks for showing us more under the hood 🙏🙏

alexeibordas
Автор

Loved you talking about all the specifics. Helps me understand possible solutions and thought processes to problems i don't even have yet :)

johncowart
Автор

Hello! I am new to your channel. I really like it because you talk about really specific challenges in a comprehensive manner. I am a total beginner in godot but I understand what you are talking about.

Showing it in the editor is the cherry on top. Super cool and not boring at all! I love that deeper dive. It scratches my brain the right way :D

Simon-ethu
Автор

on every single project i make there comes this point near the end when i promise myself i'll do more efficient cleaner code next time. then i start a new project and immediately ignore my past self and do stuff quick and dirty.

jameshughes
Автор

Very helpful. I am very new to game dev and for some reason couldn’t get my head around how you could use premade projectile node and have be then specialized for each instance without screwing with the other spots it’s used. But seeing how you have @export all the variables made me realize that the exporting allows you to alter values without altering the script.

salmonbamminfish