Mario 64's Physics are not perfect

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] foreign [Music] I believe I found 37 things that could be improved about the physics and Super Mario 64. I know that sounds like a lot but I've been modding watching and analyzing this game for over 10 years now so hear me out Mario's 64's physics have truly stood the test of time captivating players for decades and spawning a gigantic speedrunning Community the game's unique movement mechanics offer a wide range of skill expression setting it apart from every other 3D AAA platformer released before and after this game from the moment it was released Mario 64 set a high bar for 3D Platformers a standard that remained unmatched for years it's crazy to see just how good the movement was when you considered that it was the first 3D platformer ever Nintendo managed to nail so many aspects right off the bat in the background you can see some footage of a major overhaul of Super Mario 64 that I've been working on while Nintendo's Foundation is undeniably amazing while working on this I've identified 37 separate things that I believe could be improved admittedly a lot of these things are so minor that the only reason I've ever noticed them was the fact that I've read every single line of the Mario 64 source code in order to perfect and optimize the code's performance on a real Nintendo 64. I have a few videos about my optimizations up as well if you'd like to check those out after this video is done these improvements I'm talking about come in three different types first in box and inconsistencies this includes things such as programming errors leading to the systems in behaving in unintended ways silly little oversights that could easily be fixed if someone had just noticed them and inconsistent math formulas that produce odd results that are definitely not desired the second is arguably poor design choices keep in mind these are not objective improvements but I think that most of you will agree with these this includes outdated Design Concepts that might not have aged well input output barriers that would put an unnecessary layer of obstruction between what the player is trying to input and what the actual output would be and dropped inputs that end up ignoring whatever button the player pressed in the last category is small physics additions I never argue that any of these are objective improvements however I still think that these are neat additions that the game would benefit from none of these are really mistakes anyone made but rather just things that would be neat if they were there these are mostly subtle changes that make the game feel better to play and a lot of these were implemented in later Mario games some of these are my own ideas too let's start by talking about the programming errors first a pretty silly one Mario bunks on walls if you ground pound in front of them this happens because his ground Pawn was detecting Mario to be hitting the wall despite being stationary this is a very simple fix and it doesn't require much explanation second have you ever tried to jump after doing a long jump under normal conditions you can't do that however if you are in a slope you sometimes can and that is only if you're holding down the Z button this was always very weird and the reason this happens has to do with how you can do multiple long jumps in place the game discards all inputs if you are not holding down the Z button in the long jump state after fixing some lazy programming you can now jump on slopes even without holding z a pretty infuriating back is the invisible walls in Mario 64. these happen because the game is falsely detecting Mario to be jumping into his ceiling usually floors are supposed to cancel out ceilings but do it to back this doesn't always happen in Mario 64 there's a trick called first frame wall kick pressing a on the first possible frame will keep your speed instead of resetting it after wall kick first frame Wall Kicks were not actually supposed to be a one frame trick he can tell from the court that they just messed up and ended up accidentally put adding it into a one Frame Window I ended up changing this mechanic a little so that instead of instantly losing all your speed on frame 2 you lose just a few units of speed every frame splatters are much smoother transition between the two behaviors to put it plain and simple Mario can move through almost every wall in the game the more slope they are the easier it gets it's pretty obvious to see why this should be fixed the fix for this is not nearly as simple as it requires a rewrite of Mario 64's internal physic logic usually the game runs 4 steps per frame then each have Collision detection I've changed this to be a single raycast which will detect every wall in the way and this Behavior now consistently Works Waltz in Mario 64 are really just false fields that push you away with two plus walls like this that means Mario will get pushed in the digit 3 motion like this this is because walls actually extend inwards and also acts as a lines the fix here is to cut the force fields where the wall ends this only works because we already implemented raycast physics in the previous step watts in Mario 64 actually under certain conditions only work for bodies with a radius of less than 50. Mario's Body when swimming is around 100 coordinates and radius why this is an issue is a bit too complicated to explain for this video but if you want I have a dedicated video just about what's up on this channel as well that you can go and watch either way this is a pretty simple fix and the walls nowhere correctly one other annoying issue with the balls is that you could hit out of bounds on corners and do it to gaps and how the wall force fields work since their axes aligned a lot of Corners have gaps as you can see here hitting out of bounds and disabled Mario's ball kicks and makes you fall to the floor which is very frustrating especially because you might just die from that let's move on to the silly little oversights these are very similar to the programming errors but they are different and that these would be super easy to fix if someone had just taken note of these issues and they don't require any complicated system updates the N64 controller has 128 input coordinates when you walk forward you typically move the controller forward rather quickly but because the game is pulled at 30 times a second there's a risk that the game pulls your input while you move the controller this happens pretty commonly and it's a very coming back in a lot of video games this can be so annoying that a few years back the Super Smash Bros melee Community had a huge discussion about making a software mod to fix this and they ultimately decided to do so despite this being pretty difficult to implement Mario 64 has the exact same issue when you input is less than eight coordinates away from the center Mario will need a few more frames to accelerate which can really throw you off because it feels random this means that Mario will randomly need 7 more frames or about quarter of a second to reach his full walking speed with this fix implemented you now consistently move the same distance when you move to stick this was not the case before Mario can grab latches under certain conditions but it can't necessarily hold on to the ledge under the same conditions this results in something called fake lead scraps where Mario grabs the latch and instantly lets go of it it is super annoying and it absolutely should be removed all that was needed here was to make it so that Mario is not going to try to grab any Ledges that he cannot hold onto when Mario jumps while he is on a slope if the slope is too steep he loses air control this is necessary to prevent players from just jumping up slopes unfortunately these physics also apply to climbable slopes which are a special Collision type that Mario 64 has on these rocks like this and it froze you off for no good reason this is also a super easy fix walking into a ceiling has the exact same behavior as walking out of bounds this is fine for a ceiling that you're riding into that is sloped towards you but it's not great for a flat ceiling like this changing the behavior to just block your movement feels a lot more natural and it gives you more options to move around the map Mario 64 on a CRT has 2 frames or 67 milliseconds of input like right out of the gate this is because most N64 games are triple buffered and the game runs at 30 frames a second however in addition to that Mario 64 has around 2 milliseconds of unnecessary input like from The Game's code pulling the input long before using them we can move the slightly later into the frame and we end up with a 2 milliseconds input like reduction I dubbed anyone is gonna perceive this at all but it's still a nice half Mario can only reference one wall at a time and which while he ends up referencing in a corner like this depends entirely on the order that they are loaded in this causes Mario to be unable to wall kick or punch one of the walls in the corner players should never have to think about the memory layout of the game they are playing and need a debugger to even figure out what is going on so I removed this and now I can reference either wall I made it so that it defaults to always referencing the wall that he is looking at sometimes all the code looks right just some math formula was set up wrong and then adds up producing janky results if you've watched the legendary watch for Rolling rocks in zero a presses video you've heard of de facto speed but here's an issue with de facto speed it's applied even when you are perpendicular to slope this looks very stupid and it's easily fixed by making it so that the defectant speed is scaled with how much Mario was actually walking into the slope I've said it before but Mario's movement is done with quarter steps the game usually runs 4 of these every frame unless his movement stage changes during this period this means that sometimes Mario only moves 25 50 or 75 of the way this is fine if it's out of bounds but it's not fine if you're just landing on the floor this has been fixed with raycast physics as well there's a very silly off by one mistake in The controller's Dead Zone usually a dead zone is supposed to look like the graph on the left where the x-axis is the controller input and the y-axis is the in-game value this hits Mario 64's Dead song looks like this the value 1 is entirely inaccessible it is also pretty easy fix and now it looks like this the Wing Cap sometimes feels a little hard to control and it's because the Wing Cap pitch angle math is all over the place this function is not smooth it makes no sense it was just stitched together by a monkey on a typewriter however by smoothing the graph into a continuous function we can improve the feel of the Wing Cap a lot and have an act a lot more predictable and now looks like this [Music] no obviously but this game being over 25 years old some of the designs used in this have since been made obsolete the swimming controls were made to take advantage of the joystick that was basically new technology at this time this was very cool back then and then you mentioned this change is going to be a bit more controversial but changing these controls to be more like what they are in Mario Odyssey makes this game a lot more intuitive and easier to control so that's what I did you can now Ascend with a descent with b and move any Direction with the joystick previously you use the joystick to influence Mario's angle and the a button to accelerate another modern concept and probably even more controversial that we can apply to Mario 64 is a kuyo timer timer allows the player to jump in mid-air while he is running all modern Platformers have one but it's not really an objective Improvement I've played around with it and I found that a two-frame timer feels good it lets players get a bit further with their jumps and players fall off Ledges much less frequently does any arguably makes the game easier but my goal here is to make the game feel better and having the players feel like their jumps are being properly input is an integral part to that an important principle in video game design is minimizing the input output barrier for most games it should be as easy as possible for the player to think of an action and then have it happen in game with no friction it's the reason most games have simple control schemes that have one button to do one thing instead of requiring complex strings of inputs one egregious example of this is Mario 64 turning after landing if you hold their Direction after landing Mario will do a half circle like this you can circumvent this by pressing forward for one frame and then back instantly does this refer to as a quick turn by the speedrunning community while it is sad to see a form of skill expression like this goal I think it's more important that players can easily predict what will happen when they make an input for this reason Mario will now automatically always quick turn talking to NPCs in Mario 64 is surprisingly difficult they require you to be touching their pushing hitbox to be able to interact with them a lot of the time players end up punching signs punching ncpcs or just jumping in place the fix here is to make it so that the NPC's Target box is bigger than a pushing one while it is unnecessarily hard to purposely talk to NPCs it's also easy to accidentally talk to one especially with the bigger hitbox now from the last change this would constantly happen in the Japanese version you actually cannot talk to NPCs with the a button I'm not sure why they changed it in the US version but probably it's got to do with talking to them being awkward all around I've reverted this back to be the Japanese Behavior this prevents almost every instance of accidentally talking to NPCs this is probably not something normal people care about but in the competitive game for an input to be consistent the input should always be a two-frame window at the minimum compare these two frames in one image Mario will land on the next frame while on the other and will take two more frames until he lands there's no visual difference here in fact Mario's render position is in the exact same spot this makes it entirely impossible to get a consistent frame perfect double jump consistently for this reason I've decided that all inputs will buffer for one frame this makes it pretty easy to do a frame perfect movement and it doesn't change anything for most normal players it also makes the first frame War kick trick consistent which I think is really cool for speedrunning on the other end of the skill Spectrum it is somewhat difficult for players to tell whether they will get a dive or a kick when pressing B in the air at low speed you'll sometimes get a dive and sometimes you'll get a kick and sometimes at medium speed you'll try to get a kick but in reality you'll get a dive the game decides whether to give you a dive or a kick based on whether your action state allows for a kick and whether your velocity is below 28. and practice players hold back if they want the kick and they hold forward if they want to dive my solution here is to give players a kick if their speed is below 28 or if they hold the stick back enough and their speed is below 38. this fits better with player expectation and an accidental kick is a lot less dangerous than an accidental dive since those can just kill you there are tons of times where an input you make is simply ignored this is pretty annoying because if you'd press a frame earlier or later the input might have worked just as intended the most prevalent version of inputs being eaten is the landing States when you land you can't do a b button input until that Landing is over some Landing States even disable the a button I think it's very weird to press a button while Mario is actionable and if nothing happened just because you have to wait another frame so I've removed this when Mario does a dive you can roll out with either the a or the B button when do a slide kick you can only use the a button not only is this inconsistent but it's also pretty annoying to try try to roll on with b and it's just not working this is easily fixed by just adding the B button to this action State long jumping and the back flipping have some special Landing code so that you can do multiple of them in a row the special codes prevents you from inputting any jump without pressing the Z button this is arguably a programming bug and it doesn't feel good at all so I decided to remove this a completely different thing is Mario's haha Landing animation this animation is cancelable only with another jump or by walking on the first few frames it can be annoying to get stuck in this so I've made it always cancelable this is consistent with how other action States like the punch or the breakdance already work this change I'm not 100 sold on but watching people play Mario 64 I've realized that a lot of people would benefit from being able to roll out of the belly slide this usually only works on flat terrain but there isn't really a reason not to let Mario also do this when facing down a slope I'm only allowing joined us while facing down though because if you are allowed to do this while facing up you would be able to roll out all the way up Peach's secret slide and we don't want that last I want to go over a few neat additions that either later games made to Mario or just stuff that I think adds some charm now this is absolutely not necessary but something Mario's Sunshine added was a little squash and stretch animation when you jump this has been shown in pretty much every clip throughout this video so far but I bet you didn't even notice I've added this effect in a very subtle manner so it doesn't get obnoxious but it still makes those jumps feel just a little more animated Mario now also has inertia this would have been useful in Rainbow right also not an objective Improvement or necessarily at all but it does make the game feel a little better if you ask me and being able to take advantage of inertia is really cool I've also added cute little sparkly particles for doing frame perfect tricks it lets the player know that they're being a good little noodle do you know the swelling animation here it takes super long to land you can hold the a button to fall even slower I've added an option to hold the Z button to fall faster there's no advantage to doing this but if you want to land quicker this is a very useful addition that will just take a bit of your misery away this is another controversial change but just like in later Mario games big fall damage is removed the big fall damage animation was a bit miserable to sit through and later games don't have one like this either now Mario just takes normal fall damage from falling from high up you can still prevent it by kicking diving or ground ponding that part is untouched I have also added a breath meter underwater I was always very silly that in Mario 64 you could heal up just by going to the surface of the water or that you could drown within a millisecond of entering the water lastly I've added the wall slide from the newer games Wall Kicks normally already have a six Frame Window to hit them and hitting them on frame 6 looks kind of funky in vanilla Mario 64. a 6 frame windmill is pretty easy for any video game player and I don't see a reason to lock bad players out of getting to move Mario around and all the ways that Mario Can Move another thing that later 3D Mario games changed was the particle effects if you look at Mario Odyssey there are a lot more particles going on than on Mario 64. backpotting some of this tomorrow 64 makes the movement feel a lot more satisfying I know some people will disagree with some of these changes because they think it makes the game too easy but really I think the difficulty in a game like this should not be with whether you can hit the buttons at the right time but rather than with whether you make the right decisions at their my time ideally Mario would feel like a natural extension of your body and there would be no friction between what you as the player wants and what Mario does all of these changes produce a movement set that feels more like everything just works movement is so consistent that even for more casual players it's perfectly possible to pull off stunts like a crazy speedrunner plus all the bug fixes really help to make the movement feel more stable I hope you enjoyed this look into possible improvements if you have a favorite scenes it seems you disagree with or want to add more improvements let me know in the comments I do read comments and you might just be able to sway my mind on some of these I'll release a demo where you can play with these changes sometime soon I was thinking of making this HD bombs photos remake here that runs on my new engine on a real Nintendo 64. that engine is capable of rendering up to 8 times faster than the original Mario 64 so it can really do some heavy lifting subscribe to stay tuned for any updates and the shout out to brilliant.org for sponsoring this video brilliant is a great platform for interactive courses to help you gain new skills and explore science it has thousands of courses on scientific topics such as math artificial intelligence and data science for this video I'd like to Showcase some analysis courses throughout this video I've used math formulas to improve the behavior of the game I've been working on and if you'd like to do similar things you'll need to pick up some math skills to try everything brilliant has to offer for free for a full 30 days visit brilliant.org Kaze manoir or click on the link in the description the first 200 of you will get 20 of brilliant's annual premium subscription [Music] [Music]
Info
Channel: Kaze Emanuar
Views: 244,839
Rating: undefined out of 5
Keywords: super mario 64, kaze emanuar, n64, nintendo, mod, download, mario, rom, emulator, retro
Id: ErkLuoJ_8qk
Channel Id: undefined
Length: 22min 0sec (1320 seconds)
Published: Sat May 20 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.