

(Link to video)



Frames: 218530 from game start to death of final boss.

Re-Records: Unknown, it's inaccurate when you splice inputs in hourglass.



Goals



This Tool Assisted Speedrun aims to beat the game in the lowest time possible while making trade-offs for entertainment and doing all platforming secretes.





Notes



"But wait, I thought K3 couldn't be TASed? It requires mouse input and you can't decompile it, how did you make the run using hourglass?!" Well, I did decompile it. The game uses FMOD, and requires mouse input for the title screen and Kamilia area. FMOD causes a guaranteed desync at the start of the run, so I had to rip that out entirely and re-do all the sound entirely via a video editor. As for mouse input I created a fake mouse which operates EXACTLY the same as a real mouse, this was tested via macros to ensure I didn't save any frames you can't actually save. It also looks the same. This run was also created at 50 fps because at higher frame rates the run would desync by 1 frame at the start of the run for every 1 minute and 30 seconds of gameplay if recorded at 100fps. Normally this would mean I couldn't use 1 frame jumps (Shift down and up on the same frame) which would lead to a sub-optimal run, but I created a 1 frame jump key to allow myself to use 1 frames at 50fps. Before anyone asks, this does result in the exact same movement as actual 1 framing, and did not allow me to do anything you couldn't normally do.





Sound Notes



All of the sound for this run had to be found via external sources, and manually placed back into the video as the game would crash and desync so much I couldn't even make it past the first few rooms if I didn't disable it completely. This allows for me to use higher quality versions, as the K3 ones sound awful, but I am sorry if I misplaced any of them. Some things like the jump sounds can be easily misplaced, like accidentally using a ground jump rather than air double jump sound or thinking I only did a single jump when really a double jumped quickly to exploit momentum canceling to its fullest. In-case anyone is curious, there are over 15,000 sounds that I had to manually place in this run. Also, I did put in the effort to properly master the audio despite the original game not doing so for two reasons. The first is that Adobe Premiere was popping randomly throughout the run when I let the audio clip just like the actual game does, and the second is that I wanted to make sure the player sounds are actually audible while also having an ear friendly listening experience. Hope it was worth it, though a premiere bug has caused there to be random popping on jump sounds anyway. No solution I found fixed it. :\





Run Notes



When given two options which take the same number of frames, left or right side avoidance or symmetrical rooms, I always go right since nearly every player of these games will go to the left. At some bosses I also stop screwing around to show off safe spots that players have not noticed yet, it also seems to make it a bit more interesting to not have the kid look like he has a really bad case of A.D.D. the entire way. Also, I do not use the "Hold S and press R at the same time at a save" warp glitch as I didn't want to skip any platforming.





Decompiler Bugs



Any bugs that are caused by the decompiler which are still in version 1.30 I did not fix, however there are two bugs that are only in this TAS and some versions of K3 that I didn't notice until the run was completed. The first is that for some reason in the Gradius area I can go further out of the screen than you should be able to...even when my hitbox is the whole ship which is about 30% larger or more than the actual hitbox in version 1.30. Thankfully I didn't gain any advantage from this, so the run itself is unaffected in my opinion. The second glitch is I didn't notice that you are supposed to have to touch the door to enter the kids' house, rather than the edge of the house itself. Not sure how I didn't notice this, but this means my run should have been ~10 frames slower. :c





Glitches



Vine glitch: At a specific position you can vine jump off the bottom of a block which has vines on it, and on the first frame of the jump will shove you up to where you should be jumping from normally.



Jump Cancel: Using two jump keys, on the first frame you depress the first then second key, then release the first key. On the next frame you release the second key. This causes a very low jump to occur because every time the shift key is released while you have upwards speed your speed is multiplied by 0.45. This can only occur once per frame, thus doing this with two keys allows you to release twice in a row without using a double jump.



Momentum cancel: In order to stop going up faster, I spam shift press and releases when I don't have a double jump which as I said for jump canceling multiplies your upwards speed by 0.45 once per frame. However while this can be done every frame, for this tas I was only able to do it every other frame.



Bunny Hop: If you arrive at a precise position above the ground, such as landing from doing a 5 frame jump, the collision detection will be rounded and allow you to jump from 1 pixel higher than the ground. This makes jumps which would otherwise be impossible, possible. This is used once to make a jump at 16:19 in the run, and at other times it is used to climb up blocks much faster than normal due to not needing to wait for downwards vertical movement.





Level design abuse:



Some triggers are badly placed and I either skip them entirely, or I get past the player killer/reach a warp before I should be able to.





