It is called "Let's remove Quaternions from every 3D Engine". The author suggests replacing quaternions with rotors and geometric algebra. In 3D, the formulas are essentially the same, but framed differently. It makes some "surprising" properties more intuitive and is extensible to any number of dimensions. The last part is especially relevant to the author as he is developing "Miegakure", a 4D game (i.e. the game world has 4 spatial dimensions).
Given that Miegakure has been “coming soon” for over ten years (maybe the dev initially planned it as a 10-year-game, but if so I wish he would’ve said so when people asked when it was coming) I’m going to suggest putting a hold on deciding whether this way of reckoning rotations results in a better development process.
I don't anyone who took the 4D game concept further than him, there is no "better development process" yet.
And if anything, I don't think the engine is the problem. He already shipped 4D toys, which I suspect is a way to monetize the devtools he made for Miegakure (nothing wrong with that). And even before that, the 4D was fine.
But while it is nice having good 4D, turning it into an entertaining game with good graphics, good puzzle design, a story that doesn't suck (even a simple one), etc... is hard. And we are not talking about a FPS or 2D platformer here, there are no game design books about making games like Miegakure, and there are many, many things that can go wrong. And to be honest, I hope for the best, but I don't expect much.
One big difficulty I see is that not only the designers have to understand 4D to make interesting worlds/puzzles, but the game has to teach that to players too, with the right difficulty curve.
GA is more general than (and superior to) quaternions (the even subalgebra of G3). However, it requires a powerful type system and compiler to compile general GA expressions to something as efficient as quaternions. C++ won't cut it. You might be able to get clever by defining a special numerically indexed type for Gn or its even subalgebras; C++ could probably do that. But it wouldn't be as nice as fully generic GA.
What do you mean by powerful type system and compiler? Do you mean an optimizing compiler that can eliminate the redundant zero terms when multiplying multivectors with many zero grades?
Correct. Quaternions have 4 elements and a small number of multiplications. G3 has 8 elements and more multiplications. This gets worse quickly in higher dimensions.
Operations in G3 have a bunch of extra work compared to operations on quaternions alone due to the presence of odd grades. However, if your values are quaternionic, these grades should always be zero, so you can safely elide the operations. The compiler just has to be smart enough to see this.
The basis of G3 is 1,x,y,z,xy,xz,yz,xyz. Quaternions only have 1,xy,xz,yz. Quaternion multiplications are closed; xyyz = xz, xyxz = -yz, xzyz = -xy. xyxy=-1. If your compiler is smart enough to figure out that x,y,z,xyz are always zero, you can save the extraneous operations.
Thanks for sharing - have stumbled over the term "geometric algebra" a couple of times, but this article made it click for me.
I completely agree with the sentiment that the algebraic mumbo jumbo often used to introduce quaternions is not very satisfying. Fortunately, as quantum computing becomes a mainstream topic, more people will have to learn about "Rotations on the Bloch sphere" [0] -- and then quaternions and rotations actually make sense.
The author also made 4D-Toys which I suppose was a proving ground for the more ambitious game project. If you have PCVR it's a good way to stretch your imagination.
https://marctenbosch.com/quaternions/
It is called "Let's remove Quaternions from every 3D Engine". The author suggests replacing quaternions with rotors and geometric algebra. In 3D, the formulas are essentially the same, but framed differently. It makes some "surprising" properties more intuitive and is extensible to any number of dimensions. The last part is especially relevant to the author as he is developing "Miegakure", a 4D game (i.e. the game world has 4 spatial dimensions).