SebaGeek Die dümmsten Programmierer haben den dicksten Sourcecode.

Snake 3D

Der Wunsch, OpenGL zu lernen, bestand schon länger. Zu meinen Windows-Zeiten hatte ich mal angefangen mit OpenGL zu experimentieren, aber weit bin ich nicht gekommen. Der beste Weg, um etwas derartiges zu lernen, ist meistens ein Minispiel zu schreiben. Nachdem ich nun mit SDL das Viergewinntspiel gebastelt hatte, musste nun also ein neues kleines Spiel her, welches aber im dreidimensionalem Raum stattfindet. Wo holt man sich nun am Besten eine Idee? Letztenendes ist mal wieder eine Frau schuld.
(22:09) <seba> sag mal nen spiel was du gerne spielst
(22:10) <Fari> hm, was spiel ich gern? so aufm pc oder so insgesamt?
(22:10) <Fari> snake is ganz lustig
So sollte es also ein Snakeklon in 3D auf der Basis von SDL und OpenGL werden. Begonnen hat das Projekt in Fagerhult, Schweden. Ausgerüstet mit Laptop, NeHe-Tutorials, OpenGL-Spezifikationen und SDL-Refs programmierte ich das Grundgerüst. Ein großes Problem war, dass ich absolut keinen Plan von Vektorrechnung hatte - geschweige denn von Rotationsmatrizen. Nach einigen Versuchen Rotationen mit einer ausgedachten Rotationstabelle oder ca 20 if-then-elseif-elseif-else zu beschreiben und nachfolgenden Versuchen, diese mit Quaternionen zu beschreiben, wurde mir nach dem Schwedenurlaub der Tipp "Rotationsmatrix" gegeben. Nach einigen Kämpfen mit einer ordentlichen Implementation dieser konnte ich nun Ortsvektoren um einen Richtungsvektor rotieren lassen. Viel Zeit hat dann die Rotation von zwei Vektoren (Richtungsvektor+Normale) zu zwei Vektoren (anderer Richtungsvektor+andere Normale) gekostet, da sich das OpenGL-Koordinatensystem bei jeder Rotation mitdreht und die Rotationen dementsprechend nachempfunden werden müssen (oder mir hat einfach noch keiner den Trick gesagt).
Nun hatte ich also eine Drahtgerüstschlange. Der nächste Sprung war dann Texturen auf die Schlange zu kriegen und ein bisschen Rumspielerei mit Effekten. Vergleichsweise zum Grundlagenstudium ging dieser Schritt recht schnell vonstatten, auch wenn wieder viel Rumprobiererei dabei war.

Tja - und so wurde aus "snake ist ganz lustig" ein plattformunabhängiges Snake 3D.
π