BufferedStream oder nicht?
Ab und an trifft man immer wieder auf elementare Fragen beim Programmieren, die man sich vorher in der Art noch nicht gestellt hat. Diesmal war es generell der FileStream in .NET. Die Frage ist halt, ob die FileStream Klasse in .NET schon einen Buffer verwendet oder ungebuffert ist, sodass man sie besser in einen BufferedStream einpackt, um die Performance zu erhöhen. Glücklicherweise bin ich auf einen Blogeintrag von Brad Abrams im MSDN gestossen, der diese Frage eindeutig beantwortet:
Bei einem FileStream kann im Konstruktor eine Buffergröße mitgegeben werden, d.h. dass ein FileStream generell gebuffert wird und man ihn somit nicht mehr extra in ein BufferedStream verpacken muss.
Tja, da man nicht reinschauen kann, war das nicht von vornherein klar, aber da das momentan für mich wichtig ist (ich brauche eine performante Schreibmethode für Daten), ist es nicht schlecht, wenn man das weiss und nicht unnötig Balast aufbaut.
Das Sterben der 2D Spiele
Warum braucht man eigentlich bei jedem Spiel 3D Modelle? Bspw. Command & Conquer, da würde es doch 2D auch tun. Oder die guten alten Point & Click Adventures a la Monkey Island oder Sam & Max - die brauchen doch auch kein 3D. Ohne 3D wären die Anforderungen an den Computer minimal.
Im Prinzip bringen die paar Sätze oben das auf den Punkt, was man schon länger in diversen Foren bei Spieleankündigungen lesen kann, aber haben die Personen, die wieder 2D einfordern wirklich recht? Ursprünglich habe ich auch mal so gedacht, denn warum 3D, wenn es für den Spielablauf unerheblich ist?
Da gibt es aber einen ganz einfach Grund, warum man heute alles in 3D umsetzt und dafür muss man sich die ein wenig in die Arbeit eines Spieleentwicklers hineindenken: Wenn man die Perspektive eines 2D Bildes ändern möchte, dann muss man das Bild neu zeichnen und das ist natürlich teuer und kostet Zeit. Bei einer 3D Szene setzt man einfach die Kamera neu und schon kann das ganze Bild neu berechnet werden.
Das ist der ganze Grund dahinter und auch wenn man Spiele wie Baphomets Fluch, Monkey Island, etc. auch heute noch immer wieder gerne spielt so wird ein klassisches 2D Adventure wohl höchstens noch als Fanadventure das Licht der Welt erblicken. Spiele wie Jack Keane oder Ankh beweisen aber, dass 3D Adventures genauso viel Spaß machen können.
Grundlagen der Digitaltechnik mit Dominosteinen
In der Digitaltechnik gibts nur Nullen und Einsen für die Darstellung von Werten und um mit diesen Informationen etwas anzufangen kann man sie mit logischen Operationen miteinander verknüpfen. Dabei gibt es mehrere Arten von logischen Verknüpfungen, nämlich AND, OR, XOR, NOT, etc.
Der Softwareingenieur Neil Fraser hat sich gedacht, dass man diese Grundfunktionalitäten wohl mal mit Dominosteinen nachbauen könnte und hat das dann gleich mal in die Tat umgesetzt:
Altes Zeug programmiert
Da hab ich doch die Tage mal meine alten Z80 Assemblerkenntnisse wieder ausgegraben und mal wieder was für den Amstrad CPC programmiert. In Z88dk, einem C Compiler für Z80 Computer, gibts eine standardisiertes Interface, um RS232 Schnittstellen anzusprechen. Bisher gab es da für den CPC nur eine nicht getestete Version für das Amstrad STI RS232 Interface, da ich aber einen CPC Booster+ von Antitec mein Eigen nenne, sollte dafür auch eine Implementierung her. Gesagt, getan. Mit ein wenig Hilfe beim Setup durch einen der Hauptentwickler von Z88dk konnte ich beginnen und habe heute die Implementierung fertiggestellt. Das Interface unterstüzt jetzt alle Bitraten von 4800bps bis 115200bps, Datenbits von 5-8 Bit, Paritätsbits keine / ungerade / gerade und Stopbits 1 bzw. 2.
Getestet habe ich die Kommunikation, indem ich ein kleines Echoprogramm für den CPC geschrieben habe und über den PC Zufallszahlen an den CPC übertrage. Das Echoprogramm sendet dann die Zufallszahl direkt wieder zurück und man kann am PC dann den Vergleich mit der gesendeten Zahl durchführen und daran feststellen, ob es Fehler in der Übertragung gab. Das Programm habe ich dann auch gleich mal mehrere Stunden laufen gelassen und es gab auf beiden Seiten keinerlei Probleme. Ich hoffe, deshalb, dass die CPC Booster+ Implementierung es dann in die nächste Z88dk Version schafft.
Kfz Kennzeichen fürs Handy
Als Netbeans 6.0, eine Entwicklungsumgebung für Java Programm, gerade frisch erschienen ist, habe ich mir gedacht, dass man sich die ja endlich mal etwas genauer anschauen könnte. Gesagt, getan, doch warum sollte ich einfach nur ein wenig mit der Software herumspielen und nichts produktives damit machen? Ich habe vorher noch nicht richtig mit Mobiltelefonen gearbeitet und so entstand die Idee, eine kleine Datenbank für Kfz-Kennzeichen zu basteln (auch, weil ich ständig die Städte hinter den Kennzeichen wieder vergesse - da scheint mir wohl anderes wichtiger zu sein
).
Naja, hier ist das, was nach ca. 2.5h dabei herausgekommen ist: Ein einfaches, kleines Java Programm, das ihr auf eurem Mobiltelefon installieren könnt. Es sollte auf allen Mobiltelefonen laufen, die MIDP 2.0 und CLDC 1.1 unterstützen. Hier ein Screenshot von dem Programm:
Und hier die Jar-Datei, die ihr auf euer Mobiltelefon übertragen müsst: Kfz-Kennzeichen v0.1
