Making a Third Person Character Controller for My Indie Souls-Like | Devlog 1

Поділитися
Вставка
  • Опубліковано 10 лис 2024

КОМЕНТАРІ • 86

  • @Snaiel
    @Snaiel  Рік тому +14

    Let me know what you think about the character controller so far!

    • @Plasma_god
      @Plasma_god Рік тому +4

      It's really nice better than mine😅

    • @gritim3719
      @gritim3719 Місяць тому

      I haven't had the chance to test it on my laptop, but I can see that you've worked hard and done an amazing job! I dream of creating a game to have fun just with my friends, I intend to use yours project.When I edited it I realized how much effort you put into it, and man, I hope I can reach your level someday.❤

  • @BRBS360
    @BRBS360 Рік тому +34

    This was an excellent Devlog. Many other channels add annoying sound effects, memes, stock footage or how they brew their coffee (which is all fine of course), but it was refreshing seeing someone actually focus on the code, the bugs and the struggle to get it (mostly) working. I didn't even know that the order of the node hierarchy influences how they get operated on each frame.
    This must have been a ton of work with recording footage and editing. I really appreciate you making this open source for us and for crediting the resources you used to learn. Thank you so much. Good luck on your developer journey!

    • @mrlucky974
      @mrlucky974 Рік тому +3

      I agree with you on everything but we must also understand why other game dev channels do that. Adding jokes, sfx and memes all around the place in between explaining what they're doing is to add some sort of "dynamism" to the video, to appeal to a broader audience than just other game devs. It's to attract potential players, making them laugh while showing "hey my game is cool, look at the progress".
      However, as a game dev myself, I also sometimes prefer watching the actual work rather than the result.
      (Also, I think we can say that Dani had a huge influence on the game dev youtube community for using this type of editing)

  • @maxrandelle5774
    @maxrandelle5774 Рік тому +21

    Just add a transparency shader to the player mesh and set it to activate if the camera collides with anything or if it passes a minimum distance threshold to player mesh, and then link the albedo alpha value to a curve based on the distance between the player mesh and camera.

  • @SkyCatStudios
    @SkyCatStudios Рік тому +6

    Some comments on your controller!
    Separate your buffered input system from your abilities (IE dodge/attack). Ideally you'll want to be able to buffer most actions in your game. (Usually you have something like a map of inputs/actions and whenever an input is pressed if it fails to activate an ability, keep checking each frame if that input could be used and clear it once it has been. (Or clear it once another button has been pressed).
    For the wall/camera problem, you might want to look into 'Dithering' which is a commonly used solution. (Basically emulates transparency and the amount that is dithered is generally scaled based on how close the camera is to the vertex)

    • @Snaiel
      @Snaiel  Рік тому

      Thanks for the feedback!

  • @prasannaasokan9500
    @prasannaasokan9500 Рік тому +2

    Dayum this is looking pretty good so far 🔥🔥

  • @buckets3628
    @buckets3628 8 місяців тому

    liked, subscribed, saved to playlist, shared with friends, appreciated.

  • @bobbilderson8556
    @bobbilderson8556 Рік тому +2

    Dude. This looks amazing. I love how smooth the controls are looking already.
    What’s great about making a controller like this is that you can drop it into all kinds of projects.
    Great work.

  • @distantvoicemusic
    @distantvoicemusic Рік тому +2

    DUDE THIS IS AMAZING!! YOU’VE GOTTEN SO GOOD

  • @mobilemetal4554
    @mobilemetal4554 6 місяців тому

    Man this is awesome. I wanna make a game so bad but I have zero experience and I’m kinda old. Great work

    • @Snaiel
      @Snaiel  6 місяців тому +1

      Dude give it a shot! Better to at least try than to regret not giving it a go. Last time I checked there’s no age limit to game dev hehe. Game dev is not easy but even making a box move around the screen feels super rewarding. If you’ve got no experience, I suggest learning to code using GDQuest’s “Learn to Code From Zero with Godot” gdquest.github.io/learn-gdscript/

  • @Frank_G_Finster
    @Frank_G_Finster 10 місяців тому

    This looks pretty decent already. Looking forward to follow your progress.

  • @exo_vvlpine
    @exo_vvlpine Рік тому

    okay this had me hyped for the future of this game 😤

  • @user-vd7io9jc8f
    @user-vd7io9jc8f Рік тому

    I'm working on a similar project and this video and its comment section have been extremely helpful

    • @Snaiel
      @Snaiel  Рік тому +1

      wow that's great to hear. I'm glad my video was helpful. everyone's thoughtful feedback and supportive comments are amazing.

  • @user-rx3xl7zn1u
    @user-rx3xl7zn1u Рік тому

    Very nicely done. I'm about to start my own quest for perfect third person character and camera movement and I your work here has inspired me.

  • @elatronion
    @elatronion Рік тому

    I find it really interesting how you've merged a bunch of people's code into one really good souls-like package!
    I hope to see more content from you in the future!

  • @apoorvpandey3D
    @apoorvpandey3D Рік тому +1

    for orbiting around the enemy, you can generate a circular curve and use distance between player and enemy as radius and enemy as center and then move the player along that curve when strafing.

  • @RyanPowell-t8s
    @RyanPowell-t8s 8 місяців тому

    adding all those method calls to the attack animations is a good idea! i have been struggling with a good idea for handling combos, and i feel like this might be it!
    for me personally, splitting code like jumping out into its own component seems to be taking composition unnecessarily far, but it’s all individual preference! i don’t mind longer scripts, and i don’t think a long script makes any performance impact if it’s the same total amount of code. but i could be wrong!

  • @ariasdad
    @ariasdad Рік тому

    Wow that's so much progress for just a month. I've always wondered what it's like making a character controller so it was really fun watching you go through it. And your work is looking so good already!

  • @kvbc5425
    @kvbc5425 Рік тому

    comprehensive devlog good editing good voice love it

    • @Snaiel
      @Snaiel  Рік тому

      Much appreciated!

  • @Yuguta420
    @Yuguta420 Рік тому

    You're gonna do a great job bro just keep up
    waiting for devlog 2 tho

  • @jakobwachter5181
    @jakobwachter5181 Рік тому

    This looks great, keep it up! Hope to see a successful project at the end of the tunnel, whatever that looks like for you! For your issues regarding code coupling, I would suggest doing a refactor now since you're early in the code and you now have a better idea for what you want the player to be able to do, technically speaking. If you refactor early you save yourself a lot of time. My suggestion would be to design the code from the top-down, so implement all of your known headers first, then play with that high-level design space to see if you can suss out which functions are likely causing the coupling and if there are workarounds.

    • @Snaiel
      @Snaiel  Рік тому

      Thank you for the advice 🙏

  • @cambro69420
    @cambro69420 Рік тому

    great prototype man feels nice keep it up, and keep making these dev logs, would love to keep up to date with production :)

  • @ETtheAliem
    @ETtheAliem 7 місяців тому

    I'm currently stuck in tutorial Hill but this is helping lol

  • @FredyyDev
    @FredyyDev Рік тому

    Thank you for doing this!
    I always wanted to do this but you took the time to materialize it... Thanks!

  • @FloatingOer
    @FloatingOer 7 місяців тому +8

    Though I haven't tried making a game in this genre I must say it looks like you are spending too much effort on non-essential movement mechanics without actually having a functional game prototype to test it out in to see if it's even something you'll want in the game, you just have a sandbox. This is a month long project and there is no game loop, I'd recommend doing something more basic with a game loop, like get from point a-b and fight off enemies along the way, no need for animations or anything fancy, just the pill shape is enough. Then you can add all the extra stuff, just so you have a base game to help form your ideas and test it out in before sinking weeks of time on stuff that might not fit your needs. I used to make games the same way a few years ago and I never finished anything because of this, it feels so much more encouraging to start with a bare bones prototype with a game loop first. Good luck!

    • @ThePhobiephozee2000
      @ThePhobiephozee2000 4 місяці тому +5

      It’s always essential to nail down your game loop but I’d argue that character movement and controls alone are critical enough to the games feel that they warrant extra polish in the early stages. I wouldn’t dedicate this much detail to every system but making your character fun to move is a big win!

    • @Visigoth_
      @Visigoth_ 4 місяці тому +4

      ​@@ThePhobiephozee2000 The Character controller is "the most important" mechanic in a souls-like...
      (Also just as important are camera, Animations, colliders... etc, etc. 😅).

  • @abrahamjaleel9463
    @abrahamjaleel9463 Рік тому

    Good job, I hope you end up making an awesome game.

  • @ScoutOW2
    @ScoutOW2 Місяць тому

    Great video!
    Knew you were an aussie from the first few seconds of the video xD

  • @jaxsonbrown4094
    @jaxsonbrown4094 Рік тому

    pretty nice video man

  • @belgbeladel
    @belgbeladel Рік тому

    well done

  • @onoille
    @onoille Рік тому +3

    What about implementing some inverse kinematics systems for the legs so every movement makes sense and doesn't have to be made with an animation, it can instead be procedurally generated, which would also fix a lot of little stuff like when the character rotates in place, etc...

  • @Visigoth_
    @Visigoth_ 4 місяці тому

    I've never been a fan of how most games do "third-person cameras," having the camera collide with *anything and then either letting it; or trying to have the camera cope, is terrible; because it takes away control from the player.
    Elden Ring added something in shadow of the erdtree:
    When your character walks into a tent... the camera ignores the tent (the tent "wall" between the camera and the character is just made transparent)... I think this is great! Just make the camera a non-physical object that can go "into"/ through everything and then make things (everything except enemies) that is between the camera and the character "fade-out." 🤔

    • @Snaiel
      @Snaiel  4 місяці тому +1

      Thanks for this! Configuring which objects the camera collides with or fades out seems reasonable. Doesn’t seem to hard to implement as well… famous last words of any feature/mechanic hehe. Will definitely keep this in mind!

  • @AlexisSotelo
    @AlexisSotelo Рік тому

    You should consider implementing a Hierarchical Finite State Machine to handle the various states of the player: normal, attacking, dodging, getting hurt, etc.

  • @tess9141
    @tess9141 Рік тому

    Wish you good luck in developing and hope you'll finish your project and not drop it

  • @kairu_b
    @kairu_b Рік тому

    Cool

  • @herohuntstudios
    @herohuntstudios Рік тому

    bro dont mind, marketing is great like your devlog, but it,z super nice if you have some visuals to filling the ugly grey color, even it free assets, but it good rather than grey color ! keep it up

  • @deyama2012
    @deyama2012 Рік тому

    I'm not sure if there are direct equivalents in Godot, as I'm a Unity developer, but it can't be too different, right? The way I would do it is by creating a quaternion which represents rotation towards the target and multiplying that by your raw movement vector. So, basically:
    // first argument is direction towards the target (I assumed it's '_target_look' in your case), second argument is upward vector which can be character's up or world's up
    Quaternion rotation = Quaternion.LookRotation(_target_look, character.up);
    Vector3 rotated_move = rotation * move_direction;
    character.position += rotated_move * moveSpeed * Time.deltaTime;
    As a result your character strafes around its target in perfect circles. Then you can also use that same rotation to rotate your character to face toward the target. Hope that helps

  • @mr_star75
    @mr_star75 Рік тому

    Great job
    I can see why I can't make any game. 😅
    The biggest problem remains the AI of the enemies
    If the player's animation is that complicated
    I have an idea that I can't implement, please put it in your game.
    If you play blade of darkness
    The method of cutting enemies in it is terrible and more beautiful than all the games of souls

  • @Shrud.mp3
    @Shrud.mp3 5 місяців тому

    omg thank you im making a berserk game and couldnt get lock on working

    • @Snaiel
      @Snaiel  5 місяців тому

      Glad I could help!

  • @ClockworkGearhead
    @ClockworkGearhead 11 місяців тому +1

    Don't make the camera lock-on _too_ perfect. The quality of a souls-like system is the player has a lot of options that are a mistake (like following too closely to an enemy). If you try to script out possible player mistakes, then you'll end up with something other than a souls-like.

    • @Snaiel
      @Snaiel  11 місяців тому

      Could you further elaborate on what you mean? I think an example or specific situation/scenario will help me understand better. But you do bring up an interesting point in not making too good of features that spoon-feed gameplay to the player.

    • @ClockworkGearhead
      @ClockworkGearhead 11 місяців тому

      @@Snaiel An example would be making the lock-on flawless/instant and without a turning speed. So, no matter how the enemy performs, the game automatically makes sure the player's character is always facing them. Makes sense on paper, but if remove the requirement for the player to anticipate the enemy, then it's no longer a skill issue.
      And skillful playing is the core of a soul's-like (please ignore Demon Soul's bugs, ha ha).

    • @Snaiel
      @Snaiel  11 місяців тому

      thanks so much, I really appreciate it!

  • @kerduslegend2644
    @kerduslegend2644 Рік тому +1

    Heyn loves your Story. a little bit of advice, aren't those mixamo's animation usually root animation? You can achieve a lot more dynamics using root animation

    • @Snaiel
      @Snaiel  Рік тому

      Id rather change how the character moves in code and just not worry about animations because I’m not a good animator.

  • @off5125
    @off5125 Рік тому

    Godot 4.1.2, error loading Main.tscn, in addition, if I try to make another main scene, there are about 427 warnings/errors. Why is that? Also the demo looks nice.

    • @Snaiel
      @Snaiel  Рік тому

      Please have a look at github.com/Snaiel/Godot4ThirdPersonCombatPrototype/issues/3

  • @CopyCatBlack
    @CopyCatBlack 9 місяців тому

    Hi can you make a tps for godot4 tutorial for beginners

    • @Snaiel
      @Snaiel  9 місяців тому

      sorry I’m not planning on making tutorials right now :(

  • @rorcarrot1
    @rorcarrot1 Рік тому +1

    Have you considered setting up some kind of ftp so you can wirelessly copy the files to the steamdeck instead of moving an sd card around?

    • @Snaiel
      @Snaiel  Рік тому +1

      Thanks for the suggestion. I made a python program a while ago that does some syncing for my Dropbox account since they don't have selective sync on Linux. I'll see how well it works in this case.

    • @rorcarrot1
      @rorcarrot1 Рік тому

      @@SnaielNice! Have you also considered setting up the steam deck as a virtual controller for your pc? I know its possible to do and would definitely be better for prototyping haha

  • @sigitsatriap6505
    @sigitsatriap6505 Рік тому

    since there are no demo version for Mac, i try to open the source code but failed to open Main Scene.

    • @Snaiel
      @Snaiel  Рік тому

      Please have a look at github.com/Snaiel/Godot4ThirdPersonCombatPrototype/issues/3

  • @shannenmr
    @shannenmr Рік тому +2

    Your codes looking good, not sure on the music choice in the background though as it kinda started putting me to sleep and causing micro sleeps :(

    • @Snaiel
      @Snaiel  Рік тому

      whoops, thanks for letting me know!

  • @bnkm07
    @bnkm07 6 місяців тому

    do you have the source code by any chance would like to work on this a bit

  • @mr_star75
    @mr_star75 Рік тому

    I have question
    I read your code and saw that it is simple although I cannot write it itself
    My question is how can I write codes, is there a way of thinking or a way to use the code, I have some ideas, but how do I link them and make them in my game here I yearn in short is how can I learn to write codes in the same way as you

    • @Snaiel
      @Snaiel  Рік тому +1

      It's experience at the end of the day. What's your coding knowledge like? Variables, control flow, loops, data structures, classes, design patterns, system architecture and more are what I go through when solving problems (like a toolbox). So I found learning about as many topics in programming to really help.
      Having a problem solving mindset helps a lot as well. I enjoyed learning mathematics through exercise questions and same with coding (like Leetcode). I'm not saying you should do these, I'm just giving some background on how these arbitrary and somewhat useless exercises help me indirectly by growing my problem solving skills. So maybe think of other areas you are good at problem solving and see if you can adapt your thinking into coding game mechanics.
      I make sure to break things down as much as possible and then look at my tools and similar problems solved previously to try and explore how to do things. Does it involve multiple things? Maybe an array will help, or maybe some other data structure. Does it involve directions and angles? Okay, what functions do I know or mathematical ideas I can apply? Then it's just solving small things at a time, then solving how to combine these smaller things by going through the same process of "what's my goal, here's what I know, let's experiment".
      Maybe build up your experience by following coding examples or tutorials, both normal code and game mechanics, but try to do it yourself first, then use the tutorials as an answer to check your work. Feel free to mention an idea you have and I'll try to go through my thought process of coding it.

  • @shaneredgrave5115
    @shaneredgrave5115 9 місяців тому

    This is cool , how do you achieve the lockon rotation ?

    • @Snaiel
      @Snaiel  9 місяців тому

      You can look through the files at the time of the project when i first implemented it: github.com/Snaiel/Godot4ThirdPersonCombatPrototype/tree/5c134812ff7e7402b32a3a2b5282a2d9f57e057a

  • @Crabtorias
    @Crabtorias Рік тому

    Heyy, im toying with making a souls like in godot4 as well! Hope to see your progress, maybe i'll post my own.
    Edit: right now im modeling placeholder stuff and wanting to fix my player controller it doesnt fall through the floor on complicated geometry

    • @Snaiel
      @Snaiel  Рік тому +1

      Definitely share!!

    • @Crabtorias
      @Crabtorias Рік тому

      @@Snaiel when i have a little more I plan on it! It might take me a bit though, i dont plan on using mixamo or whatever, i wanna do this myself.

  • @VaporCode
    @VaporCode Рік тому +2

    Wow, you managed to accomplish all of this in just a month? To be honest, i am bit discouraged. I've spent almost a year working on a 2D card game in Godot, and I'm still not at your level. whats the secret sauce?

    • @Snaiel
      @Snaiel  Рік тому +2

      I’d say the stars aligned on this one. I’ve made a few games before so I know what not to do. But it’s been 3 years since I’ve done any game dev so I was very very keen and just worked on it as much as possible. This month was semester break so this was the only thing I worked on. I’m in my second year of a computer science degree so I’m decent at coding. And I recently finished Sekiro so the mechanics are fresh in my mind. I’m definitely not gonna progress as fast as this in a long time. Don’t get discouraged. Keep cutting the scope of your game so it’s a nice manageable but high quality chunk. The more you develop the better and faster you’ll get.

    • @VaporCode
      @VaporCode Рік тому +1

      @@Snaiel Thanks brother, this helps a lot. I'll keep working hard

  • @Dealikaiser
    @Dealikaiser Рік тому

    what is the engine

  • @maxrandelle5774
    @maxrandelle5774 Рік тому

    Also your movement is not very good. It's simultaneously oxymoronically to slow & stiff on the ground and to loose & slidey in the air. It's like playing the ice level in Crash Bandicoot.
    You should only preserve momentum if the player is holding a directional input upon contact with ground.
    And there is a bug where if you touch sprint at any point while you're airborne when you land you slide forward uncontrollably. Sprinting just ducks up movement in general.
    Trying to platform on the pillars had me feeling like a games journalist playing Cuphead.

    • @Snaiel
      @Snaiel  Рік тому +1

      Thank you!! This is incredibly helpful.

  • @feirut5107
    @feirut5107 Рік тому

    Great work! There's a way to contact you? Or do you have a discord?

    • @Snaiel
      @Snaiel  Рік тому +1

      snaiel on discord