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

ความคิดเห็น • 640

  • @JonasTyroller
    @JonasTyroller  6 ปีที่แล้ว +648

    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. :)

    • @zombievirals
      @zombievirals 6 ปีที่แล้ว +23

      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!!!

    • @JonasTyroller
      @JonasTyroller  6 ปีที่แล้ว +23

      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.

    • @zombievirals
      @zombievirals 6 ปีที่แล้ว +3

      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.

    • @JonasTyroller
      @JonasTyroller  6 ปีที่แล้ว +2

      Cool, thanks. Good luck with the game jam then. What's the problem with the wall jump?

    • @zombievirals
      @zombievirals 6 ปีที่แล้ว +4

      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

  • @Alzter0
    @Alzter0 5 ปีที่แล้ว +409

    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

    • @revimfadli4666
      @revimfadli4666 4 ปีที่แล้ว +7

      + set friction & bounciness to 0, neversleep etc
      Don't add jump velocity, set y velocity to fixed value

    • @algs5483
      @algs5483 4 ปีที่แล้ว +2

      I call Coyote Jump "Just in time Jump".

    • @uwnbaw
      @uwnbaw 4 ปีที่แล้ว +8

      tldr be Celeste

    • @MichaelRemolif
      @MichaelRemolif 3 ปีที่แล้ว

      sorry what is the meaning of TL DR ?

    • @PleepusPlopus
      @PleepusPlopus 3 ปีที่แล้ว +5

      @@MichaelRemolif Too long, didn't read

  • @OmiliMusic
    @OmiliMusic 5 ปีที่แล้ว +438

    i like how you show how to implement these suggestions with code examples

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว +55

      I'm trying to make these as useful as possible. :)

    • @magnusm4
      @magnusm4 5 ปีที่แล้ว +7

      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!*

    • @dubiousproductions4815
      @dubiousproductions4815 4 ปีที่แล้ว +3

      magnusm4 your*

    • @Rammkard
      @Rammkard 4 ปีที่แล้ว +4

      @@dubiousproductions4815 no, I think he meant "you are game sucks." Lol

    • @dubiousproductions4815
      @dubiousproductions4815 4 ปีที่แล้ว

      Kevin Mayo maybe, we will never know, xd

  • @randomuser-vs3oe
    @randomuser-vs3oe 5 ปีที่แล้ว +309

    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.

    • @Robyamdam
      @Robyamdam 4 ปีที่แล้ว +22

      Or Celeste

    • @bunnlyisagamer2712
      @bunnlyisagamer2712 4 ปีที่แล้ว +4

      ur channel icon ir soooo cursed XD

    • @devilblackdeath
      @devilblackdeath 4 ปีที่แล้ว +9

      @@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 ;)

    • @jjcore7081
      @jjcore7081 3 ปีที่แล้ว +4

      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.

  • @OverexitedPlayer
    @OverexitedPlayer 5 ปีที่แล้ว +257

    "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!

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว +85

      Agreed. Could have communicated that in a better way. Hope it was still helpful.

    • @OverexitedPlayer
      @OverexitedPlayer 5 ปีที่แล้ว +29

      @@JonasTyroller Totally was dude, no harm intended

    • @magnusm4
      @magnusm4 5 ปีที่แล้ว +8

      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?

    • @actionjumper42
      @actionjumper42 4 ปีที่แล้ว

      @@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

    • @PenguinjitsuX
      @PenguinjitsuX 3 ปีที่แล้ว +1

      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.

  • @ZachToons888
    @ZachToons888 3 ปีที่แล้ว +25

    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.

  • @JordannPB
    @JordannPB 6 ปีที่แล้ว +182

    Very good stuff, pinpointing exactly why my platformers always feel a little 'off'

    • @JonasTyroller
      @JonasTyroller  6 ปีที่แล้ว +20

      Really glad if it helped you out. Nice! Thanks for the comment. :)

  • @NStripleseven
    @NStripleseven 4 ปีที่แล้ว +278

    Why do we need another platformer? Because I feel like making one, and I am part of the world.

    • @johnrice5112
      @johnrice5112 4 ปีที่แล้ว +37

      I feel like practice isn't a bad reason either.

    • @kusakus
      @kusakus 4 ปีที่แล้ว +15

      @@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

    • @soundrogue4472
      @soundrogue4472 4 ปีที่แล้ว +11

      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.

    • @devilblackdeath
      @devilblackdeath 4 ปีที่แล้ว +9

      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 !

    • @indilune1
      @indilune1 3 ปีที่แล้ว

      @@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.

  • @vordrax1014
    @vordrax1014 4 ปีที่แล้ว +10

    Just found this while working on a game jam platformer, this is an incredibly useful and succinct video. Subscribed.

  • @4Bakers
    @4Bakers 4 ปีที่แล้ว +49

    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

    • @dmas7749
      @dmas7749 3 ปีที่แล้ว

      BLJ works because of *multiplying* speed which is why the the increases in speed gets higher with each consecutive BLJ

    • @Max_G4
      @Max_G4 3 ปีที่แล้ว +1

      @@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.

    • @Oreboat
      @Oreboat 2 ปีที่แล้ว

      @@Max_G4 nintendo also did in the Shindou version

  • @hhcdghjjgsdrt235
    @hhcdghjjgsdrt235 4 ปีที่แล้ว +24

    The feeling " why I didn't think of this before " .... kills me?

    • @AN-ou6qu
      @AN-ou6qu 4 ปีที่แล้ว

      I knew all these tricks beforehand, and I just started coding. I also watch a hell ton of videos on game dev though

  • @sfc0450
    @sfc0450 4 ปีที่แล้ว +9

    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.

  • @sosasees
    @sosasees 4 ปีที่แล้ว +19

    0:00 Introduction
    0:25 Trick 1
    1:10 Trick 2
    2:22 Trick 3
    4:04 Trick 4
    5:13 Trick 5

    • @sosasees
      @sosasees 4 ปีที่แล้ว +1

      ​@@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.

    • @imdebestmoderfokingsosigin7861
      @imdebestmoderfokingsosigin7861 4 ปีที่แล้ว +1

      @@sosasees Alright fair enough that make sense cheers

  • @playerdude2
    @playerdude2 5 ปีที่แล้ว +39

    Came from a unity tutorial and my playercontroller felt so digusting after testing and testing.
    Watched this video and ascended. Thank you sir.

    • @letterslayer7814
      @letterslayer7814 4 ปีที่แล้ว +5

      a lot of the tutorials on making a player controller are just flat out horrible and dont really teach good methods...

    • @playerdude2
      @playerdude2 4 ปีที่แล้ว +4

      @@letterslayer7814 Psssst. Can you recommend me some good ones you know of? It never hurts to learn more!

    • @caidenbond1988
      @caidenbond1988 4 ปีที่แล้ว

      ​@@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));

  • @BadPaddy
    @BadPaddy 2 ปีที่แล้ว +1

    I applied it to my 3D-Game and now it feels a lot better! Thanks for this hints!

  • @tilenbicanic6172
    @tilenbicanic6172 2 ปีที่แล้ว

    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!

  • @cutthecreeper6154
    @cutthecreeper6154 6 ปีที่แล้ว +58

    I’m planning on making a platformer. The uniqueness will be less on the controls and more in the art style and story

    • @JonasTyroller
      @JonasTyroller  6 ปีที่แล้ว +19

      That works as well. Good luck. :)

    • @minecraftvlogmv7203
      @minecraftvlogmv7203 4 ปีที่แล้ว +2

      Why not try both?

    • @sosasees
      @sosasees 4 ปีที่แล้ว +3

      @@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.

    • @BootBlixer
      @BootBlixer 4 ปีที่แล้ว +1

      @@sosasees I don't see why you can't have good controls and also have a unique art style and story

    • @sosasees
      @sosasees 4 ปีที่แล้ว +4

      @@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.

  • @Ze_Chevalier
    @Ze_Chevalier 5 ปีที่แล้ว +2

    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.

  • @magnusm4
    @magnusm4 6 ปีที่แล้ว +3

    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

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว

      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?

    • @magnusm4
      @magnusm4 5 ปีที่แล้ว

      @@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

  • @ameteuraspirant
    @ameteuraspirant 4 ปีที่แล้ว +6

    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.

  • @bunnybreaker
    @bunnybreaker 3 ปีที่แล้ว +19

    "Why are you making another platformer?"
    My platformer is different because it's inspired by Mario Galaxy.
    Oh wait.

  • @CartersLilChannel
    @CartersLilChannel 3 ปีที่แล้ว +6

    Him: why ur game is bad
    Me: you told me how to make the game

  • @Runitsyourmamarun
    @Runitsyourmamarun 5 ปีที่แล้ว +1

    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

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว +1

      Glad you found it useful. Thank you. :)

  • @pheal
    @pheal 4 ปีที่แล้ว +1

    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 :)

  • @quintonneal2881
    @quintonneal2881 2 ปีที่แล้ว +1

    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!!!

  • @Monkeymario.
    @Monkeymario. 2 หลายเดือนก่อน +1

    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

  • @QvsTheWorld
    @QvsTheWorld 3 ปีที่แล้ว

    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.

  • @8o8inSquares
    @8o8inSquares 4 ปีที่แล้ว

    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.

  • @noface7842
    @noface7842 ปีที่แล้ว +8

    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.

  • @Chiken1
    @Chiken1 2 ปีที่แล้ว +1

    Crazy to see just how far you’ve gone

  • @ViciousProgressor
    @ViciousProgressor 3 ปีที่แล้ว

    Thanks for these tips. Definitely helped to make my movement controls feel snappier.

  • @swarth8632
    @swarth8632 4 ปีที่แล้ว +3

    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..

  • @HonsHon
    @HonsHon 4 ปีที่แล้ว

    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

  • @d0nk_
    @d0nk_ 3 ปีที่แล้ว

    Ay yo thanks a lot for making this video. The first two really helped me with the platformer I’ve been working on

  • @Yipper64
    @Yipper64 4 ปีที่แล้ว +2

    man this is a good video for tips that isn't even engine/code language specific.

  • @rungeon83
    @rungeon83 5 ปีที่แล้ว +1

    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

  • @Fitumie
    @Fitumie 4 ปีที่แล้ว +1

    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

  • @jadivods
    @jadivods 4 ปีที่แล้ว +1

    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.

    • @JonasTyroller
      @JonasTyroller  4 ปีที่แล้ว

      Ah, yes. That is true. Might be a bit odd when interacting with physics object at the same time. Good point. :)

  • @suenzhong7891
    @suenzhong7891 5 ปีที่แล้ว +2

    Thanks for the tips dude. I am still studying how to make games and this seems pretty handy.

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว

      Great. Glad you found it useful. Keep learning. :)

  • @Abken.
    @Abken. 5 ปีที่แล้ว

    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?

  • @ShadowWolfTJC
    @ShadowWolfTJC 3 ปีที่แล้ว +1

    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.

    • @accumulator4825
      @accumulator4825 ปีที่แล้ว

      That would be cool actually, would love to see it

  • @ZarHakkar
    @ZarHakkar 10 หลายเดือนก่อน

    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.

  • @rigzmoviediaries654
    @rigzmoviediaries654 4 ปีที่แล้ว

    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.

    • @duelz9366
      @duelz9366 4 ปีที่แล้ว

      how do you make the levels? I feel like it's impossible to get it down by only putting cubes and plains in it

    • @rigzmoviediaries654
      @rigzmoviediaries654 4 ปีที่แล้ว +1

      @@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.

    • @duelz9366
      @duelz9366 4 ปีที่แล้ว

      @@rigzmoviediaries654 Yeah definately
      thanks heaps man

  • @Monkeymario.
    @Monkeymario. 2 หลายเดือนก่อน +1

    5:28 "It's not a bug it's a feature."

  • @pubdepepe6146
    @pubdepepe6146 4 ปีที่แล้ว

    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.

  • @IrrationalMango
    @IrrationalMango 3 ปีที่แล้ว +1

    Great video, helped me out a lot with my platformer :D

  • @diliupg
    @diliupg 5 ปีที่แล้ว +1

    I like your style. Great music. Good tutorial. Thank You. :)

  • @Frankcisco
    @Frankcisco 3 ปีที่แล้ว +1

    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

  • @mattjclay
    @mattjclay 4 ปีที่แล้ว

    Nice tip for the jump height. Easy peasy.

  • @burnobad
    @burnobad 3 ปีที่แล้ว

    thanks for the video, I already had not bad platformer, but now it feels amazing

  • @AneitaLT
    @AneitaLT ปีที่แล้ว +1

    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* .

  • @eclypse_p
    @eclypse_p 2 ปีที่แล้ว

    this is a really great tutorial and it helped me out a ton, thank you so much!

  • @tutorialesdingo8767
    @tutorialesdingo8767 3 ปีที่แล้ว

    this is your best video. I keep coming back to it because is so helpful.

  • @laughinggolem9459
    @laughinggolem9459 4 ปีที่แล้ว +7

    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.

  • @LevKozlodoev
    @LevKozlodoev 2 ปีที่แล้ว +2

    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.

  • @serpaolo7413
    @serpaolo7413 4 ปีที่แล้ว +5

    You forgot to include some of the Acceleration code in the script you provided.

  • @travisislit
    @travisislit 5 ปีที่แล้ว +6

    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.

  • @weldawoolda9832
    @weldawoolda9832 2 ปีที่แล้ว +2

    “No, I don’t think I will”

  • @devilblackdeath
    @devilblackdeath 4 ปีที่แล้ว +17

    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 ;)

    • @copycancel
      @copycancel 2 ปีที่แล้ว

      😵💫

    • @devilblackdeath
      @devilblackdeath ปีที่แล้ว +1

      ​@@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

    • @adamradvinsky540
      @adamradvinsky540 ปีที่แล้ว

      @@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!

    • @devilblackdeath
      @devilblackdeath ปีที่แล้ว

      @@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 ;)

    • @adamradvinsky540
      @adamradvinsky540 ปีที่แล้ว

      @@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

  • @holidayexplanation4505
    @holidayexplanation4505 6 ปีที่แล้ว +5

    You Sir, are a platforming genius.

  • @berringervids
    @berringervids 3 ปีที่แล้ว +2

    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" ?

  • @yuriaugusto1084
    @yuriaugusto1084 4 ปีที่แล้ว

    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.

  • @Kavee_3
    @Kavee_3 ปีที่แล้ว

    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.

  • @gnitsaf
    @gnitsaf 5 ปีที่แล้ว +4

    Love your energy man. Was not prepared for it this early lol

  • @spynderMK
    @spynderMK 4 ปีที่แล้ว +2

    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!

  • @Fupicat
    @Fupicat 5 ปีที่แล้ว +1

    This video saved my life, and was very easy to implement! Thank you so much!!

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว +1

      Haha. Glad to hear it. Thank you.

  • @damonsteward8609
    @damonsteward8609 3 ปีที่แล้ว +1

    During recording: I am sooooo inthusiastic
    After recording: 💀

  • @shaideshe
    @shaideshe 2 ปีที่แล้ว

    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!

  • @siarheipilat8152
    @siarheipilat8152 6 ปีที่แล้ว +63

    First I was, like, wtf is this cringe?! But then I was, like, heeeey. The 2nd one is called coyote time btw

    • @JonasTyroller
      @JonasTyroller  6 ปีที่แล้ว +20

      Hehe. It's true, you need some cringe resistance to watch my channel. :D Thanks for the comment.

    • @mateoferretto2175
      @mateoferretto2175 5 ปีที่แล้ว +1

      Love someone who knows the coyote time :P

    • @cutthecreeper6154
      @cutthecreeper6154 5 ปีที่แล้ว +3

      I just searched "can coyotes double jump" because i didn't get why it was called coyote time.

    • @noahjames9457
      @noahjames9457 5 ปีที่แล้ว +5

      @@cutthecreeper6154 It's from Looney Toons. Wile E. Coyote floats before he falls to the ground. Why do I know this lol

    • @hiiambarney4489
      @hiiambarney4489 5 ปีที่แล้ว +1

      @@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! :)

  • @Monkeymario.
    @Monkeymario. 2 หลายเดือนก่อน +1

    5:32 Every word you say my brain is burning

  • @F4BON3
    @F4BON3 4 ปีที่แล้ว

    Wow you are good, first video I see from this channel and I liked it. Thanks

  • @matthewtimmermans2610
    @matthewtimmermans2610 2 ปีที่แล้ว

    Really great video! I'm working on a 2d platformer myself right now.

  • @czazuaga1258
    @czazuaga1258 6 ปีที่แล้ว

    Great video, today I will implement some oficina this tricks in my current development!

  • @chuckolator1859
    @chuckolator1859 4 ปีที่แล้ว

    This was actually super helpful, thanks!

  • @romb5432
    @romb5432 4 ปีที่แล้ว +1

    Thanks a lot for posting this

  • @SinanAkkoyun
    @SinanAkkoyun 4 ปีที่แล้ว

    You know what?
    Trotz deinem "Se" liebe ich deine Videos!
    Erstrecht dein Video, in dem du einen lamen Knopf amazing gemacht hast! So genial!

  • @Lugbzurg
    @Lugbzurg 2 ปีที่แล้ว

    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!

  • @yourtypicalcupoftea
    @yourtypicalcupoftea ปีที่แล้ว

    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)

  • @jesusofcarrots6593
    @jesusofcarrots6593 3 ปีที่แล้ว

    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)

  • @penguinmonk7661
    @penguinmonk7661 3 ปีที่แล้ว

    Alternatively for 1) You could also make an overlap circle at the ground point thereby increasing range on jump grounded collision.

  • @stellanovaluna
    @stellanovaluna 3 ปีที่แล้ว +3

    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 😎

    • @stellanovaluna
      @stellanovaluna 3 ปีที่แล้ว +1

      Wow, Will You Snail has progressed so much!! It’s really cool to see the growth of your game

  • @_nutcracker
    @_nutcracker 5 หลายเดือนก่อน

    The question should have been
    “What can you do with it"
    Otherwise it can be said for making any game from any genre ever

  • @SchalaArchives2023ish
    @SchalaArchives2023ish 3 ปีที่แล้ว

    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.

  • @viniciusfs
    @viniciusfs 4 หลายเดือนก่อน

    "Don't create another platformer, be like me and create ANOTHER tower defense game" 🤣

  • @metaDeWeta
    @metaDeWeta 4 ปีที่แล้ว +4

    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?

  • @timothyyang3417
    @timothyyang3417 5 ปีที่แล้ว

    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!

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว +1

      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. :)

    • @timothyyang3417
      @timothyyang3417 5 ปีที่แล้ว

      @@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.

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว

      @@timothyyang3417 I'll put it into the video description in a sec. :)

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว

      @@timothyyang3417 Or here if YT doesn't decide to shadow ban this reply: discord.gg/s2TRFSP

    • @timothyyang3417
      @timothyyang3417 5 ปีที่แล้ว

      @@JonasTyroller wow awesome thank your this super quick feedback! Just joined before it gets deleted or anything, thank you!

  • @mehmeh8883
    @mehmeh8883 6 ปีที่แล้ว +21

    I may need that character controller xD

    • @JonasTyroller
      @JonasTyroller  6 ปีที่แล้ว +8

      Hmm. Yeah, I should probably add a github link...

  • @telemonofficial6924
    @telemonofficial6924 5 ปีที่แล้ว +1

    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

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว

      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.

    • @telemonofficial6924
      @telemonofficial6924 5 ปีที่แล้ว

      Alrighty. I'll keep that in mind. Thank you! :)

  • @blackhole7818
    @blackhole7818 2 ปีที่แล้ว +1

    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?

  • @RickardApps
    @RickardApps 3 ปีที่แล้ว +1

    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.

  • @mycalltolife2651
    @mycalltolife2651 5 ปีที่แล้ว +1

    Can't thank you enough! This is incredibly informative! You also made it funny which always makes things better :)

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว

      Nice. I'm glad you liked it. Thank you. :)

  • @Monkeymario.
    @Monkeymario. 2 หลายเดือนก่อน +1

    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

  • @PirateKnO
    @PirateKnO 4 ปีที่แล้ว +6

    "They zuck and here iz why"

    • @eckiger_luki6424
      @eckiger_luki6424 4 ปีที่แล้ว +1

      xD i zont now wat yu mean

    • @verpix4956
      @verpix4956 3 ปีที่แล้ว

      jaa hans get ze flammenwerfer

  • @notcyfhr
    @notcyfhr 5 ปีที่แล้ว +2

    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

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว

      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.

    • @notcyfhr
      @notcyfhr 5 ปีที่แล้ว

      Ya there's many ways to come up with a solution most of your ideas where right tho

    • @JonasTyroller
      @JonasTyroller  5 ปีที่แล้ว

      @@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. :)

  • @danieljayne8623
    @danieljayne8623 4 ปีที่แล้ว

    Brackeys tutorial has AddForce for jumping, that's probably why so many people do #5!

  • @_ace55
    @_ace55 6 ปีที่แล้ว +3

    I already knew all tips in this video, the msot of them you showed on your old channel :D But Nice Video!

    • @JonasTyroller
      @JonasTyroller  6 ปีที่แล้ว

      Thanks. Now I have an English video I can link to whenever I see these "mistakes" :D

  • @GalanLefont
    @GalanLefont 4 ปีที่แล้ว

    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.

  • @mysticdragon123
    @mysticdragon123 5 ปีที่แล้ว

    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.

    • @mysticdragon123
      @mysticdragon123 5 ปีที่แล้ว

      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.

  • @jv9ufxcy
    @jv9ufxcy 5 ปีที่แล้ว +1

    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?

  • @feckingegg9146
    @feckingegg9146 4 ปีที่แล้ว +1

    This is a very nice punch of information.