So now is my time to bore you with my life and the story behind this TAS.
Let’s start with... the beginning. I started speedrunning this game in January 2017 as a part of the 4th season of
Ultime Decathlon where you must learn and master ten speedgames within five months. This event sometimes proposes some lesser known games, which was the case of Kuru Kuru Kururin. This game was a crowd’s favorite and I was no exception. After Ultime Decathlon sesason 4 was over I have kept running the game, competing against
callumbal for the WR (Guess who won? Callumbal of course haha). WR had dropped like crazy thanks to UD4, going from 14:53 in November 2016 to 12:46 in April 2017.
Afer a long pause, I went back to the game in May 2018. As I found by myself
a way to get out-of-bounds, I was messing around with it. OOBs were not new to this game. They were mentioned in the
David Wonn's Unique Video Game Glitches website (last updated in 2006), plus there were this
2008 video by mugg1991 changing the size of the Helirin to clip through the wall, and this
2016 video by Fernwright that used the same method as mine. But I had found no mention of invisible walls, and this was what intrigued me the most back then. There were so many invisible walls that were placed weirdly everywhere, and I had the secret hope to find some OOB goal zones as well. Which I did by complete luck in Machine Land 3 on May 27th! Unfortunately I was not recording at that moment, but here is a
live reaction when I discovered an OOB heart zone in Cave 2 the same day shortly after. It was just unbelievable. As I had no prior experience in TASing, I seeked help in TASVideos’
forums and discord server. ThunderAxe31 reached me out. He quickly wrote a speed HUD script and a partial OOB viewer (true dedication here, finding the wall tiles’ IDs one by one was probably not fun). This helped me to conceive two speedrunning strats, one
in Machine Land 2 and one
in Machine Land 3 which saved 11s and 3s respectively. Both are done in the
current WR in 11:55 by callumbal. But as I was primarly an RTA speedrunner back then, I did not to make a TAS out of this.
A few months passed. In July 2018 I went to ESA and I performed a live
Any% run which included the Machine Land 3 OOB strat. But things got very interesting in late August 2018. ThunderAxe31 reached me out again with the intent to make a new Kururin TAS. Even though I had no experience in TASing, I was willing to help him as much as I could. And this was when I found the
2015 “cheat bot” partial run by Matt Shepcar. It was mindblowing. You could apparently clip through any wall! How had no one noticed this video for three years? But our excitement quickly felt down as we realized that there was no input file available. We tried to contact the author of the video on Youtube, with no success. So there was no way to replicate the wall clips other than watching this 144p 30fps video and guess the inputs that were done. Which ThunderAxe31 managed to do for the first level:
Training 1. However we knew that there was no way to replicate everything, it would have taken too much time for too little reward. We had a few theories about how wall clipping worked, but no consistent setup. We knew that it was promising and that we could combine it with the OOB goal zones, but we were at a dead end at that moment. Anyway I had to go back to school and ThunderAxe31 was busy with work, so the project was put on hold.
Nothing new happened until December 2018. As Christmas holidays were taking place, everyone had more spare time. I was chatting with ViGadeomes on Twitch and since he had no project at that moment, he proposed to teach me the basics of TASing, which I accepted. That was it, I was finally getting into the wonderful and mysterious world of TASing! After a quick tutorial about finding memory addresses and after getting familiar with TAStudio’s interface, I was ready to work. Basically I spent my whole holidays on Kururin from getting up at 10am to going to bed at 2am. And it really paid off. I was able to replicate
the beginning of Ice Land 3 in Matt Shepcar’s partial run and adapt it to other levels:
Grasslands 3, then
Grasslands 1. This method only worked when rotating clockwise, so I quickly worked on an “early wall clip” method for counterclockwise motion by replicating the
beginning of Matt Shpecar’s Cake Land 2. So it was possible to go out-of-bounds early in any level! And I quickly put these discoveries to good use. Combining them with OOB goals allowed to beat Matt in several levels:
Grasslands 2,
Ghost Castle 2,
Cave 3,
Cloud Land 2,
Machine Land 1,
Ghost Castle 1 and some others. I made a
Dropbox folder to gather everything but that was quickly getting overwhelming. So the best solution was to use
Github. Meanwhile, ThunderAxe31 was working on a consistent setup for diagonal wall clips, with little success.
Coming back from Christmas vacation, I told my buddy E-Sh4rk about the Kururin project and he got interested. He had no prior experience in TASing either but I knew that he had a a strong background in programming. Matt Shepcar wrote an (incomplete)
article that described how he managed to make his partial run (especially the disassembly part). With this knowledge E-Sh4rk worked with ThunderAxe31 on improving the look and accuracy of the OOB viewer. He also tried to contact Matt Shepcar, this time to his business address. In the meantime I was finishing all the levels that were faster with OOB goal zones (about fifteen of them). Then something amazing happened: Matt responded to E-Sh4rk! After some discussion he accepted to give us his previous work: his bot and many input files. He also gave some advice on the game physics and building a bot for Kururin in the
forum. Actually E-Sh4rk had already been working on a bot project at that time, so it just confirmed what he had figured out by himself. But with the inputs of the missing levels, it was now possible to conceive a first complete run. It was this run:
Any% Normal v1 on January 18th.
Now let’s clarify what categories I am talking about. The TAS community usually defines “Any%” as reaching the credits, which means doing some detours to save the birds in this game. However the
speedrunning community of the game defined “Any%” as doing the thirty main levels as fast possible while calling it “Best Ending” when you save the brids and reach the credits. So my speedrunning background explains how I named my encodes, and I was indeed mentioning the “speedrunning” Any% in the previous paragraph. At the time I was not aware of the TASVideos rule witch states that the TAS has to reach a clear ending, plus I was more inclined to make something comparable to the main speedrunning category. Thankfully two thirds of the levels were identical to both categories: only the third level of every world had to be redone in order to save the bird. So we were far from getting back to zero when we started the “Best Ending” TAS.
But something huge was about to happen. I knew that E-Sh4rk was working on his own bot project and I was very confident that he could make something efficient. So while he was coding his bot little by little, I made nonoptimal WIPs of the third level of each world, mainly to get a first “Best Ending” version done and see how far we had already improved the current TAS publication in 10:22 by Ryuto. This took the rest of January and most of February (yeah, the third levels were longer and harder since the birds had to be saved, so it took me some time). As I was working on the last one (Cake Land 3), that was it. KuruBot was operational. We tried it in Grasslands 1 and Cake Land 3, with great success! Before we went further, we decided to keep a
v0 version which was the state of the art at the time in order to keep track of which time improvement was Kurubot about to bring.The time was 6:06.33 (without Training, which takes about 45s), which was already very promising.
We finally spent three weeks from late February to the middle of March improving every level in the run. Literally every level. We found great configurations to get any desired wall clip done by KuruBot, so this was a very pleasing process. We still had to redo some levels several times because finding the optimal route was not always too straightforward. But we finally made it. We ended up with a much cleaner TAS with no blatant waiting time, which is a little miracle in this game where rotation could be really constraining at times. The final time was 6:18.03. By no means we believed that this was a perfect time, but we were both happy with the result and the journey.
As my final word, I really want to thank ThunderAxe31 for everything. Even though he was not an author strictly speaking because he did not directly contribute to the TAS itself, he has been a significant actor in this project since the very beginning. Again, thank you very much :).
I would like to thank:
- Mohoc for introducing me to the wonderful world of (tool-assisted) speedrunning. Mohoc talks a lot about speedruns. If speedrunning was a socially accepted discussion topic, Mohoc would be a very charismatic person. He also has a panini machine, and that's another very good reason to like him.
- Matt Shepcar for clearing the way. He was the first to make a bot for Kururin and to publish a partial TAS with wall clips. He even wrote an inspiring article about it. Since he did not publish his bot, I decided to implement a new one by myself. It was quite challenging for me: it was the first time I had to use a disassembler. In the end, one could say that I only am a poor imitator, without any madness... *sigh * But no matter what, it was a lot of fun to do :D
- ThunderAxe31 for his help, his ideas and his epic username. He designed the first version of the OOB viewer and also the last one. I just made some improvements in between. If the OoB Viewer was a sandwich, ThunderAxe31 would be the bread, and I would be the cheese.
- Jean Goubault-Larrecq for teaching me Assembly in the middle of an obscure course about semantics and Scott topology. Barely out of the shadows, Assembly was standing out of nowhere.
Memory: Claiming for judgment
Memory: Replacing file with 642 frame improvement
Memory: Optimization of this submission seemed extremely good.
It was personally very amusing to see the collision abused so heavily to either move through levels quickly or take out of bounds shortcuts. The audience appeared to mostly agree though there was some disappointment as to how intended gameplay more or less vanished. It was noted however, that a full-completion run of sorts would be damageless and would feature much more of the intended gameplay.
Like the previous publication these submissions aim to beat the game as quickly as possible, collecting the 10 birds needed to get an actual ending screen and aiming for real time.
However this submission includes the training levels whereas
#6313: mohoc & E-Sh4rk's GBA Kuru Kuru Kururin in 05:35.15 does not. There was some disagreement on whether or not to include them. Gathering opinions, I found that there could not be another viable branch in which the training levels are done with the tricks shown here. Most feedback against the training levels assumed they could be placed in another such branch and could not weigh as heavily in my decision. Ultimately I feel that the training levels add a good introduction to the tricks that are used throughout the run and do not take much time, and so I feel that their inclusion is ultimately worthy.
However, this submission was labeled "any% w/ training" by the authors and since we do not use any% labels, it would be best to simply have this be labeless and qualify the training levels as a Speed/Entertainment tradeoff (Publisher please take note of this).
Accepting to Moons as an improvement to
[1307] GBA Kuru Kuru Kururin (Europe) by Ryuto in 10:22.08.
fsvgm777: Processing.