Montag, 30. August 2010

Dreieck23 Teil 3

(Hier ist Teil 1)

(Hier ist Teil 2)

Ich sollte aufhören, meine Zeit irgendwelcher Prinzipien wegen zu verschwenden und mich mehr darauf konzentrieren, nur das zu tun, was meine Aufgabe in schnellen Schritten voranbringt. Ich habe jahrelang versucht, in meinem Bemühen mehr über Computer und Betriebssysteme zu verstehen, Linux zu lernen und zu mögen. Ich bin sogar etwas in die slashdot-Propaganda eingestiegen. Linux hat sich bei mir bedankt, indem keine der Distributionen, die ich ausprobiert habe, bei mir jemals einwandfrei funktioniert hat.

Ich habe einige ausprobiert (debian, ubuntu, mandrake, suse, mandriva, fedora, red hat, knoppix... OK, jetzt bin ich deprimiert. Ich habe sie nie nachgezählt) und von jeder dieser Distribution habe ich durchschnittlich drei verschiedene Versionen ausprobiert. Ich habe nicht erwartet, daß sie von Haus aus funktionieren. Ich habe Stunden reingesteckt, um sie zum funktionieren zu bringen. Unter "funktionieren" verstehe ich, daß 3D-Grafik, Sound, Internet, Drucker und der Paketmanager arbeiten. Die einzige Distribution, die jemals funktioniert hat, war Mandrake Version 8.1 und das war auch nur für ein halbes Jahr. Meine Dummheit ist unendlich.

Der Gnadenschuß kam, als ich Dreieck23 auf Linux zum laufen bringen wollte. Ich bin davor schon mit einer IDE namens "Anjuta" in Berührung gekommen und habe sie erstmal angeschaut. Ich kann mich nicht erinnern, ob mich da noch mehr genervt hat, aber auf jeden Fall, war das Syntax-Highlighting per default so konfiguriert, daß rosa Schrift, fette Schrift und vermutlich auch Schriften in verschiedenen Größen zu sehen war. Das zu einem lesbaren Format umzukonfigurieren war mir zuviel Aufwand für die paar Zeilen, die ich anpassen mußte, so daß ich "KDevelop" eine Chance gegeben habe. KDevelop ist etwa zweimal pro Arbeitssession abgestürzt. Das beste war, daß plötzlich ein Bug aufgetaucht ist, der Windows nicht da war.

OpenGL hat einen Picking-Modus. Man schaltet den Picking-Modus ein, gibt OpenGL seine Mausposition oder eine sonstige Position auf dem Bildschirm an, lässt den Zeichencode einmal durchlaufen und gibt den Primitiven, die gezeichnet werden, einen Index, der nicht eindeutig sein muß. Am Ende der Zeichenoperationen sagt OpenGL einem, welche Indizes die Objekte haben, die von dem Strahl getroffen wurden, der von der angegebenen Bildschirmposition ausgeht. Dann schaltet man wieder auf den normalen Zeichenmodus zurück. Ich habe den Picking-Modus benutzt, um herauszufinden, wann man welche Dreiecke "getroffen" hat. Auf Linux hat sich das Spiel geweigert, vom Picking-Modus in den normalen Zeichenmodus zu gehen, wenn ich den Befehl, den Modus zu ändern, nicht zwei mal hintereinander ausgeführt habe!? Dabei muß man bedenken, daß ich damals eine nVidia Karte hatte, eine der beliebteren von nVidia und nVidia dafür bekannt war, linuxfreundlicher zu sein. Das ging so weit, daß die proprietären Treiber von nVidia mit dem Paketmanager jeder Distribution gefunden werden konnten und die von ATI nicht.

Mit der Zeit habe ich zunehmend Microsoft Mitarbeiter Blogs besucht und zu schätzen gelernt, wie leidenschaftlich viele Menschen hinter der Microsoft Fassade sind, wie ehrlich und vernünftig sie rüberkommen, welche schwierigen Entscheidungen sie treffen müssen und wieviel Schelte sie dafür zum Dank bekommen, obwohl sie versuchen, es gleichzeitig 15 Milliarden Leuten recht zu machen und jede ihrer Entscheidungen grundsätzlich für irgendjemanden falsch ist. Lest die Kommentare und nehmt euch vor, nie wieder einer von denen zu sein.

Wie auch immer. Eine Linux Version von Dreieck23... habe ich eigentlich erzählt, woher die Zahl kommt? Die Levels werden durch eine Textdatei beschrieben, in der in jeder Zeile steht, wann wo ein Dreieck mit welcher Ursprungsgeschwindigkeit und Farbe erscheint. Die Dreiecke wurden numeriert. Irgendwann bin ich auf einen Bug gestoßen, bei dem das Spiel ab einem bestimmten Dreieck aufgehört hat zu funktionieren, und wenn ich mich recht erinnere, war es Dreieck 23. Ich habe mit der Entwicklung aufgehört und ein Jahr später hat mich ein Kollege gefragt, ob ich die Textdatei im ASCII- oder Binärmodus gelesen habe. Häh? Scheinbar wurde irgendeine Zahl als der entsprechende ASCII Code interpretiert oder sowas. Ich habe es nicht nachverfolgt, weil das Spiel funktioniert hat, sobald ich auf den Binärmodus umgestiegen bin, ich habe aber bestimmt irgendwas dummes gemacht. Ein Jahr danach wurde die Entwicklung also wieder aufgenommen und kurze *hust* Zeit später beendet. Eine Linux Version gab es dazu auch.

