Ich weiß nicht, ob ich schon erwähnt, hatte, dass die Cluster Generierung nun wesentlich schneller ist. Das hintergrundterrain wird nun auch effektiver gerendert. Bedeutet, vorher hab ich einfach alle LOD's übereinander gemalt und dann per Clip nur den richtigen Bereich angezeigt. Jetzt wird entweder das eine oder das andere LOD gemalt... dadurch ist das Bild auch wesentlich stabiler und flipt nur dann wenn das LOD gewechselt wird.
Turbo Delphi 2006 war echt doof was das wechseln zwischen den build optionen angeht. Man muss nämlich da noch alles per Hand umstellen. Hab mir dann mal angeschaut, wo das gespeichert wird und mir dann eine 1 Click Lösung gebaut, um zwischen den Optionen zu wechseln. Damit es damals einfacher war, hab ich dann halt alles einfach in den Code gehauen, auch die Dev Sachen. Per PartitionsID und Pfad wurde dann ermittelt, ob es meine ultimative Developer Version ist, oder doch nur ein normaler Client. Theoretisch hätten also auch andere SQ updaten können... naja nicht ganz, weil die FTP Zugangsdaten hatte ich dann doch lieber ausgelagert. Jedenfalls ist das nun alles nicht mehr nötig.
1850 Kb hat die StoneQuest.exe gehabt. Hab mir gedacht, ein Icon muss ja nicht in 256² sein, 64² reicht auch. Damit schon 100 Kb gespart. Die exe ohne Debug Optionen erstellen sparrt auch nochmal 200-300 Kb. Dann konnte ich noch Funktionen raus nehmen, wie besagtes FTP, weil das auch von einer externen Anwendung gesteuert werden kann. Außerdem hat die Clipboard Unit hinten rum wieder die Forms, also die VCL mit eingebunden. Nach dem ganzen Refactoring komme ich nun auf 1003 Kb. Nun lasse ich dann noch am Ende UPX drüber laufen, was die exe Datei auf 360 Kb schrumpfen lässt. Das UPX die Virenscanner beunruhigt ist heutzutage nicht mehr so... sogar im Gegenteil. Lasse ich die exe auf VirusTotal prüfen, dann schlagen nur noch 3 von 56 Virenscanner an. Ohne UPX sind es 6.
Jedenfalls macht das so langsam den Installer überflüssig. Diesen hatte ich in erster Linie deswegen, weil dieser im Gegensatz zur StoneQuest.exe ziemlich klein war. Außerdem hat der die exe Datei versiegelt. Moment? Versiegelt? Am Ende der StoneQuest Datei wurde eine ClientID generiert und angehangen, außerdem die Versionsnummer. Mit der ClientID kann sich SQ am Server ausweisen und man braucht sich beim nächsten Start nicht wieder anmelden, weil der Server ja weiß, welcher Client sich wie eingeloggt hat. Natürlich ändert sich die ClientID, wenn man die exe kopiert. Ganz zu Anfang wollte ich damit mal einen Kopierschutz realisieren und es hätte tatsächlich geklappt, dass die exe die Ausführung verweigert, falls man diese woanders hin kopiert. Aber naja, da man eh ein Account System hat, ist das ganze recht überflüssig geworden.
Jedenfalls kam ich dann auf die Idee, die ClientID einfach zur Laufzeit zu erzeugen, dann brauch ich die auch nirgends hin speichern. Das vereinfacht die ganze Verwaltung auch und ich habe kein gefuckel mit den exe Dateien. In der ClientID werden übrigens keine persönlichen Informationen gespeichert!
Aktuell ist es so, dass ein CRC32 aus der Motherboard Seriennummer, CRC16 aus der PartitionsID und CRC16 aus dem Dateipfad gebildet wird. Also 8 Byte. Durch das Verwenden von mehreren Hashes glaube ich, Kollisionen wesentlich besser noch vermeiden zu können.
Ganz wichtig war für mich der Installer auch, weil die DirectX DLLs statisch gelinkt sind, dass diese existieren. Der Installer hat dafür gesorgt, dass diese Dateien vorhanden sind. Aber eigentlich sollte man die ja eh nicht selbst weiter geben und wenn DX installiert ist, sollten die auch da sein. Wenn ich das einfach mal vorraus setze in Zukunft, dann wird auch das überflüssig.
Das einzige, was der Installer dann noch bietet, ist der Eintrag in der Windows Firewall und das Desktop Icon. Beides nicht sooo gravierend. Desktop Icon erstellen könnte man als Menüoption in SQ mit einbauen. Wird kein Firewall Eintrag erstellt, dann fragt Windows automatisch den Benutzer.
Wichtiger wäre, in SQ einzubauen, dass dann diesen Firewall Status abgefragt wird und das ausführen verweigert wird, wenn es geblockt wird. Ich denke, als reines Multiplayer Spiel kann man vorraus setzen, dass die Anwendung nicht geblockt werden darf.
Also wird es dann erfreulicherweise darauf hinaus laufen, dass in naher Zukunft der Installer komplett verschwindet und man StoneQuest dann direkt da ausführt, wo man es haben möchte. Allerdings wäre es noch gut, dann beim start zu prüfen, ob man in dem Verzeichnis Schreibrechte hat. Sonst gibt es Probleme beim updaten und cachen.
Nachdem ich nun einiges an Management gemacht habe, hab ich heute Nacht zur Entspannung noch mal ein bisschen was fürs Auge gemacht.
Ich fand den Sternennebel irgendwie langweilig, vor allem, weil der zwischen den Sternen und Wolken irgendwie unter geht. Also hat der nochmal einen Anstrich bekommen, ist leicht geändert worden. Das der Planet doch auch davon angeleuchtet werden könnte. Also habe ich die Beleuchtung des Planeten und Ringes angepasst. Nicht perfekt, aber das Ergebnis sieht meiner Meinung nach doch besser aus als vorher. Die Wolken wurden dann auch nochmal etwas überarbeitet. Ein Zusatzparameter kann nun auch einstellen, ob die Wolken eher gleichmäßig oder Haufenweise verteilt sind. Wobei die Haufen schon sehr nach Regenwolken aussehen. Mir gefällt das jedenfalls.
Planet mit Hintergrundbeleuchtung:
Gleichverteile Wolken:
Gehäufte Wolken: