Archiv der Kategorie: Monolog

Eine reichlich produktive Woche liegt hinter mir. Ein paar müßige Woche mussten nämlich ausgeglichen werden, jedenfalls im Bereich der Spieleentwicklung. Aber seit Montag konnte sich meine Entwicklungsumgebung nicht über zuwenig Aufmerksamkeit beklagen. Es gibt daher schon wieder einen kleinen Update-Bericht zu SPACOLA Eclipse.

spaclipse034

Als erstes möchte ich bekanntgeben, dass ich eine gedankliche Schwelle überschritten habe: Ich bin mir jetzt hundertprozentig sicher, dass ich das kleine Retro-Spieleprojekt eines Tages wirklich zum Abschluss bringen muss. Nachdem ich bisher stets darauf hingewiesen habe, dass ich keine Garantie dafür geben werde, dass ich meine kaum spielbare Monochrom-Demo nicht eines Tages doch noch aus plötzlichem Desinteresse wieder einstampfe, bin ich nun sicher, dass mir das nicht mehr passieren kann. Zuviel Mühe, Zeit und Erfahrung stecken inzwischen in dem bald 13000 Zeilen langen Quellcode.

Außerdem ist das zwar noch weitestgehend unfertige Spiel längst mit einem tatsächlich recht drolligen Gameplay gesegnet. Auf dem Bildschirm wuseln und explodieren schon eine ganze Menge Raumschiffe hektisch umher, ballern aus allen Rohren, Geschütztürme verfolgen aufgeschreckt jede Bewegung des Spielers. Selbst die winkenden Männchen in den Raumstationen trinken schon gierig ihre Cola, wenn man sie mit der wertvollen Ware beliefert. Mit maximalem Schub versucht man der Anziehungskraft schwarzer Löcher zu entkommen, oftmals vergeblich. Ja tatsächlich, Geschütztürme und schwarze Löcher sind in dieser Woche fertig geworden.

Ich habe endlich meine neue Vortex-Klasse für Strudel- bzw. Wirbeleffekte (z.B. Intro-Animation und Gameover-Animation) in Betrieb genommen. Für den Wirbeleffekt (logarithmische Spirale) und für die Gravitationsberechnung schwarzer Löcher musste ich mir wieder mal eine ganze Menge Mathematik anschauen. Selten habe ich soviel über irgendwelchen Formeln gebrütet wie die letzten Tage, aber es hat sich ausgezahlt. Der Effekt ist wirklich spannend und funktioniert sehr gut. Den neuen Code für die Gravitation konnte ich auch gleich für zwei Sammler-Powerups und für die Container einbauen, so dass das Thema auch abgehakt wäre. Von seiner eigenen Code-Kreation brutal über den Haufen geschossen oder ins Nirvana gezogen zu werden, das macht einen auch irgendwie stolz.

Aber ich will niemandem etwas vormachen: Die Todo-Liste wird eher länger statt kürzer. Für jedes Feature, das ich mühsam umsetze, fallen mir zwei neue ein. Und das schließt Ideen für Erweiterungen und Bugs nichtmal ein. Alle paar Monate meldet sich mal ein SPACOLA-Fan bei mir, was mich immer ganz besonders freut. Manchmal ist das sogar die nötige Motivation, die ich brauche, um mich nach faulen Phasen mal wieder ins Gefecht zu stürzen. Und ich bin noch optimistisch, dass das Projekt Ende des Jahres wirklich vorzeigbar wird! Bis dahin wird es noch ein weiteres Gameplay-Video geben, das alle neuen Funktionen demonstriert und dass man nun sogar das Spiel verlieren und seinen Highscore-Eintrag hinterlassen kann. Wenn die vielen Spielmechaniken mal irgendwann alle fertig implementiert sind, dann kann ich mich endlich um das wirkliche Spieldesign kümmern, also um die Levels, das Feintuning, ein korrektes Gegnerverhalten, uvm.

Lange habe ich mich nicht mehr so sehr über etwas geärgert wie die Windows-Dateisuche. Aus einem bestimmten Ordner mit sehr vielen unterschiedlichen Dateien wollte ich anhand eines entsprechenden Namensmusters einige davon in einen anderen Ordner verschieben. Nichts leichter als das, dachte ich mir, denn die Windows-Suche unterstützt ja schließlich Wildcards („*“ und „?“), und auf den Kopf gefallen bin ich zum Glück auch nicht. Die erwartete Trefferliste lieferte mir die Suchfunktion in Nullkommanix. Mittels Ausschneiden und Einfügen waren mehrere hundert Dateien blitzschnell an den neuen Ort verschoben.

