5 Reasons Your Indie Platformer Game Sucks! (+Easy Fix!)
ฝัง
- เผยแพร่เมื่อ 2 พ.ย. 2024
- Here is why your indie platformer game stinks and how to make a good platformer instead!
It all comes down to making good 2D jump and run controls! In this short tutorial I show you 5 game design tricks that make your platformer feel a lot better!
Almost every successful platformer game out there uses these tricks, so every indie game developer should know about them. It'll make your game a lot better!
Whether you make your jump and run game in Unity or a different game engine like Game Maker, Godot or Construct 2 doesn't matter. You will still be able to apply this game design knowledge there.
This is not a coding tutorial. This is simply a short tutorial on how to make really good platformer controls that your players will love!
Making a great platformer is certainly difficult and there's a lot more to it than just the movement of the character. Level design is hugely important as well.
Nevertheless, the movement is still what makes or breaks your jump and run game in the grand scheme of things.
I've seen these gamedev mistakes so often by now. I had to make a video about it, so we'll hopefully have more quality indie platformers from now on!
What was your favorite takeaway from this little platformer design tutorial? Let me know in the comments! :)
Hope your game succeeds.
GitHub Link: github.com/Loo...
Join Our Discord: / discord
Music by GoodPixelSounds:
/ @goodie_music
I want to apologize for the harsh and provocative wording in this video.
This is certainly not the only correct way to do things.
If you think this is useful, use it. If you don't, then don't. :)
Jonas Tyroller After making multiple platformers for game jams(all for fun and learning), I learned the lessons from this video through trial and error(the hard way). Also trust me, I ask myself the same question each time I make a platformer. I've actually witnessed some pretty amazing Indie platformers lately, some more well known than others. I grew up in the heyday of NES, Genesis and SNES too, so it's interesting to see newer platformers have such unique qualities. Great video though, great advice and code!!!
Great that you were able to figure all of this out by yourself. Most of these tricks are not exactly super obvious and intuitive, so good job. Also thanks for the kind words. Appreciate your comment.
No problem! Subscribed for sure too! I'm actually working on a platformer/scroller for a French game jam this weekend, so I'm trying to make this one feel/play better than the past like 8 I've done. So far, it's decent aside from the wall jump mechanic still feels kind of stiff, lol.
Cool, thanks. Good luck with the game jam then. What's the problem with the wall jump?
Thanks! It just didn't seem very responsive, the way I set it up, was by making two special sprites, one for a wall to the left, one for a wall to the right, so I could size them however I wanted and put them on any walls as "triggers" basically.
Whenever the player is detected overlapping these sprites(which were set to invisible when running the game), it would set my falling speed significantly lower and set a boolean variable(canwalljump) to true.
Depending on whichever side, when I hit the jump button while (canwalljump is true), it would propel the player negative or positive on the X axis, and of course, negative on the Y axis. I linked a video of it, but I've tweaked it a bit since I made this video.
I'm not using Unity for this jam either, Construct 2 is what I prefer for jamming/prototyping. Now once I'm ready for a serious project, Unity is what I'm going with, for many reasons.
th-cam.com/video/smmgy3mqe9Q/w-d-xo.html
TL;DR:
Jump buffering
Coyote time
Horizontal acceleration damping
Variable jump height by holding jump
Make your game unique, give it a reason to exist
+ set friction & bounciness to 0, neversleep etc
Don't add jump velocity, set y velocity to fixed value
I call Coyote Jump "Just in time Jump".
tldr be Celeste
sorry what is the meaning of TL DR ?
@@MichaelRemolif Too long, didn't read
i like how you show how to implement these suggestions with code examples
I'm trying to make these as useful as possible. :)
Yeah I love this video, put it in favorites for that.
Not just saying what is wrong but how to fix it AND the code to fix it.
Otherwise if you just said add damping and acceleration...... Ok but HOW THE HECK DO I DO THAT?!
I wouldn't ever know about Pow if it wasn't for him.
You're game sucks.
me: Ok.
And here's how to fix that.
me: SHUT UP AND TAKE MY VIEWS!
Also here's the code.
me: *I SAID SHUT UP AND TAKE MY VIEWS, LIKES AND FAVORITES!*
magnusm4 your*
@@dubiousproductions4815 no, I think he meant "you are game sucks." Lol
Kevin Mayo maybe, we will never know, xd
Best example that utilizes all of these points is super meat boy. The movement is so fluid you never feel like it is the game's design at fault when you die.
Or Celeste
ur channel icon ir soooo cursed XD
@@Robyamdam Celeste does all this and then some. For example if you press jump while climbing, you normally jump up, if you move your joystick opposite of the wall just after pressing jump, the game will still correct your velocity ;)
On this opposite end of the spectrum, you have flappy bird, which felt like the game's fault every time you died cuz it felt so weird/bad, but that was a huge sensation.
"Why do we need another platformer?"
...because I want to make one. Sure, the world might not need another platformer, but why should that stop those who want to make platformer games? I get that message was to make your platformer unique, but it could've been said better. Great tips, though!
Agreed. Could have communicated that in a better way. Hope it was still helpful.
@@JonasTyroller Totally was dude, no harm intended
Well one good reason is cause you've never made a game before and is new to the idea of publishing a game so maybe making a fun 2d platformer on Newgrounds is a good way to get in some practice?
Personally I find just making a simple game for no reason very therapeutic and helpful in making a game. Otherwise if ti's a serious project then that sticks in your head, it's serious. It must be perfect, this is your resume. It must work and be optimized.
Thoughts like that cripple you every step of the way and that's why it helps to make a game for no reason. No pressure, no judgement just do it cause why not?
@@magnusm4 same I'm making my own 2D platformer right now cuz it's so dang fun and rewarding. Platformers are probably my favorite genre
I actually thought his wording was great as it is. He didn't tell people not to make platformers, he just told them to make sure it was unique in some way and not a clone of an existing game. He says "if you find a good reason, then go straight ahead." Of course you can go ahead and make a clone of an existing game, but this video is about making a good and successful game. If you don't ask yourself why your game is unique or different and end up making a clone, then your game will get very few installs and may not be as successful, even if you find it fun yourself because games also have to be marketable. This is why he says the world might not need another platformer, because even if you make something you like, the world might not like it if it's not unique. And again, there is nothing wrong with just making a clone/similar-to-existing platformer, but Jonas is just trying to explain how to make games that are both fun and successful, not just fun.
One thing to add: *Edge Tolerance*
Allow the player to get on top of a ledge even if they collide with the side. You could push the player up a bit when they’re right next to the ledge, or you could let them grab onto the ledge, or perhaps even allow them to climb walls.
good point
Very good stuff, pinpointing exactly why my platformers always feel a little 'off'
Really glad if it helped you out. Nice! Thanks for the comment. :)
Why do we need another platformer? Because I feel like making one, and I am part of the world.
I feel like practice isn't a bad reason either.
@@johnrice5112 i agree nobody is going to make a triple a title the first time you make a game. make whatever YOU wanna make first and you will definitely learn things along the way that will eventually help you in later projects
Well the platformer genre isn't even fully explored. Hell Celeste was inventive with it's running and jumping. Some ideas I used before Celeste came out but Celeste did it better.
Besides a lot of the best elements of the best games often were added mid-development. Sure you probably shouldn't go into it with the mindset to just create a platformer, but as long as you have a base inspiration, a "direction" if you will (Sonic, Mario, Super Meat Boy...) then you should probably go for it, and ideas will come along with the development !
@@soundrogue4472 Sorry - what. The reason Celeste was a hit was the art and the responsiveness of the player - it had nothing to do with being inventive, they just did it very well.
Just found this while working on a game jam platformer, this is an incredibly useful and succinct video. Subscribed.
5a example: Mario 64 forgot to set a speed barrier for backwards movement when it added speed instead of setting speed, so that's where BLJing came from
BLJ works because of *multiplying* speed which is why the the increases in speed gets higher with each consecutive BLJ
@@dmas7749 Yeah, but *the ability to reach that speed* only works because the developers forgot to set a maximum Speed backwards. They added one for forwards, that's why it doesn't work with normal long jumps, but they forgot backwards.
It can literally be fixed with a single line of code, which modders did.
@@Max_G4 nintendo also did in the Shindou version
The feeling " why I didn't think of this before " .... kills me?
I knew all these tricks beforehand, and I just started coding. I also watch a hell ton of videos on game dev though
These are some useful tips! There's a platformer in my mind that I want to make a reality one day, and one thing that's important to me is that the character's movement needs to be quick and responsive, so that it feels like you have complete control over them.
The only exception would be when you're running; I want it to be more difficult to stop yourself or change direction (especially while jumping) because I'd like the player to actually put some thought into when they need to run, rather than just running nonstop like in a Mario platformer where there's not much risk.
0:00 Introduction
0:25 Trick 1
1:10 Trick 2
2:22 Trick 3
4:04 Trick 4
5:13 Trick 5
@@imdebestmoderfokingsosigin7861 I made this comment because it was useful to me,
so it really isn't true that there was no reason to type this comment.
I watched the video before, so I typed this comment on my 3rd watching
to more quickly skip to the parts I forgot and want to re-watch on my subsequent watchings.
@@sosasees Alright fair enough that make sense cheers
Came from a unity tutorial and my playercontroller felt so digusting after testing and testing.
Watched this video and ascended. Thank you sir.
a lot of the tutorials on making a player controller are just flat out horrible and dont really teach good methods...
@@letterslayer7814 Psssst. Can you recommend me some good ones you know of? It never hurts to learn more!
@@playerdude2 Not really a tutorial, but more of a tip: use functions for blocks of code that you use again and again.
An example of this that I used was:
void MoveCharacter(Vector2 vel)
{
rb (or whatever you named the reference to the rigidbody.velocity = vel
}
It makes the code more self-explanatory (no need for a 100 //) and more intuitive. Although it still gets a little messy. Like
MoveCharacter(new Vector2(hInput * speed, rb.velocity.y));
I applied it to my 3D-Game and now it feels a lot better! Thanks for this hints!
Bruh I was looking for coyote jump tutorial for days by now because I have never done it but you don't just show it and explain it you even share the files. You are an absolute legend!
I’m planning on making a platformer. The uniqueness will be less on the controls and more in the art style and story
That works as well. Good luck. :)
Why not try both?
@@minecraftvlogmv7203 Usually, the most successful games are the ones which only innovate on one aspect and do everything else with the pre-established best practices.
@@sosasees I don't see why you can't have good controls and also have a unique art style and story
@@BootBlixer This is not exactly what I meant.
I should've clarified that I meant the gameplay.
The most successful games usually have unique visuals, a unique story as well, but only change a few things about the gameplay compared to another game.
Good advice! I also like to make it so if you are turning around against your own momentum, you accelerate twice as fast until you are successfully accelerating in the intended direction. Makes it feel less like you are slipping around.
That jump button part might save my life. I have struggled like fucking hell to fix that problem, I have tried using a sphere collider a little underneath to fix it and it kind of works. It feels amazing but I have a little skeptical feelings of future problems. Finding solutions like these are what helps me make a 3d platformer that will actually have great controls, cause they feel responsive and fluid. I can't wait to try and implement these into a 3d platformer. Even though i'm currently taking a break from my controls to work on modeling and level design in Blender this makes me want to jump right back in to Unity and implement these.
I tried it and it's lovely. It was a little tricky to implement but it works like a charm when I fixed my own stupidity when I made it checking it's grounded part only if I pressed the jump button XP
First programming tutorial I have ever put on my favorites list. And I rarely ever put a video up there unless it's exceptional to my standards and that hasn't happened since last year many months back so you made an outstanding quick and helpful video not just for a simple 2d platformer but for many genres and games in general. I actually watched the video Better jumping in 4 lines of code or less, and he did exactly what you said not to do with only adding gravity for the controlled jump part
Adding additional gravity for the controlled jump might still be a good solution for some games. It's hard to generalize this stuff, but usually I don't like the feel of it. :D
Are you still working on your game?
@@JonasTyroller I found it situational. Adding gravity when falling was tricky to find a good amount to add that wasn't too fast and obvious and not too slow to be pointless.
But for cutting off the jump I found a good value that looked great and smooth so it depends really on the game as you said
for the final one I actually set the vertical speed to 10% and added on 20% of my jump strength variable. maybe too much math for a similar result but I like the feel better.
"Why are you making another platformer?"
My platformer is different because it's inspired by Mario Galaxy.
Oh wait.
Him: why ur game is bad
Me: you told me how to make the game
I’ve been looking for ages for how to make player movement perfect this is so helpful! Thank you so much for talking about this and how to actually fix it
Glad you found it useful. Thank you. :)
Hi Jonas, I'm learning Unity and just discovered your channel. I just wanted to say I'm learning a lot with your videos and your presentation style is very entertaining. Big thumbs up, and subscribed of course :)
I’m just fairly new to game making and platformers are a fun way to get into it. I get to bring my artwork to life and interact with it. Also I’ve implemented a system to where you can use the kickback from shooting your gun to get to platforms you typically wouldn’t be able to get to. Ik it’s been done before but I’m stoked :)
Great video, thank you for all the tips and actual examples of code!!!
1:46 Yeah ROBLOX's coyote time is so small but it really helps when performing glitches like ladder flicking and wall hop I recommend adding coyote time not only so your game feels more responsive but also so it is easier to perform goitches! :D
Cool video, my only objection would be that you might want to conserve momentum on moving platforms so forcing the y velocity prevent that feature.
Dude, so you basically compressed the lecture "Alex Rose (Alex Rose Games) - Perfecting Platform Physics" from 45 min, to 6 and explained it a lot better!
Thank you very much.
I would like to add that when the player's falling, it would be great to give the player a maximum fall speed so that it would be easier to move mid-air. It would also be nice to have the gravity of the player stronger when falling rather when jumping, giving it a more heavier and less floaty feel.
Crazy to see just how far you’ve gone
Thanks for these tips. Definitely helped to make my movement controls feel snappier.
Awesome! Subbed!!! For Trick 2, I've been trying to add a quick little motion effect or after image by the character's foot, or feet, during those "coyote jumps"! A quick lil cloud kick to give the player with some info on movement mechanics without having to tell them about it..
Even though I am making an FPS, this really helped with my jump controls!
Also, The timer idea for inputs is a massively useful idea
Ay yo thanks a lot for making this video. The first two really helped me with the platformer I’ve been working on
man this is a good video for tips that isn't even engine/code language specific.
Wow I did 4 of these without tutorials, I just did it from how it "feels", the one I didn't do was the first tip, but I'm going too (was on my todo list). I find animation can make your jump feel right too, like having an animation going up (or a single sprite) and one going down too, it really REALLY helps!
I will say my running platformer is not different to anything else, it's very standard and I'm not going to release until I find something to make it stand out.
Looking forward to trying your snail platforming game :D
Damn Jonas, those just slapped my brain and called me stoopid! These are awesome tips and me as a beginner will def implement these into my first project, thanks for you and others to inspire me to finally pursue making my own games even though I'm just a simple artist Hhah
while his advice for the high and low jump is indeed functional, it is not physics friendly, what I would suggest if your gonna have stuff pushing the player around is to just add velocity as long as the player is holding it and jumping is still true, then have a timer that starts when they begin pressing, and when the timer ends or they let go set jumping to false.
Ah, yes. That is true. Might be a bit odd when interacting with physics object at the same time. Good point. :)
Thanks for the tips dude. I am still studying how to make games and this seems pretty handy.
Great. Glad you found it useful. Keep learning. :)
This helped me a lot. I've tuned the values a little bit according to my approach with gravity. You're the best! Can you make more videos like this one when you give us some practical tricks with code, unity? Because yeah, the books don't give much, just ideas to recreate yourself, which is hard sometimes. You are a platformer god indeed!
Btw does someone know why my capsule collider on the player is sticking to the platform corners while both the player and the platform have 0 friction material?
I sense opportunities for stylish (and/or silly) animations related to if you're jumping too early or too late, along with if you're doing a full jump or a short hop.
That would be cool actually, would love to see it
2:02
The true wisdom here is not necessarily coyote time, but making sure the player gets some sort of feedback every time they press a button.
A piece of wisdom I'll drop: solid, fitting character animations can make even the wonkiest physics feel good.
I spent 5 days/10 hours working on a certain player movement level that needed to feel perfect. I tried coding the jump buffering and nothing I tried work but then I saw your simple video and I never even thought of ur code. You’re the real mvp.
how do you make the levels? I feel like it's impossible to get it down by only putting cubes and plains in it
@@duelz9366 I've never made a platformer level. I just made my comment to talk aobut the jump code. But designing settings is really hard(which i do have experience with). My advice for setting design overall would just be to get a sense of direction before you start? Like don't make stuff up as you go along. Plan it out first, because you might have a direction issue.
@@rigzmoviediaries654 Yeah definately
thanks heaps man
5:28 "It's not a bug it's a feature."
Thanx for the tips they were very usefull
even though i heard them before i never knew how to do it in coding (also because i dont know how to program to be honest)
so thanx a lot of passing the code, very good video.
Great video, helped me out a lot with my platformer :D
I like your style. Great music. Good tutorial. Thank You. :)
You're welcome. Thanks. :)
This is for future me:
0:24 Trick 1JumpRememberTime
1:11 Trick 2 GroundedRememberTime
2:21 Trick 3 Controlled Acceleration Movement (Damping)
4:03 Trick 4 HighJump - LowJump
5:12 Trick 5 Jonas TricksBundle
Nice tip for the jump height. Easy peasy.
thanks for the video, I already had not bad platformer, but now it feels amazing
Why does the world needs another 2D platformer?
* I want a game where I can play as a dragon. * Also learning how to make a video game, I want to try my hand at something that I love so that I can make potentially cool game ideas reality without the blocker that is "I don't know how". Also, *I want to play as a dragon* .
this is a really great tutorial and it helped me out a ton, thank you so much!
this is your best video. I keep coming back to it because is so helpful.
This video is so incredibly helpful and the extra little timers to make the game more responsive is really great for instilling the essence of how to make the user experience super responsive and satisfying. Thank you very very very much for this video! The jump change is also ultra helpful in of itself. Thank you again! Great video.
Wow these are pretty good tips. Thanks.
I really want to make a game but need to find an idea that I could realize in my very limited time.
You forgot to include some of the Acceleration code in the script you provided.
At 3:15 you show us an acceleration slider. Where would that variable be used? In the code you showed there doesn't seem to be an "acceleration" variable in any of the equations.
ikr
“No, I don’t think I will”
2:49 Be careful with using non-linear functions on the basis of time. This is a pretty common mistake I see in a lot of videos, but you're doing your calculations based on the time elapsed from the last frame. When using time-based non-linear functions, what you're most likely trying to achieve is follow along the curve OVER time, meaning you have to keep track of your initial time. The fact it works is because you likely do this calculation in FixedUpdate (considering it's physics calculations) meaning your deltaTime will be constant, but the end result is that you do pretty intensive CPU calculations (the power function in which each parameter is itself a calculation) when the actual calculation ends up being a multiplication by a constant number, just one that gets recalculated every frame ;)
However the function choice is the right one ! Power will always return 1 when x is 1 regardless of the power, and with a low exponent, the acceleration is very high at first and very low at the end. But to achieve your goal you'd have to keep track of the time at which the acceleration starts and do some pretty tricky calculations in the end. At the range we're working on with a platformer character it's probably not worth going farther than just adding the acceleration every frame ;) Though I guess with a 2D platformer character like here there could be an argument made to use more complicated functions.
If one was to insist using it then
- the damping would have to be a value in and of itself,
- you should track the moment you start damping (set a tracking timer at 0 when the player starts moving for basic, when the player changes direction for turning and when the player releases input when stopping)
- use the elapsed time from that initial time (add deltaTime to it each FixedUpdate frame) as the FIRST parameter of the pow function (potentially multiplied by a factor to slow it down or speed it up)
- use a fixed value as the second parameter, keeping in mind any value above 1 will make the acceleration slow at first then fast just before reaching max speed, and values below 1 will do the opposite (the farther from 1, the more intense this exponential effect of the speed will be important, one way or the other
- the result of the power function is your current speed
Just figured I'd point it out in case you want to reuse a similar algorithm ;)
😵💫
@@adamradvinsky540
Hey :)
So, I know I just wrote a LOT of text but I wanted to make it all as extensive and accessible as possible considering you mentioned being new to C#. Feel free to overlook anything you feel you might not need.
Ok so what's basically happening in Jonas' example is not exactly what I explained back then. He is doing that stuff in the Update() function BUT you shouldn't. It's now a fairly well documented fact that the physic engine in Unity updates after a FixedUpdate, not an Update. So first of all every physics based calculation should go there no matter what.
That also means my interpretation of his function was at the same time wrong and right. To get the same result as his code in Fixed Update, you can just multiply the velocity at the same step by a fixed value between 0 and 1 ( 1 meaning no damping, 0 meaning full damping which means no movement).
If you're new I'd say you can go with that solution : copy Jonas's code but use it in FixedUpdate() instead of Update(). During that damping calculation, replace the damping calculation line by :
fHorizontalVelocity *= fHorizontalDamping * Time.deltaTime;
(Time.deltaTime here is only used for consistency if fixed update timing changed after some update or some decision in your project)
Obviously this solution does limit the peak speed you can go to without using min/max functions (the faster you'll go, at some point the damping will be stronger than the speed you get per frame, so you'll end up having both balance each other out).
However I would not do damping that way. What I would probably do is calculate the "target horizontal velocity" : that is either the positive/negative max velocity if going right/left, 0 if not moving. Then I would use a fixed acceleration to go from the current velocity towards the target velocity (without overshooting it).
I will share the code for that, but before doing so let me share a couple of ideas to enhance it once you feel more comfortable with C# and applied math (scary word I know, but programmers do it all the time without being mathematicians, no worries ;) ). You could multiply that acceleration by a "bonus" factor when the acceleration is working AGAINST the current velocity (say you're going right and want to either stop or move left). That makes things snappier without removing the "grounded" feeling of a velocity/acceleration based solution. If you wanted a non-linear acceleration (not sure where it'd be useful, but I'm sure it could feel right for some game), then you'd want, as I said in my original message, to follow along the curve of a function like pow. That would mean setting ( = sign, no addition, no multiplying) the velocity to a specific position in that curve :
fVelocity = pow(abs(linearVelocity), curvatureFactor);
if (linearVelocity
@@devilblackdeath omg TYSM, i understand pretty much everything u said. im gonna implement it right now and ill show u the results :D. thx again for taking the time to help me!
@@adamradvinsky540 Glad I could help :) If anything works not as intended (didn't test the code in the editor it was mostly off the top of my head), don't hesitate to ask me again ! If you understood most of it, the cool part is you can look at how other people have handle velocity/movement in their platformers and incorporate bits and pieces if the feel is not exactly how you want it ;)
@@devilblackdeath hey, so i was wondering if it was possible to change the amoutn of time it takes to get from 0 to max speed. here is how i implumented everything. if u could wuld it be possible for u to show me the way to change my code to have a value that i can change, and it changes the amount of time it takes to go from 0 to max speed. thanks
You Sir, are a platforming genius.
Thanks. :D
Great tips!
But hm, on the pressedRemember-thing. If I tap jump twice I jump when I land, even if the timer is set to 0.01.
Could it have to do with the Addforce? Or maybe the variable jump from "Better jump with 4 lines" ?
Awesome tutorial
By the way cut the jump speed in a half after GetUp it's great but using Jump Buffer makes the next buffer jump be max high always because when we pressed the jump button before hitting the ground if we leave the button right away when he jump after it the cut speed will not be applied.
Hey, you should slow down and let the viewer see more parts of you cord and inspector. It's so hard to catch up this way. But the video and the tips were very useful, thank you.
Love your energy man. Was not prepared for it this early lol
Oh hey, welcome. :D
Those are really some good advises, and all of those is why Celeste feels so good to play! Thank you for making all those videos!
This video saved my life, and was very easy to implement! Thank you so much!!
Haha. Glad to hear it. Thank you.
During recording: I am sooooo inthusiastic
After recording: 💀
Hey, thanks for the video! I have been working on a platformer for a few weeks now, and managed to get everything working pretty smoothly. I have running, jumping, double jump and grapples that feel great. The only thing I can't get right for the life of me is wall jump. Whatever I do, my wall jump feels like shit. In particular, I can't get the sensitivity right. Either it is too sensitive and then it feels obtrusive, hindering the natural flow of the game as my character automatically clings to any nook and cranny, or it is not sensitive enough, and then it feels unresponsive and wall jump combos become nearly impossible.
My current solution is to add a wall jump button, pretty much like in Celeste, but where once you cling to a wall you will keep clinging automatically until you hit the floor, and then it resets. I also tried adding a key to toggle wall climbing on and off. These work reasonably but I don't really like them. Besides this, the only solution I can think of is to actually manually specify which tiles are clingable, which I really don't want to do.
I managed to mitigate things a little bit with some tricks like not clinging when too close to the floor, and only clinging to walls perpendicular to the ground, but this only helped a little bit.
I feel like I am doing something fundamentally wrong, and I can't find any resources on getting wall jump to feel nice.
Do you have any tips on making a wall jump that feels great? Could you maybe make a video?
This way or the other, thank you so much for your incredibly helpful content!
First I was, like, wtf is this cringe?! But then I was, like, heeeey. The 2nd one is called coyote time btw
Hehe. It's true, you need some cringe resistance to watch my channel. :D Thanks for the comment.
Love someone who knows the coyote time :P
I just searched "can coyotes double jump" because i didn't get why it was called coyote time.
@@cutthecreeper6154 It's from Looney Toons. Wile E. Coyote floats before he falls to the ground. Why do I know this lol
@@JonasTyroller Don't let them tell ya Jonas! There's another Channel related to gaming by an english speaking german dude called Ranton. He makes gooood money off of being entirely "cringe". Also one man's cringe is another mans pleasure... I cringe HARD at many things. Most modern Rappers. A "You laugh you lose" that was made somewhat recently. Most Anthro Fanart and for that matter a big chunk of deviantart... UGH. But these are apparently very popular... So don't let one mans experience tarnish how you truly want to express yourself, it's your channel after all! :)
5:32 Every word you say my brain is burning
Wow you are good, first video I see from this channel and I liked it. Thanks
Really great video! I'm working on a 2d platformer myself right now.
Great video, today I will implement some oficina this tricks in my current development!
Great. Glad I could help.
This was actually super helpful, thanks!
Thanks a lot for posting this
You know what?
Trotz deinem "Se" liebe ich deine Videos!
Erstrecht dein Video, in dem du einen lamen Knopf amazing gemacht hast! So genial!
Why does the world need another platformer?
Well, the one I'm preparing to make (trying out Unity) is flipping a couple fundamental conventions upside-down in a way that forces me to think more creatively, and puts more agency on the player in how they navigate the world and interact with items.
I think it'll be fun!
to be honest, i thought there was nothing wrong with my player and how it moves. but this video has shown me what is!
this is a pretty good video!
(although before seeing this video i already have trick 4 implemented in my game)
Ich kann nicht sagen wie dankbar ich dir für dieses Video bin! Ich entwickel grade ein Spiel mit meinem Team (5 leute) und brauchte diese Tipps grade wirklich sehr! (Sorry das ich nicht auf English schreibe, aber mein English will niemand sehen)
Alternatively for 1) You could also make an overlap circle at the ground point thereby increasing range on jump grounded collision.
Lol I’m not even good enough at Unity to program one yet so looks like I’m good for now XD
I already learned all these tips through extensive study of some of my favorite games tho 😎
Wow, Will You Snail has progressed so much!! It’s really cool to see the growth of your game
The question should have been
“What can you do with it"
Otherwise it can be said for making any game from any genre ever
Trick 1: What if you're falling from a big height? They'd be able to unexplainably jump while falling. I think a downwards raycast would be better.
"Don't create another platformer, be like me and create ANOTHER tower defense game" 🤣
Hi, Very useful tutorial, but one question, you make the variable fHorizontalAcceleration at the top of your movement script, but never use or reference it. how does this influence the movement? And if this is not used for it, where do i change the speed of the player? What variable?
I was also curious about this.
same
Hey man, I'm so glad I found your channel. I was wondering if you can make a video on the first two tricks in a little more detailed video. If not, I'll live with what I have :). +1 subscriber, thank you!
Hey, thanks for the sub. I want to make a more detailed and less insulting remake of this video anyways some time in the future. Till then I recommend you join the discord group and I'll try to assist you with your questions. :)
@@JonasTyroller I'm totally not insulted, my game sucks and I now see the solution! Haha anyways I'll be waiting for that video, thank you for your quick reply!! Where can I find your discord server? I couldnt find it in the description of this video.
@@timothyyang3417 I'll put it into the video description in a sec. :)
@@timothyyang3417 Or here if YT doesn't decide to shadow ban this reply: discord.gg/s2TRFSP
@@JonasTyroller wow awesome thank your this super quick feedback! Just joined before it gets deleted or anything, thank you!
I may need that character controller xD
Hmm. Yeah, I should probably add a github link...
Damn, those were quite clever solutions! If you don't mind me asking, where did yiu learnt all this C# stuff? I try to start learning and I want to do it effectively
Was a mixture of self taught via Unity manual, game school and some experience I brought from the language I used before (GML - Game Maker Language).
A good way to learn in my opinion is to do and experiment, not to copy. Take on challenges that fit your skill.
For maximum efficiency it would be great to have sb with coding experience look at your code and tell you how to improve it I guess.
Alrighty. I'll keep that in mind. Thank you! :)
It is probably too late to ask this, and you're not going to reply, but how do I set the jump timer in tip #1. Where it lets you jump right before you touch the ground. If I'm going to make the jump duration varied in tip #4. Wouldn't letting the player how high they want to jump also change for how long they will jump?
I wish I could get the exact same controls to work on mobile. The movement with the damping parameters.
Just if you touch right side of screen or left side of screen, no joystick.
I just can't figure it out.
Can't thank you enough! This is incredibly informative! You also made it funny which always makes things better :)
Nice. I'm glad you liked it. Thank you. :)
4:10 I hate it when games have this I'm used to games where you can't control your jump height so when I play a game with this feature I get MAD please don't asd this to your game or make it optional
"They zuck and here iz why"
xD i zont now wat yu mean
jaa hans get ze flammenwerfer
thank you for apologizing but definitely some things should be different i turn my gravity off when he jumps and make it so when he moves up he moves at a certain acceleration then turn gravity back on once you reach a certain distance and it feels fine these are more or less game feel tips than the whole game as a whole but game feel has a lot to do with that some things are things that should be added but some things you won't always want
True. That's actually exactly how I do it for my current platofmer game Will You Snail as well. If I made this video again today I'd do a better job at highlighting that there are a ton of different solutions where one is not necessarily better than the other.
Ya there's many ways to come up with a solution most of your ideas where right tho
@@notcyfhr Seems like this vid helps some people to get started with their controls. Developers who have been doing this for a while will have their own solutions. :)
Brackeys tutorial has AddForce for jumping, that's probably why so many people do #5!
I already knew all tips in this video, the msot of them you showed on your old channel :D But Nice Video!
Thanks. Now I have an English video I can link to whenever I see these "mistakes" :D
I use 3 parameters of gravity to control jumping from the inspector: jump gravity, released jump gravity and fall gravity. I play with them a bit until I think that it feels good.
I'm a newbie currently trying to implement tips 1 and 2, and I've run into a problem. If you're checking both the jump-press timer and the was-grounded timer, isn't this always going to be limited by the was-grounded timer when you jump normally? For example, if you jump up in place, by the time you fall back near the ground where the jump-press timer would apply, the was-grounded timer will be far beyond the small value intended for running off platforms. Hence the jump-timer would essentially be rendered useless.
Maybe I'm missing something obvious! :o Either way, great video; very helpful.
Never mind, I'm silly; I figured it out. I had a pretty obvious mistake in my code that I didn't see, and because of that I misconstrued what was going on.
Great tools here, love the video.
I've run into an issue where going up shorter platforms while holding the jump input triggers the jump action a second time after implementing the coyote time and input buffer timers here. Any suggestions on fixing this?
This is a very nice punch of information.