Well, Week Three is done, meaning that on Wednesday, the first KillBots tournament was also carried out. Before I get to the results, let’s cover what was done in Monday’s class.
On Monday, we went were taught quaternion math, and the annoying limitation of Gimbal Lock. Both Designers and Programmers have been playing with quaternions since this course first began. Whilst making games in Unity, we had learnt that to rotate a 3D object, one would need to use a quaternion.
My previous knowledge on quaternions was from a Numberphile video on them. I looked up this video after one of my first lessons using quaternions at uni, as I was so fascinated why they required 4-dimensional vectors to do 3-dimensional rotations. The Numberphile video taught me a lot about quaternions and how they work, but what I remembered most from that video is that you lose the ability to do ab=ba, as with quaternions, you end up with a different final rotation based on the order of the rotations you do. That video also said that you lose more properties the higher dimensions you go, like with octonions (8-dimensional numbers), you lose the ability to do (ab)c = a(bc), where quaternions can do this still. There is an even higher dimensional calculation you can do, using sedenions, but you lose a property that is similar but weaker when you use them. The story behind how quaternions were first thought up is a pretty cool story too.
So when it came to class time, I had a strong understanding of what a quaternion was and how they worked. The class on quaternions definitely solidified what a quaternion was and how we use them as programmers, as the Numberphile video explained them in a purely mathematical setting, only briefly commenting that they are used in computer graphics.
What I DID learn though, is what Gimbal Lock is. I had heard of it many years ago, probably when I was in 6th grade, on a boat to a school camp, but I had forgotten the name of it and how exactly it occurred. I was slightly shocked when we were told that only two axis of rotation would exist if two of the three axis were in the same orientation, but I was more shocked to find out that Gimbal Lock can still occur in quaternions, but it is more rare.
Wednesday was the big day for our little KillBots, as the first tournament occurred. There are three of us in our Studio 2 Programming class, so the tournament didn’t last very long. Both other programmers had problems with their bots. Eli’s bot would shoot in the bottom right corner every time it found you, allowing my bot to easily dodge him. Ryan’s bot relied heavily on prediction, so when his prediction broke the night before, he did a quick-fix which should have stopped his bot relying on prediction, but left in a small factor which left his bot unable to move very far, making it reasonably easy to target him and shoot at him.
The results in the end were Ryan vs. Eli: 50-0, Me vs. Eli: 50-0 and Me vs. Ryan 44-6. So I won! I was kinda lucky that my bot was the only one fully functioning, as the goal I set of winning 100% of the time against Roach (the test bot), wasn’t reached, only winning 83% of the time, consistently. Against the bot that won last trimester, which I acquired, my bot only won 27% of the time, consistently.
Next tournament is in Week Five and will require our bots to pathfind it’s way through a maze, all whilst not running into walls as they damage you. So for the rest of the lesson on Wednesday, we were taught different curves and splines that may help us in the second tournament, as well as pathfinding algorithms such as A*, Dijkstra and briefly D*. Both the pathfinding solutions and the curves and splines were soooo interesting to me, the example programs were so great at explaining how they worked, so I thank Greg, our Programming facilitator, for creating such great teaching material!
The rest of this weekend will be spent finding out how to implement a pathfinding algorithm into our bots. I know how to detect a wall in my bot’s vision, but I don’t quite know how I will tell it where a wall is ahead of time, so that something like A* can create a whole path and avoid walls my bot can not even see yet. Anyway, it is only two more weeks apart from the Designers, and then we will be working on games again. I will miss doing KillBots and learning other Programming concepts, but I still have hope that one of our lessons will still be apart each week, I hope, as I am thoroughly enjoying learning these different things.
This is Daniel Jochem, signing out.