Game Mechanics:



Gradius upgrade drops: In gradius area 1 enemy per enemy spawn type group will drop a upgrade. This is determined on spawn, and as such the only thing you can do to put things in your favor is manupulate the spawn position RNG.



Aligns: The player walks left/right at 3 pixels per frame, and depending on what wall you collide with you can change the offset due to the wall not matching the string of positions you can arrive at. We call walking into a wall at a different position than you can arrive at taking an align, and due to the player walking at 3 pixels/frame you have three possible aligns you can acquire. Some jumps are actually impossible to complete with the worst of the three aligns you can get.



Moving Platforms: Every other frame your position will alternate from the top pixel of the platform, and 0.5 bellow it. (Game Maker 0 position is the top)



Water: When your hitbox touches the pixels of water you gain back your double jump. If you are still touching the water after you jump you will be able to double jump again afterwards. Generally this means that the center of your hitbox needs to be touching the water when you jump, and that you don't exit the sides of a water block on the next frame.



Movement blocks: Their effect on your movement is one frame late.



Triggers and warps: Due to the execution order of objects not being well done in K3, you may notice that sometimes you see the kid touch a warp or trigger for one frame before the warp or trigger actually occurs. For example in the Dot Kid boss at boss rush I was able to warp before the warp is even rendered, yet at the Emperor boss you can see the warp appear before the warp occurs. This is very odd considering it is the same object...



Random Number Generator: (Tested in Gradius Area) Every two instances (Objects) in the scene, player input, and time influences the Random Number Generator. As such in the gradius area I would kill certain enemies which don't drop anything in order to get better spawn enemy spawn luck. Note: By player input I do not mean "Press jump", you can press any button that game maker picks up and it will potentially affect RNG.



Vines: If you have the same align as the wall the vine is on you can wall jump on the same frame as you touch the wall, otherwise you need to wait 1 frame.





Run Errors



