Board Thread:Off Topic/@comment-28122105-20170409172336/@comment-28122105-20170410195613

(sasser) What? I have no hard copies anywhere!

In this video I'll be explaining exactly what I do to collect Watch for Rolling Rocks in 0.5 A presses. But first we need to clear something up because every time I post a half A press video I get the same comments over and over asking what it means, even though I always have a whole paragraph in the description explaining it, which even starts with "If you're wondering what a half A press is, read this before commenting to ask." But maybe what you guys need isn't a paragraph, maybe you guys need an example. So consider Wing Mario Over the Rainbow, not even the whole star, just consider getting to that cannon platform which is a necessary part of getting the star. So how many A presses does it take to get there? Well if you say zero, that's wrong because then Mario can't go far enough. If you say one, well it's true that Mario can get there with one, but we can do a little better. We can do it in half an A press. To do that we start the level already holding A and then we use that A press to reach the platform. Now hold on, I know what you're thinking. "An A press is an A press. You can't say it's only a half." Well TJ "Henry" Yoshi, hear me out. An A press actually has three parts to it, when A is pressed, when A is held, and when A is released. Now usually it's the pressing that's useful because that's the only part that makes Mario jump. However sometimes it's sufficient to just use the holding part which allows Mario to do little kicks, swim in water, fall slowly while twirling, and fall slowly with the wing cap. As for the release, well there's currently no cases where that's useful or important, so don't worry about that part. Now if we map out the required A presses for Wing Mario Over the Rainbow, it would look like this; we merely need to hold A to reach the cannon platform, we need to press A to launch from the first cannon, and we need to press A again to launch from the second cannon. So how many A presses does that total? Well it appears to be three, and if we were doing the star in isolation, yeah, it would be three. But in a full game A button challenge run, there are other A presses that occur earlier in the run, such as this A press needed to get into the course, so if we take that A press into consideration as well, then how many A presses will it take? The naive answer would be four, one to enter the course, and the three within the course that we established earlier. However, we can do better. We can actually do it in three by simply holding out the first A press to be used for the half A press because the half A press only requires A to be held, not actually pressed. So in this fashion, Wing Mario Over the Rainbow only adds on an additional two A presses to the run, since the first A press just leeches off of a previous A press. So to capture this phenomenon, we call it 2.5 A presses. On a single star basis, we'd round that up to three, but in a full game run, we'd round it down to two. So, in conclusion, since that first A press counts in some contexts, but adds no additional A presses in other contexts, we refer to it as a half A press. So, going back to the video, you can see that I start the level with the A button already held as indicated in the bottom left corner, and so on the full game run, this A press will just leech off of a previous one, and so it won't incur an additional A press. OK, glad that's explained. Now, what am I doing in the video? Here I'm using a trick called Scuttlebug Transportation. You see, like most enemies Scuttlebugs have a home which is just a point in 3D space, and they'll patrol a certain radius around that point. So, if Mario enters that radius they'll lunge at him to attack. But unlike most other enemies, a Scuttlebug's home can change positions because if a Scuttlebug bumped into Mario, the Scuttlebug's home will update to where the Scuttlebug was when the collision occurred. So, by strategically luring the Scuttlebug's home to the edge of it's radius and bumping into it, we can effectively transport the Scuttlebug and it's home. So, that's what I'm doing here. Note that we can't actually transport a Scuttlebug to outside of it's native room. They actually get stuck at the door. So, if your dream was to bring all the Scuttlebugs together for one big jamboree, I'm sorry, but it's not going to happen. Also worth noting is that Scuttlebugs will actually disappear if they walk into a wall while too far below their current home, so I do have to be careful to avoid that. It's pretty weird if you've never seen it before, but I'm pretty sure they did it so that if a Scuttlebug jumps into a hole, it wouldn't just walk around down there. Anyway, I'm transporting the Scuttlebug to the corner right below the Watch for Rolling Rocks star, because next I do a trick called Scuttlebug Raising, and here's how it works. On the left I show a bird's-eye view of the scene, and on the right I show a view from the side. Now, when Mario leaves the rolling rocks room, the Scuttlebug deactivates. That's because the room, and everything in it, are only active when Mario's in the room, or standing in a small region right outside the door, indicated here in yellow. So, if Mario isn't in the rolling rocks room or in the yellow region, then the room will be completely black and everything in the room will be invisible and won't move. Conveniently, this allows us to raise the Scuttlebug by preforming the following steps; first, Mario enters the Scuttlebug's radius. Although the Scuttlebug is invisible and can't move around, it can still turn towards Mario and activate a lunge. Then, Mario leaves the radius and the Scuttlebug returns to facing it's home. Next, Mario enters the yellow region to activate the Scuttlebug. The Scuttlebug will preform the lunge that it started, but cleverly, we have Mario exit the yellow region right when the Scuttlebug is at the peak of it's trajectory, there by deactivating it so it won't fall down. And finally, since the Scuttlebug moved past it's home, it turns around to face it's home once more. Now, we've gotten all the height we could out of the Scuttlebug's current lunge, but that's no problem, because we can just activate another lunge by repeating this procedure. Activate a lunge while the Scuttlebug is deactivated, reactivate the Scuttlebug just for the upwards portion of it's trajectory, and then repeat. As simple as that! So that's what I do here, and I have a second screen to show it from the Scuttlebug's perspective. Fortunately, the Scuttlebug's radius isn't a sphere, but a cylinder that extends up and down infinitely. So really, no matter how high this Scuttlebug gets, we can continue to enter it's are to activate it's lunges and move it upwards, there's no limit to how high we can raise it. Now, it's worth noting that I only activate the Scuttlebug while I'm not inside it's radius, so the Scuttlebug will always lunge towards it's home, and not towards Mario. This causes the Scuttlebug to effectively travel straight up above it's home, but alternatively I could have activated the Scuttlebug while inside of it's radius, and in that case the Scuttlebug would always lunge towards Mario, instead of towards it's home, so it would actually make it's way towards the door and then travel straight up from there. That meant it's actually a little faster because we wouldn't have to wait for the Scuttlebug to turn back towards it's home before each activation. However, it wouldn't work for what we're doing, because we need the Scuttlebug to be right next to that corner. In fact, the top of that corner has a special property which we call a Misalignment. Basically, in the game's code, there's a discrepancy between the way the game handles collision checking with floors versus walls. This results in a 1 by 1 unit area where Mario can get under the floor without being pushed away by the walls, and if Mario is less than seventy nine units under a floor, he will snap right up onto it. So that will be important later for getting up there. Anyway, now it's time to build up some speed, and I mean a lot of speed. So to get that speed, we're going to use a trick called Hyper Speed Walking, and here's how it works. You probably already know that there are some slopes in the game that are too steep to stand on, Mario just slides off of them. But, did you know that you actually can stand on these slopes if they're submerged in shallow water? In fact, the underwater portion of these slopes has a special property, if you try running uphill on them you'll end up running backwards at an increasing speed with no upper bounds. But in most circumstances this would cause us to end up in the water before building up any real speed. We can get a little more speed by running nearly parallel to the slope, but ever so slightly uphill, but eventually the slope runs out or we move too fast around around the corner. But there are some ways to have Mario walk while staying in place. For example if there's a wall perpendicular to the slope, then we can use that. That allows Mario to build up quite a bit of speed before he breaks through. However, if the wall isn't perpendicular to the slope, then we end up sliding down into the water. That's because walls are really just rectangles that push Mario out perpendicularly. So, if Mario moves into a wall at an angle, the game will calculate his intended next position, then the wall will push that position out, and then Mario ends up having a net movement along the wall. So ultimately, he'll end up moving into the water. So, is all hope lost? Well, no because Tyler Kehne figured out that we can actually make use of the gate. You see, the bottom of the gate is a ceiling, and the game doesn't like putting Mario too close to the area right under a ceiling, because it doesn't think he fits. So, if we have Mario move backwards into the ceiling, the game will choose not to move him, so we're free to build up speed in place, But not infinite speed because we end up breaking free if our speed moved past the gate. So what do we do? We turn to redirect our speed out of bounds. Notice that we now have enough speed so that our intended next position is past the wall and out of bounds, and since the game doesn't like placing Mario out of bounds, it doesn't move him, and instead just lets him stay in place, just like the ceiling. But unlike the ceiling, out of bounds goes on forever, so we can essentially build up as much speed as we want without having to worry about breaking free. So now, I do just that. Open the gate, use the ceiling of the gate to build up some speed, and then redirect my angle out of bounds to build up the rest. Now, you're probably wondering what I'm going to need all this speed for, after all, I do build up speed for 12 hours. But to answer that, we need to talk about parallel universes. And if you thought my other tangents were complicated, just you wait. Ok, so Mario's position is a floating point number, but it's converted to a shot when the game uses it to test for collision with four triangles. In other words, Mario's position can basically be any decimal number, but it's converted to an integer between -32,768 and +32,767 inclusive, so any fractional portion is truncated, and numbers too big or too small are moved into this range using the modulo operator. Graphically, that means that the position used for floor detection is always inside of this box, So if Mario's in that box then his actual position and the position used for floor detection are the same, I'll be it maybe off by a single fraction due to the truncation. But if Mario leaves that box, then his actual position and the position used for floor detection will separate, since the position used for floor detection will just loop back around to remain in the original box. So now I ask you this, Here's the course, so if Mario is standing way over here where there's no land, but the position used for floor detection is on land, can he stand over here? The answer is yes. As far as the game sees it, Mario is in fact above land over here because the game actually checks for land over here. So for all intents and purposes, there is essentially land over here, a copy of the original map, and this is what we call a Parallel Universe, or a PU, and this applies to every one of these boxes so there's actually a grid of nearly infinite PUs. Here is a scale diagram of the PU grid. As you can see, the PUs are actually pretty far apart, but I'll be taking some creative liberties and drawing them closer together for the sake of clear visuals. Now, PUs aren't as glamorous as you might think, the graphics are only found on the original map, no the PUs are completely invisible. Furthermore, PUs have no objects, like elevators or item blocks, no enemies, no items, like coins or stars, and not even any walls, so really, it's pretty barren. Furthermore, the N64 console will actually crash if you go to a PU and let the camera follow you, but luckily, we can avoid that crash by fixing the camera in place on the original map before leaving it, though that does make it even harder to tell what's going on in the PUs. So, as you just saw, you can travel to a PU if you have enough speed, but it's not as simple as you might think. If you have just enough speed to reach the PU one over, it won't actually work. That's because the game actually checks if Mario's above land each quarter step of his movement. That means the simplest PU movement is moving over four PUs at once, that way each quarter step is above land and therefore valid. For simplicity, we call this Quadruple PU distance one QPU. Now, up until this point I've been glossing over a very important detail which I now need to clear up. What if I told you the distance Mario moves isn't necessarily equal to his speed? For example, look how fast Mario moves at 31 speed on this flat slope, and now compare it to how fast he moves at the same speed on this steeper slope. In both cases, he has about the same speed, but clearly he's moving at a different rate. That's because the distance Mario moves is only a portion of his actual speed, and this portion depends on the slope of the ground. The steeper the slope, the smaller this portion is. Note that it only depends on the steepness, not whether Mario is facing uphill, downhill, or sideways on the hill. In these visuals, blue will represent Mario's actual speed, and green will represent the portion of it that he moves, which we call Mario's De Facto Speed. So in these 3 pictures, Mario has the same speed, but he has different De Facto Speeds, since he's standing on slopes with different steepness-es. So, if we want to move one QPU, it's not sufficient to have QPU speed, we need QPU De Facto speed, which often means our actual speed will need to be greater than QPU to compensate. So to reiterate, we need to increase our speed until our De Facto speed syncs up with one QPU, and the speed needed to do this is called the Syncing Speed. So in this diagram, the blue arrow represents the Syncing speed. When we have that speed, the quarter-steps of the De Facto speed sync up with the PU's and we can move. Now, what I'm showing here is just the lowest, or first Syncing speed, AKA the speed to move exactly 1 QPU. If we increase our speed, our De Facto speed would sync up again when it covers a distance of 2 QPU, and so we'd be able to move at that speed which is two times as fast as before. So in general, any multiple of the lowest Syncing speed is itself a Syncing speed, and we'll cover multiple QPU at once. So remember, every slope has a different set of Syncing speeds, and this can make rallying tricky. For example, in the video where I do PU movement to reach the Secret Aquarium, I had to traverse several different slopes. First, this slope that I used for hyper speed walking, then this slope at the edge of the water, then the flat ground of the castle foyer, then the castle stairs which is really a steep ramp, and then the flat ground of the upstairs, and note that the stairs that you see there are actual stairs and not a ramp, so they're just flat ground. Here is a graph showing the syncing speeds for each of these slopes, and so these are the speeds I need in order to have PU movement while standing on each of these slopes. Naturally, the steeper slopes have greater syncing speeds. Now, keep in mind that I can only build up speed while I'm on the hyper speed walking slope. Once I leave it, I can't generate any more speed, so my speed will only decrease from there. So to successfully preform this PU route, I better have generated enough speed to meet each slope's syncing speed in turn. For example, let's say I build up enough speed to reach the first possible syncing speed, and I use that to go to the next slope. Then, I could let my speed drop until I reach this slope's syncing speed, go to the next slope, let my speed drop again until I reach this slope's syncing speed, go to the next slope, but then I have a bit of a problem. I have less than the required syncing speed and no way to gain any more. So is this route just impossible? Well no, because these are just the slope's first syncing speed, but remember, any multiple of these will work as well. So now let's factor in each slope's second syncing speed as well. These speeds allow Mario to move two QPU at once instead of one. So now, if I build up enough speed to reach the 2nd syncing speed of that first slope, then I'll actually have enough speed to meet each syncing speed in turn and complete the route, and if that didn't work we could have considered each slopes third syncing speed and so on until we did get it to work. However, each syncing speed we need to reach initially is kind of a big deal, because reaching that first syncing speed takes about 12 hours, and reaching that second syncing speed takes about 25 hours, so if there's a way to use a lower syncing speed initially, then that's a 12 hour save. So, how much speed will we need to generate for the Watch for Rolling Rocks star? Well, keep in mind that even with access to unlimited horizontal speed, we don't have any improved vertical mobility, so to get to the top of the course we need to travel up slopes and ride up elevators. So this will be the basic route; start on the hyper speed walking slope, navigate along the path up from the lake, ride up this elevator, ride up this other elevator, make your way onto The Amazing Emergency Exit platform, which is the highest point we can reach, and then launch to the Watch for Rolling Rocks platform. By itself it still won't be enough height, but the scuttlebug we positioned will provide the extra bounce we need. So this is the graph of the syncing speeds of these slopes. Unfortunately, we run into a bit of an issue with the path up from the lake. That area is actually made up of dozens of floor triangles that each have different slopes. But that didn't stop me. After careful observation and scrutiny, I isolated six triangles which I named T1 through T6. These triangles have strictly decreasing steepnesses, so we can meet each of their syncing speeds in turn. Additionally, their heights span the entire vertical distance we need to cover to from bottom to top without leaving any gaps in between. So, by using the slopes of those six triangles we can complete the blueprint for our route, allowing us to utilize the first syncing speed of that initial slope, so building up speed only takes 12 hours instead of 25. Now, we're almost ready to go back to the video, but there's just some final points I want to make. For example, you don't need to have exactly the syncing speed to traverse PUs. If you have slightly less than the syncing speed you'll move relatively forwards in the map. If you have slightly more than the syncing speed you'll move relatively backwards in the map, and the further you deviate from the syncing speed, the greater this relative movement will be. Additionally, if you adjust your angle slightly away from the cardinal direction, you can move relatively sideways, but keep in mind that even the smallest possible angle deviation will be magnified over the QPU distance, and thus Mario will be sent multiple feet to the side. Now, based off what I've told you, you might think you can only travel multiples of 4 PUs at a time, but that's not actually true. For example, if one of your quarter steps is out of bounds or over a ceiling, then that quarter step will be invalid, and since Mario moves up to but not including the first invalid quarter step, he can in fact end up stopping prematurely at one of the quarter steps. Separately, if you change slopes during a quarter step, your De Facto speed will change and you'll alter the distance of the next quarter step, and so most likely, it will no longer sync up with a PU and you'll end up stopping on the new slope. Finally, for simplicity, the set of PUs that are multiples of four away, we call the QPU grid, and if Mario is on the QPU grid then we say he's QPU aligned. Remember, moving a multiple of four PUs is easy, but moving a different amount requires special conditions like out of bounds or changing slopes, so if you're QPU aligned it's easy to stay that way, and if you're QPU misaligned, it's easy to stay that way as well. Now, if you become QPU misaligned, you'll need to correct that in order to return to the main map, But that can be difficult if you're not near out of bounds and your sequence of slope changes is predetermined. So, managing your QPU alignment is one of the many challenges of planning a PU route. OK, so now we're finally ready to resume the main video and watch the PU movement. Just kidding, first I need to explain what these screens are. These extra screens will help you follow along during the PU movement. The standard view is just the view that the game shows, but since I fix the camera on the main map to prevent the game from crashing, this screen won't tell you very much. The relative view shows where I am in each PU. This is what it would look like if I let the camera follow Mario around, and if PUs weren't invisible. The relative map also shows where I am in each PU but from an overhead perspective, and finally, the PU map shows where I am in the PU grid. Ok, so now let's really start. So, as I explained earlier I navigate up the path from the lake using the six triangles I isolated, and I've marked them in the relative map so you can follow along. So basically, I get onto a triangle, let my speed drop until I'm around the syncing speed for that triangle's slope, then navigate uphill on the triangle, and then move to the next triangle. Using what I taught you, you should be able to follow along with my movement. For example, I'm able to move relatively backwards because I have slightly more than the syncing speed. Whenever I move sideways, it's because I'm slightly angled away from the cardinal direction, and every time I move from triangle to triangle, my QPU alignment changes, but cleverly I planned it in such a way that they'd all cancel out by the end and I'd end up QPU aligned. So right now I'm on the sixth triangle, so I do a little zigzag to bring me back towards the main map, as you can see on the PU map screen. Remember, I need to return to the main map in order to access the elevator, since there are no objects in PUs. As you may have noticed right there, the elevator didn't register me until I started kicking, and that's actually the reason I've been holding A this entire time. By holding A, I can press B to do these little kicks. Without the kicks, I go through the elevator, but with the kicks, I can ride it up to gain precious height. Ok, so now we're closing in on the end. The final movement I do will be a kick onto the Amazing Emergency Exit platform, then turn and launch myself towards the scuttlebug. That movement will bring me 10 PU to the right and 3 PU down, but since I want to end up on the main map, I reverse that displacement and so position myself 3 PU up and 10 PU left. While doing that, I simultaneously position myself in the correct relative part of the map to make the movement work. Okay, now don't blink! And there we go, by bouncing on the scuttlebug and ground pounding in the misalignment, I achieve just enough height to get onto the Rolling Rocks platform. Here, I show an abridged version of the scuttlebug raising, in case earlier's viewing was too choppy to follow. As you can see, the scuttlebug moves back and forth above it's home. At the end, you can see I do two special raisings purely to move him sideways and closer to the corner, since he ended up being too far away for the bounce to work. And here, I show an alternate angle of the final PU movement. The scuttlebug actually became active once I entered the PU version of this room, so I really only had a handful of frames to get over here before he fell too far. And, there you have it! Watch for Rolling Rocks done in 0.5 A presses. Man, I did not expect this video to become 25 minutes long when I started commentating, but I guess there was just that much to explain. Hopefully, you were able to follow along with my explanations and visuals, learned something new, and had an enjoyable experience. So, thanks for watching!

https://youtu.be/kpk2tdsPh0A