Bitlytic
Bitlytic
  • Видео 13
  • Просмотров 824 935
Modular Upgrades Made Easy Using the Strategy Pattern
In this video we'll look at an application of the Strategy Pattern to game dev in Godot 4.
The Strategy Pattern is a programming pattern useful for switching how an algorithm works at runtime. We use it a little differently here to apply a variable set of upgrades to a projectile fired by the player. A very closely related term is "polymorphism" if you're familiar with that.
Project Link:
GDScript - github.com/Bitlytic/Strategy-GDScript
C# - github.com/Bitlytic/Strategy-Mono
Discord - discord.gg/skPc32bUfA
Resources:
Arks Dinos - arks.itch.io/dino-characters
Kenney's 1-Bit Pack - kenney.nl/assets/1-bit-pack
RGS_Dev's Tileset - rgsdev.itch.io/free-cc0-top-down-tileset-template-pixel-art
Outro Music ...
Просмотров: 30 960

Видео

Finite State Machines in Godot 4 in Under 10 Minutes
Просмотров 233 тыс.Год назад
In this video we'll walk though the setup and creation of a Finite State Machine (FSM) in Godot 4. Finite State Machines are incredibly useful for managing simple states and transitioning between them. For this video we will look at an enemy with the states of wandering, following, and attacking. Then, we'll build the wander and follow states together in Godot. Discord - discord.gg/skPc32bUfA R...
How You Can Easily Make Your Code Simpler in Godot 4
Просмотров 354 тыс.Год назад
In this video we look at Inheritance vs Composition and a scenario where Composition is preferable in Godot 4. Both Inheritance and Composition have their pros and cons, but Inheritance is for more often taught, despite Composition being very important in Game Development. I recently ran into Composition in my own projects and felt that it was vastly underrated and deserved to be taught. Discor...
Maximize Your Game Development Potential with Classes in Godot (class_name is OP)
Просмотров 109 тыс.Год назад
A quick video to show you how Godot's class_name can be used to create a custom class that makes it easier to add and change functionality in a game. I'm technically using Godot 4/GDScript 2.0, but that should be irrelevant for this topic. Discord - discord.gg/skPc32bUfA Sprout Lands by Cup Nooble: cupnooble.itch.io/sprout-lands-asset-pack Music used: ruclips.net/video/44MCworZf78/видео.html It...
Best of Bitlytic 2022
Просмотров 2 тыс.Год назад
We had a good run this past year. Hoping for a 50% increase in content in 2023. Goomba Behavior
SM64 Decomp - Fading, Door, and Instant Warps
Просмотров 4,8 тыс.2 года назад
In this video we set up three different types of warps: Fading, Door, and Instant. This should be as much as you need to use any other type of warp, with the exception of paintings, which I will cover next video. If warp IDs and nodes are confusing, check out part 3: ruclips.net/video/BuCpjradzgc/видео.html Resources: Blender - www.blender.org Fast64 - github.com/Fast-64/fast64 Level Template b...
Game Math is easier than you think.
Просмотров 12 тыс.2 года назад
Linear Algebra is a scary term that is often associated with Game Development, but the reality is that the average game developer will only use simple arithmetic when making their games. My goal in this video is to demystify the math that goes into making a game and show a concrete example of what can be done with extremely simple rules. This was technically for the 3B1B SoME1 (Summer of Math E...
SM64 Decomp Tutorial 4: Basic Object Behaviors
Просмотров 5 тыс.2 года назад
Episode 3: ruclips.net/video/BuCpjradzgc/видео.html Pastebin with code: pastebin.com/0RWzvQvq We create our first behavior which is a 1-Up that gives us an amount of lives we can specify, it also doubles the lives if Mario is ground pounding. This is the first *real* code episode, and will be followed up with another one implementing more advanced behavior. You can follow along if you don't kno...
SM64 Decomp Tutorial 3: Warps
Просмотров 6 тыс.2 года назад
Episode 2: ruclips.net/video/gzaOgvZSzCM/видео.html This episode explains how warps work and how you can add them to a level. I've also created some animations to help in understanding how warps are set up as they can be a bit confusing. Resources: Blender - www.blender.org Fast64 - github.com/Fast-64/fast64 Level Template by someone2639 - cdn.discordapp.com/attachments/701163914775494656/75957...
SM64 Decomp Tutorial 2: Importing Levels and Making Objects With Fast64
Просмотров 21 тыс.3 года назад
Episode 3: ruclips.net/video/BuCpjradzgc/видео.html UPDATE: Fast64 has been moved to github, you can go to the new link and download. To do so: 1. Go to github (github.com/Fast-64/fast64) 2. Click on the green "Code" button 3. Download as zip Afterwards, install as normal This episode goes into creating basic levels in Blender using Fast64 and adding objects and textures to that level. Episode ...
SM64 Decomp Tutorial 1: Setting Up and First Code Changes
Просмотров 16 тыс.3 года назад
This tutorial is aimed to help people get started with Romhacking using SM64 Decomp and Fast64. The first episode goes over basic setup and adds a simple feature to sm64: the ability to ground pound out of a long jump. Next episode will be a beginning to Fast64 use and will release alongside a video explaining how to set up warps. Please leave any feedback that would help make it easier to show...

Комментарии

  • @siddharthmaurya8765
    @siddharthmaurya8765 Час назад

    I've followed the tutorial and I've encountered an issue. When testing each state individually (no transitioning) only the follow state works and not the idle state. However, if I remove the enemy from character in the inspecter, follow state works as intended. Idle state works regardless of this condition. This makes the state transitioning not work either. What could I be doing wrong?

  • @DashMatin
    @DashMatin 4 часа назад

    thanks for the great tutorial! one question tho : if I want my enemy character to only move in X axis for a 2D Platformer Game how can I do that in this code? how do I change those floats to ints?

  • @JackAllpikeMusic
    @JackAllpikeMusic 14 часов назад

    I'd love to see more videos like this as someone just getting into Godot. But even for people not using Godot, these are very helpful in just breaking down common ways of handling problems that we may not have heard of. I hadn't considered nor heard of this way of doing things before.

  • @bloodcc5168
    @bloodcc5168 2 дня назад

    this really helps me a lot, thank you

  • @SamuTheFrog
    @SamuTheFrog 2 дня назад

    These videos are invaluable, man. I've come back to these several times now as quick refreshers as I'm still learning everything. Truly great

  • @GuitarBreakOut
    @GuitarBreakOut 2 дня назад

    I just started learning godot and you have some of the best tutorials out there. thank you so much

  • @Ignawesome
    @Ignawesome 2 дня назад

    Isn't this pretty much like the command pattern? Im not sure I see the difference.

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

    Does this only need to be done once? Seems like a lengthly set up just for a state machine. Im coming from game maker so... pardon my ignorance.

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

    Nice, but I don't agree with the way you tightly couple the hitbox to the health component. Personally I'd make a "Damage Hitbox" that would then emit attacks it receives through a signal. The enemy, box, or tree logic could then glue together the attacks and the health component and also perhaps create a middleware chain for modifying or giving special behavior to received attacks.

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

    Wait, but C# in godot doesn't support interfaces right?

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

    Please keep up with C# inclusion if possible, a cool guide!

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

    Hello Great tutorial, watched plenty of your videos but this time i stucked at invalid get index global position" on base "nil" error can you help me please?

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

    thank you!

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

      hi did you have this mistake: "invalid get index global position" on base "nil",if you had please can you say what you did to solve it

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

    Why are you so incredible? Liked

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

    Mate, you're incredible! The focus on OOP aspect is exactly what I needed.

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

    Great video and explanation of concepts. Very sound tactics for creating maintainable and extensible code 👏

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

    I enjoyed watching through this and learning a few things that never occurred to me. Also it was amazing to see you addressing your old video. Keep it up, we all love it!

  • @ocarina0001
    @ocarina0001 5 дней назад

    Of all things I learned in this video, it was CTRL+Space. Thank you.

  • @Weeb1367
    @Weeb1367 5 дней назад

    Please, more OOP. Changing my Unity system to suit Godot feels very scary

  • @benjim3194
    @benjim3194 5 дней назад

    What's the reasoning for having 2 hitboxes? One under the root node and one under the hitbox component?

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

    Isn't that just using interfaces to some point? Cause it's just kind of startegy pattern

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

    i need the template, it's not available anymore

  • @palmpixiplus
    @palmpixiplus 8 дней назад

    This is ingenious! I had been trying to figure out how to do something like this but wasn't even able to articulate it in a search. The main thing that I had been getting hung up on was how to dynamically add upgrades instead of checking the Player for every possible upgrade. Using an array is such an elegant approach.

  • @haxking2
    @haxking2 8 дней назад

    I'm new to godot, so have I understood this correctly? What I understand: Basically a resource holds values, in this case a class object, which is appended to an array in the player when it is picked up.

  • @miymoto128
    @miymoto128 8 дней назад

    Could you help me with making a custom object into a breakable box please, I dont have Visual studio active but I was thinking using the Hex editor but dont know to use it any help will be great!

  • @simonw.1223
    @simonw.1223 9 дней назад

    you deserve a sub... ohh wait I already subbed to you.

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

    fantastic explanation! I'll definitely use this for my game, thanks!

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

    You have the best videos on these coding topics that I have ever come across in my 6+ years of coding. Seriously, thank you.

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

    Wow, that’s cool

  • @mirtilo
    @mirtilo 10 дней назад

    dont know if its the adhd but your videos are hard to fully follow along, i feel like i need to rewatch it six times before i start to really grasp it, which helps me appreciate the tutorials that show the writing the code and clicking to switch tabs part instead of just stating you're doing so, either way it's a great and informative video, thanks for making it.

  • @darius_defiant
    @darius_defiant 10 дней назад

    Just found your channel because of Brackeys' video! Great stuff, very well explained. I was getting into Godot and already used composition in project, but then things came up and I took a ~6 month 'break' and wanted a refresher, and this was perfect. I'm glad to see more people making videos on Godot that are slightly more than 'basic' level, because it was very difficult for me to find before. Everything was super beginner level tutorials where you just copy them without much explaining, but I was moving on to more complex things. I see you have some other vids that look interesting as well, so I'm going to subscribe and check them out too!

  • @grbrigsted
    @grbrigsted 10 дней назад

    This is essentially the open/closed principle from the SOLID principles (en.wikipedia.org/wiki/SOLID), but it makes so much sense to apply it here.

  • @OmeedNOuhadi
    @OmeedNOuhadi 11 дней назад

    👍👍👍

  • @Rathalos23
    @Rathalos23 12 дней назад

    But what if we use tilemap and not collision shapes :/ ? To my knowledge, there are no ways to set a mask for each tile of a tileset.

  • @chrissmith5371
    @chrissmith5371 13 дней назад

    Your tutorials are simple, coherent, and extremely helpful! You're a great teacher.

  • @redestroyer7994
    @redestroyer7994 13 дней назад

    I was thinking about a way to make an upgrade that has other upgrades' functionallity, like a firework that has the particles and an explosion hit. I thought of something like a `CompoundUpgrade` thing that you can just insert multiple upgrades in it and make it use each one of the upgrades.

  • @Freek314
    @Freek314 13 дней назад

    So why shouldn't we just use instanced scene nodes for this? One node with funcs to handle all of this in one place without any unnecessary layers of abstraction. Put it under whatever you need the functionality in, then call it from the parent node when needed.

  • @mrblocklp8701
    @mrblocklp8701 13 дней назад

    Great Video! I really like this kind of tutorials and I’ve understood everything, but I have a question: How did you colorcode your folders inside of the Godot editor?

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

    Pretty interesting stuff

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

    you carefully though out every which way in this tutorial, from giving a GitHub page for us to craft and make our own version (as long as we give credit") to making a discord to ask for help when hitting an issue. you sir are far beyond anyone teaching godot right now, i constantly learn when you drop, the godot community is beyond thankful you are spreading your knowledge to us. thank you so much!

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

    now how do you make a one way platform in 3d

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

    Can you make tutorial on pseudo 3d

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

    hi, your video tutorial about finite state machines and node composition helped me a lot with my game development, this tutorial is actually also applicable to my game and gave an idea, hope you make a inventory system tutorial

  • @runemonger1284
    @runemonger1284 15 дней назад

    This is incredibly useful information. Thank you for sharing.

  • @TrizZzle
    @TrizZzle 15 дней назад

    Thank you! Very useful, nice explanation and presentation! I was wondering for a long time how you would implement upgrades in a game.

  • @jbfelix_
    @jbfelix_ 16 дней назад

    Great video. I am a software developer, but new to game dev. I have a question: why not use the decorator pattern? It sounds a bit more adequate to this situation since you are adding multiple changes to the object

    • @Bitlytic
      @Bitlytic 16 дней назад

      I've seen a couple recommendations for the decorator pattern and the simple answer is a gap in my knowledge, any resources you'd recommend for learning more about it?

    • @nouveu1
      @nouveu1 12 дней назад

      ​@@Bitlytic there is plenty of resources about it, if you want example without UML diagrams mess search for example "baeldung decorator pattern". Example is in Java (C# predecessor so syntax would be familiar for you). But in short, if your bullet would be immutable (no setter for damage) then you would need to create wrapper over bullet which calls damage getter on wrapped bullet and adds bonus to it. In such case original bullet damage won't be changed but wrapped (outer) bullet will return increased damage. It doesn't make sense in Godot because your bullet is not immutable, you don't have real "private" keyword, and in general immutability is not a thing in game dev industry where you already spawning thousands of bullets and can't afford to double that number. Contrary to IT systems where we don't have a lot of allocations but we have dozens of interconnected components - in such systems immutability is crucial because one component changing some variable can break stuff in other components.

  • @9hoot789
    @9hoot789 16 дней назад

    Very helpful

  • @moonnight9474
    @moonnight9474 16 дней назад

    wow, thank you !

  • @michaelkimball3401
    @michaelkimball3401 17 дней назад

    I think the decorator pattern may be a better fit for this particular use case. Strategy is better for replacing logic where as decorator adds on top of existing logic.

  • @miodev5833
    @miodev5833 17 дней назад

    I love this video presentation, i see you use canvas motion, how you get the style code gdscript?