Durch Zufall fiel mir eine Datei ins Auge, die in dem neuen Ordner aber definitiv nichts verloren hatte. Hat die Windows-Suche sich da ein wenig vertan? Konnte ja eigentlich kaum sein. Vielleicht habe ich beim Markieren der Dateien irgendetwas verkehrt gemacht? Auch unwahrscheinlich. Um sicherzugehen, machte ich den Verschiebevorgang rückgängig und führte die Suche erneut aus. Wieder wollte ich die gefundenen Dateien verschieben. Und wieder waren Dateien dabei, die nicht auf das Namensmuster zutreffen konnten. Spinnt Windows oder versagt hier der Faktor Mensch? Ich beschloss also, den Test zu machen:

windowssuche

Was für ein unbrauchbarer Dreck ist das denn bitte? Die Windows-Dateisuchfunktion ist völlig wertlos! Sie hält sich nicht an das Pattern, das ich eingegeben habe, und spuckt neben den richtigen auch falsche Treffer aus. Die Klammern werden einfach ignoriert, so als hätte ich sie nur aus Spaß eingegeben. Meine Recherche im weltweiten Netz bestätigt meine Vermutung: Microsoft hält nichts von Konventionen, sondern bastelt lieber wieder irgendeinen eigenbrötlerischen Schrott zusammen, den man als professioneller Nutzer nicht vernünftig verwenden kann. Das „Escapen“ der Klammern mit Backslashes oder Punkten bringt leider nichts, Windows scheint meine Eingabe nur als grobe Empfehlung zu betrachten. Was richtige Suchergebnisse sind, muss ich offenbar gänzlich dem Betriebssystem überlassen. Die Suchfunktion genügt meinen Ansprüchen hier leider absolut nicht. Bevor ich mir die Microsoft’sche Syntax zur Dateisuche anlerne, sofern eine solche überhaupt existiert, nehme ich lieber ein ordentliches Third Party Tool, mit dem man arbeiten kann.

Beinahe hätte ich meine Dateien unbewusst falsch sortiert. Na danke, Microsoft, ihr verdammten Trolle. Wer weiß wie oft ich darauf bislang schon hereingefallen bin ohne es zu merken. Wie schwer kann es sein, eine Suchfunktion mit Wildcards richtig zu implementieren. Ich verlange ja gar nicht, dass hier reguläre Ausdrücke ausgewertet werden, aber eine simple Suchfunktion, die keinen Mist baut, wäre mir WIRKLICH wichtig. Echt mal.

So habe ich nun in meiner Verzweiflung einige – wie sich herausstellte – ebenfalls ziemlich nutzlose Tools heruntergeladen, die meine Erwartungen nicht erfüllen können, darunter „Everything“, „Snowbird“, „Locate32“ und „UltraSearch“. Entweder ließ sich die Suche nur auf (langwierig) vorindizierte Festplatten anwenden (und ich wollte nicht drei Stunden auf mein Suchergebnis warten müssen), oder die Suche ließ sich überhaupt nicht auf Verzeichnisse, sondern im Fall von „Everything“ nur auf ALLES anwenden, oder die Suche kannte keine Wildcards, was ich bei einem Dateisuch-Tool als übles Versäumnis betrachte. Nun habe ich schließlich den „FreeCommander“ ausprobiert. Der hat alle gewünschten Dateien problemlos gefunden, mit exakt demselben Suchmuster, wie ich es zuvor dem Windows Explorer vorgesetzt hatte – und zwar im Gegensatz dazu fehlerfrei.

Ich gebe zu, dass mein Auto nicht das sauberste ist, jedenfalls nicht in den Zwischenräumen, unter dem Tankdeckel, unter der Motorhaube oder am Unterboden, oder sonst irgendwo, wo sowieso kaum jemand nachschaut. Ich hatte schon Spinnweben am Armaturenbrett, komplette Spinnennetze zwischen den Gummidichtungen, oder verdammte Marder, die es sich im Motorraum gemütlich machen, aber gestern habe ich beim Öffnen des Kofferraums ein für mich ungewöhnliches Gebilde entdeckt:

autonest

Verzeiht meine Unwissenheit was die hiesige Fauna angeht, aber ist das vielleicht ein Mini-Wespennest? Befestigt etwas unterhalb des Heckklappenscharniers an einem Gumminippel, der wohl irgendwie als eine Art Türstopper für die Heckklappe dienen soll, oder einfach nur als Schutzkappe für eine Schraube. Das Nest schien jedenfalls bereits verlassen worden zu sein. Ich frage mich, wie mir sowas entgehen konnte. Oder reichen den fliegenden Tierchen schon ein bis zwei Tage, um sowas komplexes zu konstruieren? Man stelle sich vor, die hätten ihr Nest noch weiter ausgebaut und bevölkert, und mich irgendwann während der Fahrt auf der Autobahn vorne auf dem Fahrersitz besucht. Da braucht man Nerven, um seine Reaktionen zu beherrschen.

