The bottom line
A good platforming character comes from a simple base controller tuned for snappy response, forgiving input windows and juice, with accessibility built in at the right moment. Getting that feel took almost two months, so it deserves time and a break before moving on.
Key takeaways
- A small, simple controller gives the best base to tune. 1:34
- Mark picked Shinjingi's controller over tarodev's and Mix and Jam's because it is a very small amount of code he can put his own spin on.
- It is a box with a few numbers: acceleration and top speed for snappy movement.
- Two gravities make a jump feel responsive. 2:35
- Low gravity on the way up feels floaty, and high gravity on the way down snaps the player back to the ground.
- Variable jump height applies the heavy gravity the moment the player lets go of the button.
- Forgiving input rules stop the game from punishing small timing errors. 3:06
- A jump buffer keeps a jump request alive for a few frames, so pressing just before landing still works.
- Coyote time allows a jump for a few frames after leaving a platform, and a capsule collider rounds off head bumps and edge bonks.
- Juice and instant animation make the character feel alive. 4:56
- Dust particles, a running tilt, screen shake and a magnet swing add charm.
- Anticipation frames are cut and animations interrupt each other instantly, so the robot pops up the moment jump is pressed.
- Accessibility is best added once the code is close to final. 8:45
- Too early and the code keeps being thrown out, and too late it is a nightmare to retrofit.
- Options include remapping, toggle aim, snap aim, turning off particles and shake, and tintable magnets with plus and minus symbols.
I did want to try a couple other things.
Mark, Game Maker's Toolkit
Chapter summaries
0:00 Intro
The MVP's robot felt bad to play, so the character needed a full rebuild.
- Character feel was the biggest thing to fix 0:11
- The robot felt slow and floaty.
- Landing had an annoying hitch.
- The jump was way too big.
- The throw was overly complex.
0:55 Character Controller Goals
Four goals set before opening Unity cover feel, aiming, charm and accessibility.
- Each goal targets one weakness of the MVP 0:55
- Tune the physics so moving feels good.
- Aim with a single button.
- Add charm to robot and magnet.
- Add rebindable controls and colourblind options.
- The work started in yet another blank Unity project.
- Goals one and two are ticked off later, at 6:48 and 7:43.
1:34 Tuning the Character
A borrowed controller secures the basics, and long tweaking of its numbers finds the feel.
- Starting from a downloaded controller gets the basics right 1:40
- Tarodev's controller feels very good for platformers.
- Mix and Jam's is inspired by Celeste.
- The MVP used a different controller.
- Tuning took quite a long time in a simple blocky environment.
2:59 Additional Features
Four small fixes from the Celeste movement research remove timing and collision annoyances.
- Each extra stops the game punishing near misses 3:01
- Jump buffer and coyote time work as opposites.
- Variable jump height has been in games since Super Mario Bros.
- A plain ground check ignores a jump pressed a split second before landing.
- Coyote time stops players being punished for being a few pixels too late.
4:56 Juice and Animations
Cuter art and carefully sequenced animation give the robot charm without hurting responsiveness.
- The redesigned robot is cartoonier and still instant 5:06
- Effects were borrowed from tarodev's controller.
- It is still an orange one-wheeled robot, just cuter.
- On a jump the screen pops up first and the wheel follows a second later.
- Cutting anticipation is not a hard and fast rule, only what this game needs.
5:52 More Platforms
Slopes suit the wheel, while moving platforms needed community help.
- Slopes were easy and moving platforms were a nightmare 5:58
- Slopes add verticality without constant jumping.
- GuitarKid's fix adds the platform's velocity to the player's.
- The controller doesn't gel with the Unity physics system.
- The help came from the GMTK Discord.
- Mark then made the character jump along with the platform.
6:56 Throwing the Magnet
Throwing now runs on one button, and mouse support was the hard part.
- One button handles pickup, aim and throw 7:14
- Press to pick up, hold to aim, release to throw.
- Pressing once throws quickly.
- Pickup, trajectory arc and metal snapping came over from the MVP.
- A mouse and an analogue stick are similar but not identical, so supporting both was a real challenge.
7:49 Magnet Juice
Extra animation and effects on the throw give the robot and the magnet charm and personality.
- The throw is animated so it feels like a real chuck. 7:54
- The robot swings the magnet behind itself before it throws.
- The magnet gets different facial expressions.
- Screen shake and a particle burst on a polarity change add more impact.
- Sound effects are wired up but muted, because they are placeholders and sound design is a future problem.
- Clearer magnetism visuals finish the goal of charm. 8:10
- Dan Root of Video Game Animation Study suggested big chevron arrows pointing towards the panel.
- The robot and magnet now feel like proper little video game characters.
- That meets the third goal.
8:45 Accessibility
Accessibility options are worth the effort once the code is nearly final, even though they are slow and messy to build.
- Colour options are built by tinting black and white magnets in code. 9:41
- The game is all about red and blue, so colourblind support was needed in case.
- The same chosen colour is applied to every panel in the game.
- After a Twitter suggestion, a plus and a minus symbol now show where the magnet will sail to.
- Red and blue are fairly distinguishable with most forms of colourblindness.
- Accessibility is hard and costs code, but it was worth it. 10:21
- It is time consuming and adds a lot of extra code.
- One option was dropped because it added too much junk to an already messy, oversized script.
- That meets the fourth goal.
11:01 Getting Feedback
The finished controller feels good, and a creator of Celeste confirmed it.
- An expert playtest validated the feel. 11:23
- Noel Berry, one of the creators of Celeste, played the demo and said it feels pretty good.
- In many genres the main character is the backbone of the game, so it must feel good to move.
- Patreon backers of GMTK get a short demo room.
11:48 Burning Out
A long sprint of work calls for a break, so rest comes before the next step.
- One character cost far more time than a whole game. 11:57
- The 10 level MVP took 30 days, while this one character in a test room took almost two months.
- That meant full days of coding, problem solving and bug fixing.
- Players in the GMTK Discord sent suggestions, bug fixes and caught oversights.
- Work remains, but burnout means stepping away. 12:29
- The camera is a placeholder, there is no death and respawn, and magnetism is still broken in places.
- Good game dev means watching your productivity, energy and mood.
- Time away should give perspective on the next step.
13:26 Conclusion
The series pauses for a month or so, with a Unity basics tutorial promised later.
- The devlog won the Unity award for best devlog 2021. 13:26
- Jonas Tyroller finally finished Will You Snail after four years of development.
- A basics of Unity tutorial will come later as a thank you.
- No Unity for a good month or so.
In the growth library
Mark Brown, creator of Game Maker's Toolkit, developing his first game. Shows how to turn a slow, floaty platformer character into one that feels snappy and charming, using two gravities, input forgiveness, juice, and early accessibility work. The worked example is Mind Over Magnet's robot, rebuilt over two months after the MVP's character felt bad.
More from Game Maker's Toolkit · The whole library, and ask it anything