Wenn man die Liste der Erkenntnisse aus dem letzten Posting liest, könnte man meinen, daß ich den Spielern vorwerfe, nicht über die abstrakte Grafik hinweg und die Schönheit der Funktionalität meines Spiels zu sehen. Aber Vorsicht! Das stimmt nicht. Die übergeordnete Erkenntis ist, daß die Funktionatlität des Spiels nur die Basis ist und man etwas darauf bauen muß, das Gefühle auslöst, sei es mit einer Geschichte, hübscher Grafik, interessanten Gegnern, mehr Charakter usw. Dreieck23 hat zuwenig von diesem Rest. Und dieser Rest reicht bei bestimmten Spielen für bestimmte Spieler, damit sie grobe Mängel in der Funktionalität übersehen.

Der Plan für das Spiel nach Dreieck23 war, daß ich mir trauen werde, etwas zu machen, das ein Stück aufwendiger ist, und mich dann von Projekt zu Projekt "hocharbeite". Dazu kam später die Anforderung, daß es ein Spiel sein muß, das ich selbst spielen würde. Das mag vielleicht nicht so wichtig sein, wenn man für die Arbeit bezahlt wird, aber für die Motivation, irgendwas in der Freizeit zu machen, ist es unerlässlich.

Bald widmen wir uns wieder dem aktuellen Stand von Candy Wars.

8 Kommentare:

Anonym hat gesagt…

Wird noch ein Bloodrain(?) post mortem kommen?

Pasco hat gesagt…

Falls du Bloodrayne meinst, dann ist es unwahrscheinlich. Ich habe es nie gespielt und nie das Bedürfnis gehabt. Alles am Spiel schien auf dem ersten Blick amateurhaft gemacht worden zu sein und ein Freund von mir hat es 3 min gespielt und hat einen Finisher nach dem anderen ausgeführt. Es hat mächtig uninteressant ausgesehen.

Don Cosmo hat gesagt…

Kaum ist man zurück aus dem Urlaub, stehen hier etliche interessante Postings und das ist noch nicht alles: Endlich ist dieses Farbschema gewichen, daß mir kostenlose Halluzinationen beschert hat! Da werde ich die Woche ordentlich was zu schmökern haben.
Vielen Dank im Voraus und Nachhinein!

Anonym hat gesagt…

Nein, nicht das Spiel... Hattest du nichtmal ein Shmup auf Basis von Blitzbasic gebastelt, oder verwechsel ich dich mit jemand anderen?

Pasco hat gesagt…

Don, ich habe immer noch nicht verstanden, was an dem alten Schema störend sein soll. Ich finde die neue Seite aber trotzdem besser.

Anonym,
du gucken hier

Unknown hat gesagt…

Moin,

hast du Dreieck23 mit qt entwickelt oder wie kann ich mir einen LINUX Port vorstellen?

Bloodflower

Pasco hat gesagt…

Hallo Bloodyleinchengugigugubababatutu!

Ihr enttäuscht mich alle. Wo ist eure Aufmerksamkeit?

Wie der zweite Teil der heiligen Schrift sagt gleich unterm Screenshot die erste Kurve rechts, habe ich SDL benutzt. Wenn man die SDL-Seite besucht, findet man heraus, daß es eine Bibliothek ist, die für mehrere Plattformen Fensterverwaltung, Sound, Eingabe usw behandelt. Theoretisch musste ich also überhaupt keinen Code ändern sondern nur den selben Code für Linux complilieren. In der Praxis benutzt man oft unwissentlich, wenn man mit Visual Studio arbeitet, irgendwelche Microsoft-spezifische C++-Datentypen und Funktionen, die in der standard C++ Bibliotheken nicht existieren. Wenn man versucht den Code in Linux zu compilieren, dann sagt einem der Compiler, daß er deine funky String-Vergleichfunktion mit Längenangabe nicht kennt. Also musst du sie mit der Standardfunktion ersetzen. Und da war noch der Bug mit dem Pickingmodus.

Noch mehr Fragen? Traut euch! Ich beisse nicht. Und ich funkel nicht im Sonnenlicht. Team Jacob!

Unknown hat gesagt…

Pasco,

SDL stinkt! Nein ich hatte ehrlich gesagt nur den 3. Teil zum "Dreieck" gelesen. Meine Haare sind jetzt ganz grau von der Asche.
Pro-Tipp: Niemals Microsoft Werkzeuge benutzen, wenn man nicht auf "Vendor Lock-in" steht. Also: Microsoft stinkt!
Ich wünsche dir viel Erfolg mit den Dreiecken und mach weiter mit deinem Blog, den finde ich sehr lesenswert!