Irgendwie eine kleine Horrorvorstellung für mich. Als würden mir Spinnen hinter der Verkleidung im Fahrzeuginneren nicht schon reichen, die jederzeit während der Fahrt herauskrabbeln könnten. Aber nun muss ich mich also auch vor stechendem Insektengetier fürchten, das seine Population auch gerne ins Fahrzeuginnere verlegt. Das merkwürdige Gebilde habe ich sofort entfernt. Ich habe zwar irgendwas von Artenschutz von Wespen gelesen, und dass man ein Nest nicht einfach entfernen darf, aber es war sowieso niemand zuhause UND eigentlich ist es mir völlig egal, wenn ich ehrlich bin. Ich will sowas nicht im Auto haben.

Update vom 26.05.: Da habe ich das Nest gerade erst am Freitag entfernt, und heute Morgen in aller Früh hing das bescheuerte Vieh am Auto und hat exakt an derselben Stelle schon wieder die ersten paar Waben für ein neues Nest aufgebaut – und sogar fleißig Eier abgelegt, wenn ich das richtig gesehen habe. Geistesgegenwärtig habe ich die Wespe zunächst in Ruhe gelassen, die Heckklappe wieder geschlossen und das Tier mit zur Arbeit genommen. Nach Feierabend habe ich die Wespe dann dort ausgesetzt, und ihre Hinterlassenschaften sorgfältig entfernt. Hoffentlich bleibt sie jetzt mal von meinem Auto weg, und sucht sich wenigstens ein anderes.

ocajpKönnen Klassen in Java „protected“ oder sogar „private“ sein? Welchen Case springt ein Switch mit einem null-String an? Ist ein statischer Konstruktor ein Konstruktor mit „static“-Modifier? Werden Methoden oder Variablen dynamisch oder statisch gebunden? Können Interfaces von mehreren anderen Interfaces erben? Kompiliert eine Klasse mit der Methode „private static void main“ und ist diese startfähig? Wer solche Details nicht weiß, braucht sich über das Thema Zertifizierung noch keine Gedanken machen. Ich mache mir bereits seit Monaten Gedanken.

Seit Anfang der Woche bin ich offiziell ein von Oracle zertifizierter Java-Programmierer – endlich! Die hierzu nötige Prüfung habe ich mit 85% bestanden. Zum Bestehen brauchte man 63% der richtigen Antworten, dieser Wert variiert je nach Schwierigkeitsgrad des Aufgabenkatalogs. In meinem Fall handelte es sich um ziemlich schwere Aufgaben. Zum Vergleich: Nur wenige Jahre zuvor waren zum Bestehen stolze 77% nötig, die Aufgaben also wesentlich einfacher. Zweieinhalb Stunden hat man Zeit, sich beinahe 90 hirnverknotende Codebeispiele durchzulesen, im Kopf zu interpretieren und dann via Multiple-Choice die richtige Antwort anzuklicken – weniger als zwei Minuten pro Aufgabe. Ansatzpunkte gibt es natürlich keine. Ein paar kümmerliche Alibi-Wissensfragen zwischen den endlosen Zeilen voller Quellcode sollen wohl beruhigend wirken. Am Ende hat mir die Zeit gerade so gereicht.

Die fast 200 Euro teure Zertifizierung (Schulungsmaßnahmen nicht eingerechnet) zum sogenannten „Oracle Certified Associate, Java SE 7 Programmer“ (kurz OCAJP) ist die erste, die man als Java-Programmierer absolvieren kann, sie ist mittlerweile Voraussetzung für sämtliche weiteren. Jetzt habe ich die Möglichkeit, mich irgendwann sogar als professioneller Java-Programmierer (OCPJP) zertifizieren zu lassen, was ich definitiv plane, aber bis dahin wartet noch sehr viel mehr an Vorbereitung und Training auf mich. Das gedruckte Zertifikat sollte in den nächsten sieben Wochen bei mir eintreffen, bis dahin kann ich mich an der PDF-Version ergötzen.

Wer sich mit dem Thema noch nie befasst hat, aber neugierig auf die Prüfung ist, sollte gewarnt sein. Die Fragen sind wirklich knallhart. Es wird nie nach den allgemeinen Dingen gefragt, die jeder Java-Programmierer beantworten kann. Es werden gezielt die Schwachstellen abgeklopft, all jene Aspekte und Grenzfälle abgeprüft, die viele eben nicht kennen. Die Prüfung spekuliert darauf, dass viele etwa den einfachen Unterschied zwischen String s = „Hallo“; und String s = new String(„Hallo“); nicht kennen, und fragt dann gerne ganz genau nach, wieviele Objekte der Garbage Collector der JVM aufräumen darf.

Ich bin voller Stolz, diese Hürde erfolgreich genommen zu haben. Der OCAJP war der nächste große Schritt, mich im Bereich Softwareentwicklung bzw. Java-Programmierung zu beweisen und zu etablieren. So ein Zertifikat kann eines Tages den Unterschied zwischen Arbeitslosengeld und Gehalt ausmachen. Oder zwischen Gehalt und Gehalt++. Das muss sich alles noch herausstellen. Bis dahin werde ich weiterhin Erfahrung sammeln und Bücher wälzen.