Тёмный
Chap.C
Chap.C
Chap.C
Подписаться
RU-vidr. Idiot.

Join us on discord: discord.com/invite/4DMnyEDrTC
Why my 15-Year-Old 2D Platformer Game Failed
24:00
2 месяца назад
Комментарии
@dibaterman
@dibaterman 4 часа назад
Yeah, I agree, I have a friend on Discord who released his game on Steam, being the guy who is notorious in various communities for his State Machine and pushing it down every dev I meets throat it sucked that his game obviously failed to employ one. To be fair he was using GameMaker not Godot but his controls didn't care about context, which was a huge turn off. I honestly thought he was going to release it as EA but when I saw full release I was hurt for him. I mean really hurt, that game could have used just 2 things more and it could have been ready for EA... but full release... Anyway for your combat stuff, you probably want to employ custom resources, and the use of a nodal combat tree to handle animations in a modular way. This way what animations you can do are based on the nodes present. You simply assign the node as a child and register it to whatever you map for controls then when you press the button the animation on that node is played and the node handles the logic for how you do the animation. This way you don't get caught in animation resource hell where you keep needing to add animations to your list and instead you can just either place them on a node or a custom resource. For the animator itself, just be sure to have blend setup to change between 2 animations when you attack and that's it, the nodes will register the animation and whatever animation currently playing will blend into the next animation, the nodes again will dynamically unregister and register their assigned animations to your animation player.
@joseluisp4108
@joseluisp4108 9 часов назад
BROKEN THE SHELL AND GO WITH A NAKED TURTLE WITH PIJAMA
@Diego-mq3ws
@Diego-mq3ws 22 часа назад
i dont undertand from this and shaggys video how and why returning a state node makes it the active state. what function is being called?
@k3nnl
@k3nnl День назад
Imagine eventually refactoring this node hierarchy for all scenes that use it. It makes refactoring a real disaster.
@ChapC_YT
@ChapC_YT День назад
I'm pretty sure the final code and setup will differ significantly from what I have now, but as a first learning project, this was great.
@brunomello7499
@brunomello7499 День назад
yes! please make a tutorial with your version, I'm rather curious :D
@ChapC_YT
@ChapC_YT День назад
Will do, stay tuned!
@faardbalsa
@faardbalsa День назад
i recommend adding some nice screenshake and or some freezeframes for the uppercut attack. rn it looks very dull and weak.
@ChapC_YT
@ChapC_YT День назад
Thank you! Yes, lots of work is needed. Thank you for the tips.
@airesnor
@airesnor День назад
Dude! Great video! But I've been thinking about your state machine code work. I think you can improve further. Make a script that is a node called state handler and make your sates become resources. After they're resources, you can save save them as a file and they become reusable for other playable character you make in the future. Most of the code in your states are in the same shape which means you're reusing a lot of code, that's why you can use a state handler node inside your playable character scene tree. That node will hold most of the code. In the states you can save your sibling states directly associated with the input they're expected to occur with or something else (like taking a hit). The framework is the same. Let's say your on the ground and take a hit you might wanna make your character stagger but if you're jumping and take a hit you might wanna fall flat. Same code but different output states. Anyways, this got longer than what I thought. Have fun bro, nice game you're making!!
@ChapC_YT
@ChapC_YT День назад
Very interesting. This is my first attempt at a state machine, and I'm pretty sure I'll eventually end up with something completely different. I like your setup; it would accommodate many 'in-between' states. I'm currently managing that by setting information in the global player.gd file. Thanks for the input!
@dibaterman
@dibaterman 4 часа назад
I think this is good for him to do further along, then again this project is simple from a coding stand point so he might be able to get away with it... but once his logic is done then just taking that code and putting them in resources is good, otherwise the time spent on the boiler plate will increase a lot and quickly as he lizard brains through it.
@maiang3301
@maiang3301 2 дня назад
i just got to S :D
@ViketAnnYuumi
@ViketAnnYuumi 3 дня назад
one way is tell yourself "are you gonna be worst thqn yandere dev?"
@ChapC_YT
@ChapC_YT 3 дня назад
Who is yandere dev? Im such a boomer... what did he do... almost afraid to ask by now
@ViketAnnYuumi
@ViketAnnYuumi 2 дня назад
@@ChapC_YT the shit is so long i just say a dev that hasnt finished his game in 10 years and is still not finished because the person behind is just playing games despite people supporting him in patreon for finish the game
@kilrath81
@kilrath81 3 дня назад
Godot needs a proper state machine. One like Unreal where it is an actual tree you can setup that shows the transitions and such. Just having a ton of "states" as nodes in a tree with a bunch of scripts specific to each node seems like a lot to process to me when you can have a proper state machine layout with visually defined transition requirements and can actually watch it and see what state you are in and see it switch states.
@ChapC_YT
@ChapC_YT 3 дня назад
Interesting... I have no experience with Unreal, so I had no idea it was that easy to do in that engine.
@travis8925
@travis8925 22 часа назад
I may be misinterpreting your comment, but Godot already has an AnimationTree node. There are still some quirks, but it does what I think you're asking for.
@randomjimbitz512
@randomjimbitz512 3 дня назад
Looking great!!! Any chance you could share you camera set up? :D
@ChapC_YT
@ChapC_YT 2 дня назад
Yes! I will be working on a 3 part tutorial pretty soon. Stay tuned.
@ASATm48
@ASATm48 3 дня назад
Hello, I have a question, can you help me?
@ChapC_YT
@ChapC_YT 3 дня назад
It can never hurt to ask. Whatsup?
@guilhermes.santos5149
@guilhermes.santos5149 3 дня назад
Great video! I'm currently working on implementing the movement system, which is already around 200 lines of code. I'm concerned that adding a combo feature could push that to an additional 400 lines. So, I'm going to look for other videos on this method to simplify the game and keep my sanity intact! 😄
@ChapC_YT
@ChapC_YT 3 дня назад
I was in the same boat. Try and download the shaggy devs source files and play around with it for a bit. Really helped me out a lot. Its im de description of his vid. What game are you making!? 😀
@DevJeremi
@DevJeremi 4 дня назад
No, games don't needs state machine, even more state machine is just one off many aprochues to the same problem, and you need find right one for you. Also starting dev journey from state machine is very hard dive. First sould be good undersding of Godot systems and GDScript scripting.
@ChapC_YT
@ChapC_YT 4 дня назад
You've heard the man!
@purpletrauma
@purpletrauma 4 дня назад
As I start trying to get game 1 off the ground, I have been trying to learn about this. More specifically, "Game programming patterns" and what a lot of developers seem to be calling "components". Breaking individual code tasks into new nodes. So you have a node for controlling physics on a character, separate node for input, separate node for each mechanic. Honestly, the project isn't complex enough to need it, I just decided to try to commit to such patterns to improve my game dev as I started. Hasn't fully clicked yet, though, in my head. I feel like the decision for what goes into its own node is arbitrary, and the overall execution feels wrong to me for reasons I can't identify. Even though so far it's a node for controlling physics on the player, a node for controlling player input, and a node with just one line of code for returning what the collider is looking at for interaction mechanics not implemented yet. Anyway, video gave me some thoughts. I knew about state machines, but I hadn't give it much thought.
@ChapC_YT
@ChapC_YT 4 дня назад
It will click eventually. Just by making games and implementing small ideas at your own pace, you'll get pretty far. I still have a bunch of videos in my watch later list about the component-based approach to programming your game. Hopefully, I can share some insights about that later on this channel! For now, this noob needs to grind for another week. ;)
@purpletrauma
@purpletrauma 3 дня назад
Yeah, I'm just bad at getting past that point. At least I made one piece of code I liked that I don't see used: @onready var main = self.owner No need to export what node you're manipulating. it goes off the assumption that the root node is what you're working on, which I feel will be the case.. pretty much all of the time since Godot has you break stuff down into scenes. Anyway, I'll keep an eye out for that video when you get there; probably gonna follow after I get around to watching a couple more videos. I got more tutorials to go through before I try to re-code my game and see if it clicks better.
@CopyCatBlack
@CopyCatBlack 4 дня назад
Sir you could have use this technique like make a function for movement where there is also the input movement like sprint, run and idle and the next function for the jump and fight and so on, after that you can simply use the function on physics process or process . I personally do that all I do is copy and past it on the other function and just need to adjust the code the way I want. Hope that also help😊
@ChapC_YT
@ChapC_YT 4 дня назад
All feedback helps! There are multiple way to go about this. But having single purpose functions that are easy to review (also after a few months) will probably be included in all good working solutions.
@CopyCatBlack
@CopyCatBlack 4 дня назад
@@ChapC_YT ❤
@Kireita
@Kireita 4 дня назад
Nice video and well explained (i subscribed), i will definitely save your videos and recommendations for my future projects but i just have some feedback on your game. Since it has smash inspired combat style and tmnt i need to criticize the the camera angle. since you want to make it 2.5D when showed a bit of gameplay i found it very hard to get a good depth perception. what i mean with this is that it is very hard to know when you are able to see when you are in front of a enemy or not (or at least close enough to hit them since i saw the colision boxes around the bees). i dont know if changing the camera angle would help (giving it a more top down view) or maybe a circle indicator on the ground when you are close enough so that you can see that you are in attacking range or somewhere in those lines because it looks very frustrating seeing a nice 3D environment where you can move around and not knowing if you can hit the 2D sprite because its flat. This is just my dutch gamer/complainer side talking. the rest of the video was very informative :).
@ChapC_YT
@ChapC_YT 4 дня назад
Spijker op de kop ;) You are completely right. I have been thinking about this a lot... at some point I accidentally turned off all z movement. While somewhat being a downgrade, the game DID feel more natural to control. So thanks! I will definitely test out multiple ways to fix this. Thanks for subbing too!
@ChknNugz
@ChknNugz 4 дня назад
The way I would've done it is to have the states each be a class snd if there were something similar about everystate make a parent class. the script handeling the character logic would then be able to store an array of a reference of each state class so the functions of the state classes can be directly called without node middlemen and would make implementation of future states easier.
@ChapC_YT
@ChapC_YT 4 дня назад
That makes sense too. There are many ways to approach it, even through add-ons or extensions. Once you understand the overall concept, there are multiple ways to implement it, I think.
@jaywalmoose9623
@jaywalmoose9623 4 дня назад
The video title will make people expect a dedicated tutorial. Like, imagine you're in a rush to code something for a deadline or game jam, you find "state machines explained" on youtube, and you skip through the first 10 minutes of the video until you finally see code. That's how a lot of people will interact with this video, if they don't close the video first
@ChapC_YT
@ChapC_YT 4 дня назад
Experienced Godot developers with deadlines, or those participating in game jams, are likely going to be just fine. This is a beginner's video, though. I understand what you mean; I deliberately avoided words like 'how to' or 'tutorial' and immediately provided tutorial links. But I like that you're not coming in guns blazing. ;) What would you change about the title? ;)
@brendanconway9849
@brendanconway9849 4 дня назад
I'd personally change it from "explanation" to "game showcase" or "game spotlight" (e.g. State Machine showcase). Either way, great video, love watching your journey through Godot.
@ChapC_YT
@ChapC_YT 4 дня назад
Sounds great, changed it to: The First Skill GODOT Beginners Should Learn - State Machine Game Showcase
@jaywalmoose9623
@jaywalmoose9623 4 дня назад
​@@ChapC_YT I can't speak for everyone, but I definitely didn't understand finite state machines before finishing my first game jam. And there's plenty of summer/college courses with assignment deadlines that teach coding to complete beginners Even if I'm wrong and no one ever needs to learn this quickly, it's still good to respect your viewer's time, instead of making them watch 4 minutes of talking (3:50 to be exact) before you say "this isn't necessarily a tutorial". Especially nowadays when people's attention spans are adapting to 1 minute videos, it's very generous to say that 4 minutes in is "immediately" providing links. By then, a lot of people will be skipping through the video to find the info they're looking for, and might not even see you saying that My title suggestion would be put "Devlog" somewhere at the start, since that's what about half of the video is, and cause most of the explanation part is at the end. My biggest suggestion is saying "this isn't necessarily a tutorial" in the first 30 seconds, if not less But I recognise that youtube rewards you for convincing as many people as possible to watch, even if the video isn't very useful to them, and it rewards you even more for getting those people to comment about it. So I can't really make you change the way you package content. It would benefit others if you made things more clear though.
@coderdbd
@coderdbd 3 дня назад
I agree, I watched the full 16 minutes of the video and I still wouldn't know where to begin implementing this in Godot. Now I have to go watch ANOTHER video to try to understand it. I don't want to be mean but this is just an ad for his game. I wish him good luck but it was a waste of time for me.
@DragilusGame
@DragilusGame 4 дня назад
Wow, I really found this state machine you made interesting. Could you make a video explaining it better and how to implement it later, and the call logic? My state machines never work that well XD
@ChapC_YT
@ChapC_YT 4 дня назад
Yes, im preparing a 2.5d tutorial that has the statemachine inplemented! Stay tuned!
@FodderBoi
@FodderBoi 4 дня назад
Looks organized, but it's not so good if want to add multiplayer. You will want to have int's / enum's then for your states.
@ChapC_YT
@ChapC_YT 4 дня назад
For like online? its probably my lack off experience, but I cant see way this setup wouldnt work for client side multiplayer for example?
@chiubaca
@chiubaca 4 дня назад
This such good timing ! I also implemented state machines using shagy devs tutorial, it made the most sense , was there other implementation u looked at too ?
@ChapC_YT
@ChapC_YT 4 дня назад
I went through basicly all youtube vids out there regarding the state machine. Also ended up messing with some extensions/add-ons.. but in the end, I wanted a more simpler aproach, more close to godots node based system, and ended up with shaggies code again. Probably depends on your game type as well. Is it working for your game as well?
@chiubaca
@chiubaca 4 дня назад
​@ChapC_YT yep so far so good, I'm creating 2.5d platformer like you too!
@ChapC_YT
@ChapC_YT 4 дня назад
Just checked it out.. I love the extra angles your character has. Are those are 3d renders into sprites?
@jbond5397
@jbond5397 4 дня назад
You look like Joseph Seed from Far Cry 5..
@ChapC_YT
@ChapC_YT 4 дня назад
hahaha nooooo not you as well! Gosh this meme will never leave me.,
@bruszan
@bruszan 4 дня назад
So the code inside these state nodes are the ones that are exclusive to that state? For example on my shooter game I want to be able to aim while moving and jumping, so assuming there can be only active state at a time, would I write the code for aimming on the player script or is it possible to have kind of two states working at the same time? Kinda how you can move while jumping in your video.
@ChapC_YT
@ChapC_YT 4 дня назад
Yes, that's correct, just 1 state at the time. BUT you can have different state machine, for example movement state machine and a weapon state machine.
@bruszan
@bruszan 4 дня назад
@@ChapC_YT That makes sense, will try to find a way to make a state machine that works on my project Good luck on yours, coming from a huge smash fan I love your concept and hope it goes well!
@ChapC_YT
@ChapC_YT 4 дня назад
How sweet! Same to you. Make sure to watch the vids in the pinned comment by the shaggy dev, he also shows an example on how 2 statemachines work.
@celsladroma8048
@celsladroma8048 4 дня назад
you deserve like, don't lost hope for your game keep learning
@ChapC_YT
@ChapC_YT 4 дня назад
Sweet words, apreciate this a lot.
@yannick5099
@yannick5099 5 дней назад
State machines are really awesome for many use-cases in software development. Not that important for many types of games, but maybe worthwhile to mention for anyone who wants a lot of units active (RTS, sims, ...): The big disadvantage of the node-per-state approach is performance because of the high number of active nodes. Using classes (or interfaces in C#) is usually my preferred approach and is just as simple to use.
@ChapC_YT
@ChapC_YT 5 дней назад
Love the insights. Interesting.
@EnigmaThePhoenix
@EnigmaThePhoenix 5 дней назад
its funny that you mentioned that the update didn't broke much for you, while on my game the state machine is busted since and i can't fix it.
@ChapC_YT
@ChapC_YT 5 дней назад
Oopfh.. beyond repair? The candidate version (or whatever it was called) broke my game completely.
@EnigmaThePhoenix
@EnigmaThePhoenix 4 дня назад
@@ChapC_YT i use: >for child in get children: <to link the children back to my base state machine script and this dosn't happen anymore. i first had it stored as a var wich worked 'till the update, after the update i tried switching to a custom signal, but nothing seems to work.
@ChapC_YT
@ChapC_YT 4 дня назад
hmm. yeah maybe you could implement something similar and link the related states by assigning them via the properties inspector? Hopefully you will figure out something soon.
@polaritymakina8440
@polaritymakina8440 5 дней назад
Funnily enough this is exactly what I decided to learn. I've been learning godot for about 5 weeks, around 2 hours a day after work. Totally new to Any programing. I feel like I've learnt a lot by doing this.
@ChapC_YT
@ChapC_YT 5 дней назад
Ah, great to hear! Sometimes I feel like a fraud, telling others what to do while I'm still a beginner myself. So it's reassuring to receive some affirmation from the field.
@srinathsurya3005
@srinathsurya3005 4 дня назад
Hello I just started today any tips ?
@ChapC_YT
@ChapC_YT 4 дня назад
Yes, subscribe!
@Swagbastian
@Swagbastian 3 дня назад
​@@srinathsurya3005Do you know how to code?
@BellachiaBaha
@BellachiaBaha 5 дней назад
Noice tips , I do use it on my projects , did u know that Sega used Godot 3 to make sonic color it was a very lovely game
@ChapC_YT
@ChapC_YT 5 дней назад
Wait what? No I didnt. Thats insane.
@BellachiaBaha
@BellachiaBaha 5 дней назад
@@ChapC_YT didn't believe it too since I was only focusing on 2d when I was using Godot 3
@eitherrideordie
@eitherrideordie 5 дней назад
Lol iwas just thinking today that i need to learn how state machines work
@ChapC_YT
@ChapC_YT 5 дней назад
Hopefull this video and the shaggy dev tuts I provided give you some helpful insights...
@kozlosoft
@kozlosoft 5 дней назад
Doesn't it sort of defeat the purpose of clean code state machine when you put in that "if". Wouldn't it be cleaner if you had two objects that have the same script attached to them but have a different animation for aggresive/non-aggressive idle
@ChapC_YT
@ChapC_YT 5 дней назад
Yes, i think a seperate script that just extends the other one would be cleaner indeed ✅🫣
@kozlosoft
@kozlosoft 5 дней назад
@@ChapC_YT at this point, since there is no difference except for animation, you wouldn't even need to extend it, just have an animation parameter and have it have different values for aggresive/non-aggressive. If it goes beyond animation, than yeah
@ceciliugh
@ceciliugh 5 дней назад
nice vid, how hard was it to animate the sprites? could you include a bit of the artsy process even if they are just placeholder?
@ChapC_YT
@ChapC_YT 5 дней назад
Hi, and THANKS! My next video will be about this process. How I (with not too much talent) went about my sprites. Keep an eye out on the channel.
@patrickaycock3655
@patrickaycock3655 5 дней назад
The shell state could be used for sliding down a mountain. Bosses could have an aerial attack that needs to be blocked.
@ChapC_YT
@ChapC_YT 5 дней назад
The shell now has a slight slowdown after running, which got me to think of this idea too. Need to figure out how to program though.
@patrickaycock3655
@patrickaycock3655 5 дней назад
Lots of npcs and dialogue eh? Name 3 that arent related to aj. XD
@ChapC_YT
@ChapC_YT 5 дней назад
Yes? Villagers mainly. Even the old demo had a bunch. After saving somebody for example, the fisherman.
@HappyCucco.
@HappyCucco. 5 дней назад
I love that it feels so clean, the organization (the game too btw, awesome attacks!)
@ChapC_YT
@ChapC_YT 5 дней назад
Thank you! All WIP but definitely happy with the current result.
@szyslay
@szyslay 5 дней назад
Basically I also work on my game and have to extend my fighting and also days are bad when it breaks 🤣 lol about nightmare
@ChapC_YT
@ChapC_YT 5 дней назад
Now im very curious about ur game 👀
@ChapC_YT
@ChapC_YT 6 дней назад
Good lord... I say 'Basically' quite a lot, basically... Also, I was quite sick during these recordings, so I sound like a robot more than usual. Anyway, check out the State Machine videos I used to learn about this topic: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-oqFbZoA2lnU.html ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-bNdFXooM1MQ.html
@johndupl
@johndupl День назад
It was fine man. Dont stress it. Thanks for the content.
@saminegamme
@saminegamme 16 часов назад
goodby random bool var named after random string characters" spinny, hit, air, fix"
@Patoajudas
@Patoajudas 9 дней назад
It was not working for me so I downloaded de 3.13 version (My blender is 4.1) and then I closed my blender and opened again, then I installed the Add-on.
@Uhfgood
@Uhfgood 12 дней назад
This is the kind of stuff I like. I don't know much about godot, especially in 3d, but could you not use Sprite3D even though it's for the background? I suppose it's something super big, so maybe the 3d sprite, would be too huge for a background. I also heard you can mix 2d in with 3d (which you are obviously doing) but what I mean is, maybe Godot in a 3d scene can use 2d nodes, I think that's what the UI is any way. So maybe you could use a "2d" parallax layer? Suggestion about gameplay, you could constrain your character to only x and y axes (you know left and right/up and down), so it's played like a traditional platformer, with a fixed-z -- otherwise people might get frustrated missing jumps because they weren't at the right "depth". The only other suggestion (although it's more work, so you may not want to) is to animate perspective, on those 2d sprites (the front ones not the floating islands in the back) -- do maybe 3 or 5 frames for perspective based on where the camera is. It will still retain the 2d look, but won't look like a flat cardboard cutout (unless you like that look). And yes I do mean hand draw the different angles - you could keep it to as little as 3 if you wanted.
@ChapC_YT
@ChapC_YT 10 дней назад
Thank you so much for your detailed feedback and suggestions! I did try using Sprite3D, but it was quite a hassle to make them static and ignore the camera perspective. I’m not too experienced with UI yet, but I believe it does use a canvas layer for that. Depth is definitely a challenge-I’ve been discovering that during recent playtests. I’ll test out your suggestion; good call on that. I was considering creating different angles for the enemies and the main character, but drawing in perspective is tough! Anyway, thanks again for the input!
@Fairbear8974
@Fairbear8974 14 дней назад
Hi Chap.C, I made the water shader that you're using 😊 and I wanted to confirm it's open source (I'll update the description to clarify). Use it however you'd like, I love the edge detection! The visuals (even the placeholder ones) are stunning and very relaxing. Looking forward to seeing this project grow!
@ChapC_YT
@ChapC_YT 14 дней назад
So cool! I revisited your shader today since mine broke for some reason after the Godot update. I noticed you added some nice edge detection yourself. Another change I made is that the shader works on any mesh size, even if it's, for example, twice as wide as it is deep. Anyway, thank you for visiting, and see you around soon. FairBear8974's Shader: godotshaders.com/shader/psx-style-water-surface-pixelation-waves-scrolling-textures/
@kdevelopergw
@kdevelopergw 16 дней назад
fellow solo dev here, and i came here to say: yeah...
@ChapC_YT
@ChapC_YT 15 дней назад
cheers!
@StickOnHair
@StickOnHair 17 дней назад
My project contains over ten thousand clips. What is the ACTUAL fix?
@ChapC_YT
@ChapC_YT 17 дней назад
Depends on the project setup. I would probably use handbreak (software) to batch and convert all the files to make them have the same audio settings.
@ensarija
@ensarija 19 дней назад
It looks amazing, exactly what I dream of making.
@ChapC_YT
@ChapC_YT 15 дней назад
thank you so much, new vid incoming in a couple of days. Made lots of progress.
@RNDMGY
@RNDMGY 19 дней назад
How can I make a 2D sprite not appear blurry when I place it in 3D mode? Can someone please help me? :>
@ChapC_YT
@ChapC_YT 15 дней назад
Yes! 2 ways: - in the import settings, disable compression and reimport - click on the sprite2d/3d node, go to inspector, go to flags... and set the texture filtering to nearest Drop by our discord so I can show you: discord.com/invite/4DMnyEDrTC
@RNDMGY
@RNDMGY 12 дней назад
@@ChapC_YT the second one works! I'll follow u from now on 😉