While I have no plans on making a 2d platformer anytime soon, this
was still really insightful to see everything that goes into even the
littlest things like a character controller
I wonder what the speedruns will be like (sub 1 any% ?)
Really fun and informative. There's a game design (well, coding in scratch, point still stands) camp near me and I'm probably going to send them this game, it's a really useful tool for learning why a jump is more than it seems!
wdym by any%? I got a 44 second time where timing starts from clicking the start button and ends when the red flag appears, and I found this cool glitch that makes you jump really high but it's hard to execute, TAS of this game would be insane lol.
Basically: speed to max, instant movement, all sliders to max in jump and double jump. Spam P to skip all text. Also, be in the toolbox mode the entire time because it makes you invincible
Hm when I play in browser, the keyboard controls don't work at all - when I press space, the page just scrolls down. I keep clicking to get the game to take context but nope. Buttons can be clicked but keyboard buttons just don't work... is this only happening for me?
(I'm using Chrome on Windows, and I have AdblockPlus...hm maybe that's why)
(Update: Nope! Disabled Adblock and still can't use keyboard at all)
some thoughts of this game: the presets didn't fill right (e.g: celeste's down gravity is too strong) double jumps seems broken (you cannot do 2nd jump if you didn't do the 1st jump, sometimes 2nd jump just misses) if you turn on the lookahead, I think the camera's position should stay still when you don't move (instead of returning to center) You should add the offsets of the camera (because many games mainly go rightward)
And I have no idea how to implement this into a real game. I'd be appreciate if you share the source code (especially the character movement)
I seriously love how nice this is to use, an amazing idea iwth great execution. I hope to see more of this in the future, be it from you or other game designers
Somehow I've softlocked it! I was changing some controls as I fell into a spike pit, and Kit didn't die. I can't jump (I assume spikes aren't technically "ground"), so I can't get out, and there's no "reset the player character" button anywhere, so I'm stuck. Even turning on Double Jumps wouldn't get me out.
It was fun while it lasted.
Interestingly, the camera seems to think I'm grounded, but that the ground is on a nonexistent platform above me.
you highlighted the screen, the same way one can highlight text in a web page by clicking and dragging over it. I did the same thing I do that a lot, try clicking outside the game screen and it should fix that ^^ (I do that a lot tbh) You can also use the download the desktop version
idk if they can stop that from happening since its an issue with notation, bot coding, but I'd also love to see it fixxed
Pretty cool tool that I will definitely recommend to people asking me about making a platformer, but it's got a few issues.
1. The rate of deceleration when you let go of the control pad and when you press the opposite direction you're travelling are always the same. Both on the ground an in the air. This means any low acceleration setting will always feel like the player lacks control when trying to turn around; either actively trying to stop or coasting to a stop will feel wrong no matter the settings. This also means there is no way to have zero momentum decay in the air but retain the ability to turn around or stop mid-air, making Mario and Sonic like controls impossible to replicate.
2. Air Control and Air Brake are separate settings, but from a game feel perspective they are the same thing: how fast the player accelerates while in the air. This creates a weird swing in momentum when turning around mid-air if braking is slower than accelerating, which makes precision impossible. It's weird to have these separate when there is no distinction between no d-pad input and actively trying to turn around.
3. You can't make down gravity less than up gravity. I can't think of a game that does this, but we should have the option.
4. Rounded corners for collision makes the player slip off when standing on a ledge. A better solution is to slightly narrow the hitbox. Platformer player hitboxes are almost never as big as the graphic for the player.
5. This isn't really an issue one can fix, but I feel is worth mentioning. The game teaches how to tailor platformer physics to level design, when in practice it's always done the other way around. You develop satisfying physics, then design levels suited to those physics. It's out of the scope of this project, but a level editor would better replicate the real world experience of making a platformer.
6. The run & jump presets for Mario and Sonic feel way off. Probably because of issue 1. "Sonic" coming to a stop in the air is especially jarring, unless you were going for Sonic the Hedgehog 4.
Air Control and Air Brake being separate allows for things like having the air control low but the break high so you can stop in mid air but you can't just drift around.
Can you add a toggle to apply deceleration when changing directions? It feels very unintuitive that pushing left can make you slow down less than letting go of the controls entirely.
I feel like floaty jumps are overlooked a lot of the time. Super Mario World and N++ would be a lot more boring if Mario or the Ninja snapped right to max speed and didn't hang in the air. I think it's wrong to say that floaty jumps are imprecise and bad on the face of it. Sure, it may take more effort to land exactly where you want, but this allows for a lot of interesting decisions and level design. Even in this demo, having a floaty jump lets you skip lots of platforms which is fun and feels great to pull off, but its scary and risky when you go that fast. If you want to be safe, then you've really got to nudge the character along and that's fun too!
N++ is a really great counterexample to the usual "floaty = bad" way of thinking, for sure. Building characters with real momentum is often difficult (see how much of a mixed bag the Sonic games are for proof of this), but if you get it right, IMO it feels far better than Hollow-Knight-style immediate corner-turning.
I literally sent this to some of my former professors in my CS program who taught the game dev courses. I hope they see it! It'd slot nicely into the early courses.
i want to see you have an encoder/decoder for the settings, so you can send a quick string to your freinds which they can punch into their game(something like 0x7FFF1FA2...etc) so they can try your character immediately and quickly
I landed on spikes while in the toolbox mode and the character didn't die, but I couldn't jump either, making me trapped. I clicked on the flag icon which despawned the character but didn't respawn it seemingly, so I'm stuck now
Making ground accel and deaccel ridiculously high and making it so the character controls a bit tighter in mid air than on the ground is actually a lot of fun
Works even better with strong downwards gravity and variable jump height
Gives you this great feeling of forward momentum and having to react on the fly
When you are editing the settings, you are immune to spikes. When you exit the settings part, you can't jump, so you are stuck in the spikes and you can't do anything.
This is absolutely fantastic :) I'm a Lecturer and 100% intend to use this with my students when discussing the 3Cs since it perfectly illustrates so many of the concepts we'll be exploring. Thank you so much for making this - I learnt a great deal. Perhaps I should take inspiration from your excellent example and attempt to come up with something similar myself...!
← Return to video essay
Comments
Log in with itch.io to leave a comment.
is there a place where I can learn how these mechanics are coded? like how the variables are used
Great lesson!
While I have no plans on making a 2d platformer anytime soon, this was still really insightful to see everything that goes into even the littlest things like a character controller
Awesome lesson !
this is fuuun, thanks!
Now this game gives me an idea for another game, where you *actually* have to adjust your character's stats to proceed.
Good instructional material! Thanks for sharing this, Mark!
I wonder what the speedruns will be like (sub 1 any% ?)
Really fun and informative. There's a game design (well, coding in scratch, point still stands) camp near me and I'm probably going to send them this game, it's a really useful tool for learning why a jump is more than it seems!
wdym by any%? I got a 44 second time where timing starts from clicking the start button and ends when the red flag appears, and I found this cool glitch that makes you jump really high but it's hard to execute, TAS of this game would be insane lol.
Basically: speed to max, instant movement, all sliders to max in jump and double jump. Spam P to skip all text. Also, be in the toolbox mode the entire time because it makes you invincible
i want make my running curve first half as a quarter circle to make my favorite game physic, but i can't.
it like, it have a light speed to speed up, you can get faster forever but you can't reach the light speed, and slow down is normal
my english is bad, hope you get it
also, a way to build custom level for testing will be cool
idk maybe speed=sqrt(-time_key_pressed^2+some_random_constant)
i mean, i want make that things in the game lol
yeah then set your speed to that
I dont think you can make any curves in the game
That was fun! I made an interesting character and it worked, (barely) but it was fun.
On the Running page, I set the nobs to 30, 10 (or 14 for harder movement), 70, Turn Speed 99.
On the Jumping page, I set the nobs to 3.1, about 3.5 and 2 gravity, Air Acceleration 10, Air Control 20, Air Break 15, Jump Cutoff 4.
On the Camera page, I set the camera to about 8, X-axis to 1.5, Y-axis, 2, and 0.2, with Ignore jumps On.
On the Assists page, I set Coyote time to about 0.17, Jump Buffer to about 0.135, and the Terminal Velocity was 14, and the Rounded Corners was On.
On the Juice page, I set the Run to 3, Jump to 5.1, Land 40, Jump 1, Land 1.17, Trail less than 1, Angle -7, Speed 60, Landing sound effect On
With this set up, it is hard to get the last spring jump, but it is fun to try.
Another set up is the same as before except:
On the Running page, Speed 14, Turn Speed 1.
On the Jumping page, Air Acceleration 1, Air Control 8, Air Break 1, Jump Cutoff 5.
On the Assist page, Rounded Corners Off.
sounds very good. i would put the speed to 14. I think it feels better ^^
Definitely an improvement on my Platformer's Toolkit! Well done!
Hm when I play in browser, the keyboard controls don't work at all - when I press space, the page just scrolls down. I keep clicking to get the game to take context but nope. Buttons can be clicked but keyboard buttons just don't work... is this only happening for me?
(I'm using Chrome on Windows, and I have AdblockPlus...hm maybe that's why)
(Update: Nope! Disabled Adblock and still can't use keyboard at all)
some thoughts of this game:
the presets didn't fill right (e.g: celeste's down gravity is too strong)
double jumps seems broken (you cannot do 2nd jump if you didn't do the 1st jump, sometimes 2nd jump just misses)
if you turn on the lookahead, I think the camera's position should stay still when you don't move (instead of returning to center)
You should add the offsets of the camera (because many games mainly go rightward)
And I have no idea how to implement this into a real game. I'd be appreciate if you share the source code (especially the character movement)
I seriously love how nice this is to use, an amazing idea iwth great execution. I hope to see more of this in the future, be it from you or other game designers
Loved it!
Would it be possible to put the source code online? Would be awesome to be able to get a look at how it's built and tweak it.
Definitely Interesting!
Somehow I've softlocked it! I was changing some controls as I fell into a spike pit, and Kit didn't die. I can't jump (I assume spikes aren't technically "ground"), so I can't get out, and there's no "reset the player character" button anywhere, so I'm stuck. Even turning on Double Jumps wouldn't get me out.
It was fun while it lasted.
Interestingly, the camera seems to think I'm grounded, but that the ground is on a nonexistent platform above me.
there seems to be a bug where it's possible to accidentally overlay the screen yellow. i dont remember what i did to cause it unfortunately
you highlighted the screen, the same way one can highlight text in a web page by clicking and dragging over it. I did the same thing I do that a lot, try clicking outside the game screen and it should fix that ^^ (I do that a lot tbh) You can also use the download the desktop version
idk if they can stop that from happening since its an issue with notation, bot coding, but I'd also love to see it fixxed
Pretty cool tool that I will definitely recommend to people asking me about making a platformer, but it's got a few issues.
1. The rate of deceleration when you let go of the control pad and when you press the opposite direction you're travelling are always the same. Both on the ground an in the air. This means any low acceleration setting will always feel like the player lacks control when trying to turn around; either actively trying to stop or coasting to a stop will feel wrong no matter the settings. This also means there is no way to have zero momentum decay in the air but retain the ability to turn around or stop mid-air, making Mario and Sonic like controls impossible to replicate.
2. Air Control and Air Brake are separate settings, but from a game feel perspective they are the same thing: how fast the player accelerates while in the air. This creates a weird swing in momentum when turning around mid-air if braking is slower than accelerating, which makes precision impossible. It's weird to have these separate when there is no distinction between no d-pad input and actively trying to turn around.
3. You can't make down gravity less than up gravity. I can't think of a game that does this, but we should have the option.
4. Rounded corners for collision makes the player slip off when standing on a ledge. A better solution is to slightly narrow the hitbox. Platformer player hitboxes are almost never as big as the graphic for the player.
5. This isn't really an issue one can fix, but I feel is worth mentioning. The game teaches how to tailor platformer physics to level design, when in practice it's always done the other way around. You develop satisfying physics, then design levels suited to those physics. It's out of the scope of this project, but a level editor would better replicate the real world experience of making a platformer.
6. The run & jump presets for Mario and Sonic feel way off. Probably because of issue 1. "Sonic" coming to a stop in the air is especially jarring, unless you were going for Sonic the Hedgehog 4.
Air Control and Air Brake being separate allows for things like having the air control low but the break high so you can stop in mid air but you can't just drift around.
epic
Amazing game, really intuitive and the UI is beautiful.
My only issue is that i can't change the settings with the controller only with the mouse.
Can you add a toggle to apply deceleration when changing directions? It feels very unintuitive that pushing left can make you slow down less than letting go of the controls entirely.
In the end, for me, it was almost identical to the Celeste one. I think it's all about control and precision in a level like this.
Awesome!
I feel like floaty jumps are overlooked a lot of the time. Super Mario World and N++ would be a lot more boring if Mario or the Ninja snapped right to max speed and didn't hang in the air. I think it's wrong to say that floaty jumps are imprecise and bad on the face of it. Sure, it may take more effort to land exactly where you want, but this allows for a lot of interesting decisions and level design. Even in this demo, having a floaty jump lets you skip lots of platforms which is fun and feels great to pull off, but its scary and risky when you go that fast. If you want to be safe, then you've really got to nudge the character along and that's fun too!
N++ is a really great counterexample to the usual "floaty = bad" way of thinking, for sure. Building characters with real momentum is often difficult (see how much of a mixed bag the Sonic games are for proof of this), but if you get it right, IMO it feels far better than Hollow-Knight-style immediate corner-turning.
nicenicenice nicenicenice I will share it in development groups !
WOW! this is a fun and cool game!
sick
Loved it!
I literally sent this to some of my former professors in my CS program who taught the game dev courses. I hope they see it! It'd slot nicely into the early courses.
i want to see you have an encoder/decoder for the settings, so you can send a quick string to your freinds which they can punch into their game(something like 0x7FFF1FA2...etc) so they can try your character immediately and quickly
Fun to just mess around w really cool!! :D
I landed on spikes while in the toolbox mode and the character didn't die, but I couldn't jump either, making me trapped. I clicked on the flag icon which despawned the character but didn't respawn it seemingly, so I'm stuck now
You can softlock yourself if you fall onto the spikes with the menu open.
Making ground accel and deaccel ridiculously high and making it so the character controls a bit tighter in mid air than on the ground is actually a lot of fun
Works even better with strong downwards gravity and variable jump height
Gives you this great feeling of forward momentum and having to react on the fly
Makes me want to make that into an actual game...
When you are editing the settings, you are immune to spikes. When you exit the settings part, you can't jump, so you are stuck in the spikes and you can't do anything.
This is absolutely fantastic :) I'm a Lecturer and 100% intend to use this with my students when discussing the 3Cs since it perfectly illustrates so many of the concepts we'll be exploring. Thank you so much for making this - I learnt a great deal. Perhaps I should take inspiration from your excellent example and attempt to come up with something similar myself...!