Good thing stairs don’t exist in my game, everyone uses ramps 😂
@TheFilipFonky3 күн бұрын
Less attempts at humor and more practical solutions, please. You were listing all the problems with going down stairs, and you haved them all at 6:40 literally with "when we do it properly" and then continuing the video, not showing at all how it's done. The idea behind tutorials is that people who've watched one have a solution to their problem, not more problems. This video presents cool theories, but for anyone looking for an ACTUAL explained solution it's a waste of time
@RaneKaiser1611 күн бұрын
Why no code examples?
@NickMaltbie6 күн бұрын
Hey, the whole project is open source. I'm working on more incorporating code into my future videos and have re-made this process in Godot recently. I will definitely make a video about the new process soon! I think the GitHub repo is linked din the description :)
@RaneKaiser166 күн бұрын
@NickMaltbie i really needed to find out how to smooth the transition between the stairs teleports. But it's alright now. Decided that using weeks to build a custom controller vs buying a good one from the asset store wasn't worth it. Gotta keep the dream moving. But cool video though, watched it 5 times.
@NickMaltbie6 күн бұрын
@ try having the capsule float off the ground maybe 10-20% of its height and have to smooth damp to that position :) it’s a method I’m gonna implement at some point in the future as well.
@RaneKaiser166 күн бұрын
@NickMaltbie i had 2 sphere casts one for stairs and ramp detection and one for determining when falling animation should turn into landing animation but the slope stair cast was pulling me to the ground making the landing play on the ground and being a perfectionist I am it really sucked. Then jumping on stairs would just launch me up the stairs in a falling animation ... but year lots of different solutions for a complicated issues
@evolgenius115014 күн бұрын
I haven't seen this yet. Nor am I a game developer. But would think after playing Everquest 1, and seeing the camera ju-u-u--u-u-u-u-u-u-u-u-u-u-ump on the stairs, I would use some sort of invisible plane/ramp to make sure that doesn't do that when you walk on the stairs.... or some kind of inverse kinematics and some kind of script to "average" the camera position when on stairs or something. idk. Lemme just watch this.
@NickMaltbie6 күн бұрын
Lots of games use a camera tracker that doesn't sit in the player's head, but instead follows slightly behind the character with some damping. I've learned a lot since making this video and hopefully will be able to make a follow up at some point in the future.
@OneTrueBIue17 күн бұрын
0:14 that 4K tho
@NickMaltbie6 күн бұрын
haha, I forgot I included that in the video. Overwatch is very fun.
@purplevincent445417 күн бұрын
Player physics and movement do not have to be tied to animation. So really for performance you should just use a ramp. The camera is jittery with your method too. Either way it is mainly a problem for realistic games which is why you see advanced ik in games like gta whereas games like pokemon don't even consider it.
@NickMaltbie6 күн бұрын
I fully agree that ramps and smooth, convex surfaces with primitive objects make a much easier to calculate movement. However, there are some situations where this is not practical. You are right that animation can be disconnected from the player movement (lots of third person games do this already). Definitely a fun topic for a follow up video!
@neill658517 күн бұрын
A lot of work for just using a ramp collision mesh for the stairs and adding in character IK for the feet. EDIT: Also too, the best stairs don't jerk the camera with every step. With you're implementation you'll need to lerp the player camera too with every step.
@purplevincent445417 күн бұрын
i agree. with all due respect, he's not "solving" anything. the janky camera is way more noticeable than floating feet.
@NickMaltbie6 күн бұрын
Yep, this video is a bit dated and definitely has some room for improvement. It's good to have the physics of the character movement always be simple and non-overlapping to avoid ambiguity, but animations and camera movement should always be smooth so when possible, ramps are a great solution.
@Iolaini25 күн бұрын
Great video. Thanks for the insight, it's hard to find video on yt explaining in details the calculations for Foot IK and hip placement. I have a question calculating the release position and the grounded position doesn't this defeat the purpose of having an animation? cause it seems if one is calculating them manually they don't need animations then
@NickMaltbie6 күн бұрын
Hi, happy you enjoyed the video. When the foot is released, it will be fully controlled by the animation, this is useful for any kind of custom animation (say differentiation between walking or running, or something more custom like a dance). The computation only takes over when the player is placing the foot or lifting it off from the ground. Also, sometimes a player's feet will extend outside the collision body, and this will lead to the foot "clipping" into another object. To avoid this, I have an additional non-overlapping check that is different from locking onto the ground. I'm trying to make more detailed technical write-ups about future videos but been a bit busy between work and life the past few months. I'm trying to translate this project to Godot so hopefully will have a chance to cover it in great detail for that engine as well.
@sjerty25 күн бұрын
Thank you!
@mondzahn25 күн бұрын
Do the limbs connect to the 3d model surface or a collider?
@NickMaltbie6 күн бұрын
Limbs usually don't have any collision detection as part of them as that would be very costly to attach a physics object to a player animation bone. Usually, it's easiest to just draw a ray out from the player's hips or knee to check if it's overlapping with something. I have a video that goes more in depth on the topic as well.
@alexandervishnesky749828 күн бұрын
No, what the actual problem is, you should have either a ramp that you can walk on, with the collision that's virtually hidden behind the steps, or have a "second layer" of steps mirrored as the collision, moved halfway to the middle of the step. With having worldmodels and/or viewmodels sort of "snap" to the "physical" step as you walk up as normal. And maybe have the sort of "step up" movement per step, or double step as you sprint up as opposed to walking, if you want it intricate.
@alexandervishnesky749828 күн бұрын
And i know that the first method i mentioned is archaic _(which is "you should have either a ramp that you can walk on"),_ but if you wanted to use that one, all you would need to do, is enforce zero velocity _(if possible, not 100% certain)_ in all directions without "input." Say only in the first person, third person/entity, or the environment, or a combination any of the first three, would you move again.
@NickMaltbie6 күн бұрын
Yeah, I didn't fully present all options the best in this video. Wow... it's been almost 2 years since I published this video. I'm translating the project to godot and will include a technical write up and the costs/benefits with all the different solutions. Every solution is valid for their own scenario, but each solution has a tradeoff.
@dummithicc1212Ай бұрын
I know this video is like a year old at this point, but how come we don’t treat stairs like how we treat ladders..? I just feel like that solves the issue perfectly considering the fact that ladders are more often than not given their own respective animation and set to some sort of automatic trigger. It would theoretically solve the issue that the act of walking up and down stairs causes, wouldn’t you agree?
@NickMaltbie6 күн бұрын
Character controllers are usually modeled in a game using a state machine like model where each state represents a different type of motion (idle animation, walking, running, turning, etc...). You could add different states for climbing a ladder, walking up stairs. I have the design for this example project documented here - nickmaltbie.com/OpenKCC/docs/manual/kcc-design/kcc-fsm-design.html It's quite complex even without stairs and ladder animations. Lots of higher quality games with big budgets will have custom animations for stairs and even blend between motion capture for similar scenarios and procedural animation. It's really cool stuff to look into if you're interested, but out of scope for my project. I want to add ladders, swimming, gliding, etc... to my character controller as well, but need to get some of the basics done first!
@SobioytcccАй бұрын
What if hosts from a private network use the same port number?
@NickMaltbie6 күн бұрын
Your private network will define its own subnet, and each internal computer can have some port mapping on their internal address to anyone within the network. It's hard to cover all the nuisances in a topic in a short, but I'm trying my best to be informative :)
@Moziilla.FirefoxАй бұрын
🇵🇸
@ShrineStudiosАй бұрын
Nick, i need to get in a call with you sometime really need your help. Would you be down to call in discord any time you are free?
@NickMaltbie6 күн бұрын
If you ever want to setup a time to chat let me know. My email should be on my website and channel!
@Yellowsam4145Ай бұрын
Us Minecrafters (With no rounded hitboxes to be seen) snap to small enough elevation increases. However, jumping while going up... speed happens. I'm not really sure if snapping down exists in Minecraft but I'm pretty sure it doesn't. Minecraft also has minor camera elevation smoothness.
@NickMaltbie6 күн бұрын
Simple solutions lead to the best results sometimes. Also clipping through the walls/floor in Minecraft is almost expected so you can get away with more leniency int he animation.
@mrkemblegilstrapАй бұрын
OMG, can you talk any faster? Why are you in such a hurry? 👎
@brokedownsystemАй бұрын
Thanks...what I don't understand is why Microsoft didn't have their newer versions of their OS to automatically truncate filenames using some designated standard convention or better yet, have the default character limit *to* 32,767? It's 2024, I shouldn't be struggling stuff and be paranoid b/c I'm handicapped by that 255 character limit and now have to choose from "skip" or "cancel" in my attempt to backup a several GB folder of stuff...*sighs*
@NickMaltbie6 күн бұрын
It's an odd default choice. I think some of the newer windows 11 systems have this enabled by default, but I'm not really sure.
@Rehd662 ай бұрын
"With my character controller in Pacific.." 😆
@NickMaltbie6 күн бұрын
Shhh, I'm bad at voiceovers. Will get better one day.
@LunarBulletDev2 ай бұрын
tdd is great for huge collaborative projects where you cannot afford to have a tester test every single commit, for smaller projects the results are diminishing or it can even hamper development
@NickMaltbie6 күн бұрын
Yep, if something is one off or very simple much easier to playtest with major releases or resolve as a hotfix than setting up a custom TDD solution. My character controller benefits from it because it's a library and lets me define the bounds of expected behavior and enforce that with each release. But games might not need this level of complexity. I do enterprise software development for my job so it's a bit ingrained in how I work.
@brntcnnmn2 ай бұрын
hello! will you ever make an update on the mole movement or some kind of a tutorial? im developing a game named shadow dimmer and that's just the movement my team and I think would level up our gameplay, thanks!
@NickMaltbie2 ай бұрын
Hey, will definitely make an update on that project when I have the time :) the source code for the movement is in the OpenKCC project - github.com/nicholas-maltbie/OpenKCC/blob/a1a30ed7f7722ea82a1df6bd01849e0bfde6abf4/Assets/Samples/MoleKCCSample/Scripts/MoleCharacter.cs
@GabrielFeaR3 ай бұрын
Like a Dragon: Infinite Wealth
@marcomoutinho.gamedev3 ай бұрын
Unreal engine has a AAA quality character controller component, UE also has public source code, why dont check out how unreal devs had solve this problem?
@NickMaltbie3 ай бұрын
I haven’t used unreal much before. Unity uses Nvidia’s character controller via PhysiX and I would assume unreal does something similar. Lots of room for improvement in this video! docs.nvidia.com/gameworks/content/gameworkslibrary/physx/guide/Manual/CharacterControllers.html#:~:text=The%20character%20controller%20(CCT)%20SDK%20is%20an
@unasapres3 ай бұрын
This is actually masterfully done and executed. Well appreciated!
@rilogatorshow28453 ай бұрын
Insightful video but I have a weird personal disagreement. I can understand in abstract why these automation steps are useful, but I guess I don't have any use for them in my game? at 11:56 you outline things that are helpful to automate but I don't do those things and probably never will. In fairness the title is "MY Essential First Step" and I'm glad you shared it. It's just that nothing I work on seems even remotely near the level of complexity described in this video.
@NickMaltbie6 күн бұрын
I agree, only setup what is needed and don't add extra testing and validation if it's not necessary. Just setting up automated builds upon a major release via script (even if it's triggered manually) is usually more than enough for most projects.
@kosnowman3 ай бұрын
excellent explanation
@NickMaltbie3 ай бұрын
Thank you!
@nobodyimportant47783 ай бұрын
You should look into why every game seems like it has super low gravity. Except maybe rdr2 i guess
@NickMaltbie3 ай бұрын
Games actually have very high gravity, just the character never skips leg day and can jump extremely high making it feel like the character floats for much longer than normal.
@mrflopa36843 ай бұрын
where can i play the game ?
@NickMaltbie6 күн бұрын
This game doesn't exist yet, my friend did this as part of a project they worked on for their class. I might setup something like this later at one point.
@andressmartin84104 ай бұрын
Great video! I would love to set up some nice github actions one day. Especially to enforce code standards and linting, and run some tests.
@LondonDavisDev4 ай бұрын
Idk, I'm pretty wary of automation as it has burned me many times before. In my experience it can be a VERY, VERY valuable tool (and automation is really friggin cool); however, idealization of automation can lead to carelessly automating things that are wildly impractical to automate. This can easily eat weeks (to months) of development time with net negative returns on productivity when all is said and done. Or at least that's how things have gone for me in the past.
@NickMaltbie4 ай бұрын
Yep, definitely need to evaluate whether a task is worth automation. Some don't quite fit.
@WaterZer04 ай бұрын
Sounds like you need to automate that script writing process.
@NickMaltbie4 ай бұрын
Shhh, script writing is hard. This was only like version 5 of the video or something.
@Syvies4 ай бұрын
I wouldn't say no to a more in-depth tutorial about CI/CD automation with Godot, but the subject kind of scared me 😅
@NickMaltbie4 ай бұрын
I have something fun with “automation” that I’m working on now that doesn’t have as much of the complex ci/cd
@Bawkr4 ай бұрын
I think I'm just going to use ramps for now but that is super interesting. Classic style game so it won't be out of place in my case.
@NickMaltbie4 ай бұрын
That's great, ramps work for a lot of scenarios and should not be overlooked.
@Bawkr4 ай бұрын
@@NickMaltbie Trying to fine tune it. Ditched my capsule collider in favor of a cube and made a ramp in blender. Experimenting with having a slight lip on the top of the ramp. My character right now with built in unity physics either floats or slides down ramps. Floating is the bigger issue, he needs to fall somewhat believably. Definitely loving what I have built though. Picked the project back up recently abandoned 4 years ago I have a lot of cool ideas but I think this one is the best of all.
@NickMaltbie4 ай бұрын
Good luck on the project. Don't let a small issue like stairs delay the whole project. Sounds like you have some fun ideas.
@Bawkr4 ай бұрын
@@NickMaltbie I let not having money delay it never really got back around to it but thinking of working on it several times a week now. Kind of wonder if there are faster ways to make games now with newer unity or if it's about the same as it was in march of 2020
@thecountbassy_4 ай бұрын
Gotta brush up on you bunlish, don’tcha know da hooman is the pinecone that gives the pinecones. 😂 Thanks for the ideas fellow boony dad.
@NickMaltbie4 ай бұрын
Bonnie loves pinecones so she asks for extra commission to star in the videos.
@ernestosantangeloregaladoa8004 ай бұрын
Exciting! Love to see you back. Hope to see something in the lines of the kinematic controller in the future. Lovely video keep up the great work!
@NickMaltbie4 ай бұрын
Thanks! Still have a bit of work left to do for the Godot project but will be able to make a new video soon hopefully.
@iridelombardi4 ай бұрын
building tools for non developers or to speed up adding content is also a part of automation in my book :)
@NickMaltbie4 ай бұрын
Thanks! This was a fun video to make but was worried that it might not be as approachable for as other topics I've covered in the past.
@declanprobably5 ай бұрын
I would guarantee BotW and the other modern games mentioned use a similar system to the stepping algorithm you've implemented, and likely far, far more complex. Ramp colliders, even if still used in some areas of some modern games, are never the only thing anymore. If you don't implement some kind of stepping, then hairline cracks in anything can easily brick the whole game. In a third-person game, the movement collider can get thrown all over the place, and it doesn't matter, as long as the player model ends up in the right spot. IK deals with a lot of that last bit. I'll also add that, in first-person games, the stepping solution on its own is actually pretty common, although most modern games that have some effort put in make the camera interpolate between each step. I liked this vid as an explanation for casual observers, but I really got a bad taste in my mouth from the arrogant angle saying that developers just "don't have time" to fix this stuff, and implying that a bunch of modern AAA games haven't figured this out. This is something any gameplay dev could do, probably 10 times better, in an afternoon. Movement is a make-or-break part of any real-time game. There's constant iteration to movement code over the whole development cycle, and most games probably have dozens or hundreds of tiny little micro-adjustments throughout the character code to make it absolutely perfect, dealing with tons of tiny little things you'd never even think of until you've been fiddling with it for years. And then the next game is built with all that knowledge from the get-go, and perfected even further. For newbies especially, one of the most important skills in game development and programming in general (and life in general?) is understanding that you don't know everything about anything and never will. You don't know even what you don't know. I don't mean this as a dig at the creator of this vid, by the way :). It was a good video, and I hope millions more people find it interesting, it's just that one particular part that I thought was misleading and wanted to comment on.
@NickMaltbie6 күн бұрын
Thanks for the comment, I have learned a lot since making this video. A lot of games use the built-in physics for character controllers which sometimes have built in solutions that are "good enough" for most scenarios (like Nvidia's PhysX character controller - docs.nvidia.com/gameworks/content/gameworkslibrary/physx/guide/Manual/CharacterControllers.html ). I would say my tone was a bit off in this video, still learning how to write videos properly. I can say with certainty that there is much more I do not know about game dev as I've learned more as a software engineer over the past few years.
@declanprobably5 күн бұрын
@@NickMaltbie That's okay, hope my comment didn't come off too mean - we're always learning :). Just wanna emphasise overall it's a great video and I'm glad it exists, it's really great that more people can be introduced to and learn about these details of games that they'd never think about otherwise.
@NickMaltbie2 күн бұрын
Not rude at all, it’s valid feedback. I can always improve clarity and communication. Thanks for the feedback. I’m re-implementing this logic in godot and evaluating new solutions as well. It’s always informative to look back at your old code from many years ago.
@charfractal94415 ай бұрын
hello ,i really loved your video, and thanks for this free information, i wated to know if the models with those values on them , are from a library or available openly, ?? they seems such a good thing to test out a lot of things with !!
@NickMaltbie4 ай бұрын
Hey, the models are all free and open source in the github repo. Feel free to ask a question here or on the github pages if you have any questions
@MyLifesDreamis2WorkWithWolves5 ай бұрын
la noire has the best stairs animation i think as it dont even do that starting animation after the first step it starts from step 1
@BudgiePanic5 ай бұрын
I've been reading the text book "Game Engine Architecture" and they describe something similar to your IK solution in the animation chapter, so congratulations on independently rediscovering it
@NickMaltbie6 күн бұрын
The algorithm of locking an object down and blending between two positions is a common practice in animation. This is a very simple solution for foot placement (even if it took a while to setup). It's by no means original but it's always good to see what others have done! I just defined the requirements and wrote code to satisfy them. If they started with similar requirements in the textbook they probably have a very similar solution.
@isaacbunsen58335 ай бұрын
I find the hovercraft solution to be a bit more elegant. The character has 2 collision shapes. One for legs and one for the body. When you are walking your legs have no collision. Your elevation is determined not by gravity but a ray/shape cast toward the ground. The target distance should reach one vertical step lower than the floor. This way you have no issues with teleporting. You just glide up stairs.
@isaacbunsen58335 ай бұрын
With the hover technique, you dont need to "hide" the collision to make IK work.
@lotsoflambdas6 ай бұрын
or,like,remove the collider of the stairs and teleport the player. or like,replace all stairs with ramps because "we are in a modern society and everyone should respect those who have disabillities and have trouble walking up discrete stairs" anyhow,i dont care about aesthetics,so dont listen to me if you want your game to be suitable for more than 5% of the population.
@lotsoflambdas6 ай бұрын
like i dont care about aesthetics AND learning curve(i.e not drawing anything beautiful and not guiding players)
@mikoajgrala74946 ай бұрын
jeez, I wish I had found this video when I was working on my wall riding project. kzbin.info/www/bejne/goWnZZhtnL2GkLMsi=-sjrSsUKGxY86ZZM I just put the camera inside the player object and the math was easier
@dec_ves21906 ай бұрын
I do have a question, how can i add air control in this? Most games allow you to move in the air with limitations like not being able to move in the air instantaneously and also using a and d keys to strafe. Is there any way to add them?
@NickMaltbie5 ай бұрын
Yes, lots of existing character controllers have a “IsGrounded” or equivalent property. You can add a check when you apply player input to limit or modify player movement based on this property.
@Pravda-bw3tj6 ай бұрын
ur controller shit what a state machine... with attributes.