If there is an actual error in the run I already know. I had to stare at my run a lot at every frame when putting the sound back in. However if I am doing something wrong which wastes frames I would be interested to know for any other guy game TAS creation. Do note though that some things I did figure out mid-way through the run and didn't fix because I wanted to keep it consistent with itself as it personally looks bad to change optimization techniques in the middle of a run. "If you did that there, why didn't you do it earlier in the run?!" etc. Frames: 218530 from game start to death of final boss.Re-Records: Unknown, it's inaccurate when you splice inputs in hourglass.This Tool Assisted Speedrun aims to beat the game in the lowest time possible while making trade-offs for entertainment and doing all platforming secretes."But wait, I thought K3 couldn't be TASed? It requires mouse input and you can't decompile it, how did you make the run using hourglass?!" Well, I did decompile it. The game uses FMOD, and requires mouse input for the title screen and Kamilia area. FMOD causes a guaranteed desync at the start of the run, so I had to rip that out entirely and re-do all the sound entirely via a video editor. As for mouse input I created a fake mouse which operates EXACTLY the same as a real mouse, this was tested via macros to ensure I didn't save any frames you can't actually save. It also looks the same. This run was also created at 50 fps because at higher frame rates the run would desync by 1 frame at the start of the run for every 1 minute and 30 seconds of gameplay if recorded at 100fps. Normally this would mean I couldn't use 1 frame jumps (Shift down and up on the same frame) which would lead to a sub-optimal run, but I created a 1 frame jump key to allow myself to use 1 frames at 50fps. Before anyone asks, this does result in the exact same movement as actual 1 framing, and did not allow me to do anything you couldn't normally do.All of the sound for this run had to be found via external sources, and manually placed back into the video as the game would crash and desync so much I couldn't even make it past the first few rooms if I didn't disable it completely. This allows for me to use higher quality versions, as the K3 ones sound awful, but I am sorry if I misplaced any of them. Some things like the jump sounds can be easily misplaced, like accidentally using a ground jump rather than air double jump sound or thinking I only did a single jump when really a double jumped quickly to exploit momentum canceling to its fullest. In-case anyone is curious, there are over 15,000 sounds that I had to manually place in this run. Also, I did put in the effort to properly master the audio despite the original game not doing so for two reasons. The first is that Adobe Premiere was popping randomly throughout the run when I let the audio clip just like the actual game does, and the second is that I wanted to make sure the player sounds are actually audible while also having an ear friendly listening experience. Hope it was worth it, though a premiere bug has caused there to be random popping on jump sounds anyway. No solution I found fixed it. :\When given two options which take the same number of frames, left or right side avoidance or symmetrical rooms, I always go right since nearly every player of these games will go to the left. At some bosses I also stop screwing around to show off safe spots that players have not noticed yet, it also seems to make it a bit more interesting to not have the kid look like he has a really bad case of A.D.D. the entire way. Also, I do not use the "Hold S and press R at the same time at a save" warp glitch as I didn't want to skip any platforming.Any bugs that are caused by the decompiler which are still in version 1.30 I did not fix, however there are two bugs that are only in this TAS and some versions of K3 that I didn't notice until the run was completed. The first is that for some reason in the Gradius area I can go further out of the screen than you should be able to...even when my hitbox is the whole ship which is about 30% larger or more than the actual hitbox in version 1.30. Thankfully I didn't gain any advantage from this, so the run itself is unaffected in my opinion. The second glitch is I didn't notice that you are supposed to have to touch the door to enter the kids' house, rather than the edge of the house itself. Not sure how I didn't notice this, but this means my run should have been ~10 frames slower. :cVine glitch: At a specific position you can vine jump off the bottom of a block which has vines on it, and on the first frame of the jump will shove you up to where you should be jumping from normally.Jump Cancel: Using two jump keys, on the first frame you depress the first then second key, then release the first key. On the next frame you release the second key. This causes a very low jump to occur because every time the shift key is released while you have upwards speed your speed is multiplied by 0.45. This can only occur once per frame, thus doing this with two keys allows you to release twice in a row without using a double jump.Momentum cancel: In order to stop going up faster, I spam shift press and releases when I don't have a double jump which as I said for jump canceling multiplies your upwards speed by 0.45 once per frame. However while this can be done every frame, for this tas I was only able to do it every other frame.Bunny Hop: If you arrive at a precise position above the ground, such as landing from doing a 5 frame jump, the collision detection will be rounded and allow you to jump from 1 pixel higher than the ground. This makes jumps which would otherwise be impossible, possible. This is used once to make a jump at 16:19 in the run, and at other times it is used to climb up blocks much faster than normal due to not needing to wait for downwards vertical movement.Some triggers are badly placed and I either skip them entirely, or I get past the player killer/reach a warp before I should be able to.Gradius upgrade drops: In gradius area 1 enemy per enemy spawn type group will drop a upgrade. This is determined on spawn, and as such the only thing you can do to put things in your favor is manupulate the spawn position RNG.Aligns: The player walks left/right at 3 pixels per frame, and depending on what wall you collide with you can change the offset due to the wall not matching the string of positions you can arrive at. We call walking into a wall at a different position than you can arrive at taking an align, and due to the player walking at 3 pixels/frame you have three possible aligns you can acquire. Some jumps are actually impossible to complete with the worst of the three aligns you can get.Moving Platforms: Every other frame your position will alternate from the top pixel of the platform, and 0.5 bellow it. (Game Maker 0 position is the top)Water: When your hitbox touches the pixels of water you gain back your double jump. If you are still touching the water after you jump you will be able to double jump again afterwards. Generally this means that the center of your hitbox needs to be touching the water when you jump, and that you don't exit the sides of a water block on the next frame.Movement blocks: Their effect on your movement is one frame late.Triggers and warps: Due to the execution order of objects not being well done in K3, you may notice that sometimes you see the kid touch a warp or trigger for one frame before the warp or trigger actually occurs. For example in the Dot Kid boss at boss rush I was able to warp before the warp is even rendered, yet at the Emperor boss you can see the warp appear before the warp occurs. This is very odd considering it is the same object...Random Number Generator: (Tested in Gradius Area) Every two instances (Objects) in the scene, player input, and time influences the Random Number Generator. As such in the gradius area I would kill certain enemies which don't drop anything in order to get better spawn enemy spawn luck. Note: By player input I do not mean "Press jump", you can press any button that game maker picks up and it will potentially affect RNG.Vines: If you have the same align as the wall the vine is on you can wall jump on the same frame as you touch the wall, otherwise you need to wait 1 frame.If there is an actual error in the run I already know. I had to stare at my run a lot at every frame when putting the sound back in. However if I am doing something wrong which wastes frames I would be interested to know for any other guy game TAS creation. Do note though that some things I did figure out mid-way through the run and didn't fix because I wanted to keep it consistent with itself as it personally looks bad to change optimization techniques in the middle of a run. "If you did that there, why didn't you do it earlier in the run?!" etc.



Last edited by xwidghet on 2015-09-22 04:16:39; edited 2 times in total