01. März 2010
Ja, es ist schlimm, es ist schlimm! Es ist sehr schlimm! Aber ich komme im Moment einfach nur sehr selten dazu, überhaupt am Projekt weiterzuarbeiten. Und das obwohl ich eigentlich gehofft hatte, die Wintermonate verstärkt hierfür nutzen zu können. Schade. Bevor ich am World-Editor weiterbastle, muss ich noch das GUI-System ein wenig aufpolieren. Ansonsten würde ich mich tot programmieren, wenn es um den Bau der einzelnen Fenster für die verschiedenen Einstellungen etc. geht. Hierfür habe ich nun einen kleinen Entwicklungsschritt zwischengeschoben: Ich erstelle gerade ein kleines System zur Behandlung von XML-Dateien bzw. von XML-Bäumen generell. Diese sollen dann nämlich der Spezifikation von GUI-Komponenten dienen, was eine enorme Erleichterung bei der Verwaltung dieser bedeuten dürfte. Denn der Programmierer (ich) muss sich dann nicht mehr um die Speicherverwaltung der Objekte, Verschachtelung verschiedener GUI-Elemente, korrekte Positionierung und so weiter kümmern. Das steht dann einfach nur alles in einer übersichtlichen XML-Datei, fertig. Die konkrete Logik hinter den GUI-Elementen (Buttons, Drop-Down-Menüs, etc.) muss dann natürlich noch programmiert werden, das ist klar. Bis die Tage.
Veröffentlicht in Entwicklung Keine Kommentare »
04. Dezember 2009
So Freunde, heute gibt es mal wieder einen eher technisch-konzeptionellen Beitrag. Ich habe mir in den Träumen einiger Nächte Ansätze zum Beleuchtungsmodell überlegt. Ich könnte natürlich auch auf gängige Standardmodelle zur Beleuchtung der Szene zurückgreifen, jedoch bringen diese neben ihren Vorteilen auch individuelle Nachteile mit sich und wären vor allem viel zu komplex für mein Vorhaben. Nicht, dass ich diese Komplexität nicht zu meistern wüsste, aber es muss ja beispielsweise gar keine komplexe 3D-Szene beleuchtet werden. Die Struktur der Szene bleibt ja größtenteils zweidimensional, auch wenn einige der Objekte auf 3D-Modellen basieren.
Da bietet es sich ja vielleicht an, auf ein laufzeitlastiges Standardverfahren zur “Per-Objekt-Beleuchtung” zu verzichten, bei der jedes Objekt pro beeinflussender Lichtquelle gerendert werden müsste (also mehrmals). Anstelle dessen könnte anhand der Lichtquellen eine “Light-Map” erstellt werden, die dann quasi in einem nachgelagerten Schritt über die ansonsten fertige Szene gelegt wird, um die gesamte Szene auf einen Schlag und nicht Objekt-weise zu beleuchten. Neben der geringeren Laufzeit und Komplexität wäre ein weiterer Vorteil, dass die Anzahl der Lichtquellen theoretisch beliebig groß sein könnte. Dieser Ansatz existiert in ähnlichen Zügen zwar auch bereits und ist unter dem Begriff Deferred Shading bzw. Deffered Lighting bekannt, der in heutigen modernen A-Klasse-Computerspielen häufig Anwendung findet. Jedich ist es erstens eben nicht genau dasselbe und zweitens ist Deferred Shading für 3D-Szenen konzipiert. Es bietet also Möglichkeiten, auf die ich verzichten kann, weil ich sie für meine 2D-Szenen gar nicht benötige. An sich ist das von mir erarbeitete Konzept ein völlig eigenes, wobei ich mir aber ein paar Ideen bei anderen Beleuchtungstechniken und insbesondere Deferred Shading abgekuckt habe.
Allerdings sind meine Überlegungen noch nicht zu 100% abgeschlossen. So schwanke ich noch zwischen zwei Alternativen zur Mischung der unbeleuchteten Szene mit der Beleuchtung der Lichtquellen. Beide Alternativen erwarten als Input (unter anderem) die unbeleuchtete aber ansonsten fertige Szene in einer Textur. Dann könnte ich zum Einen für jede Lichtquelle die Szene-Textur mit den jeweiligen Lichteigenschaften mischen und in den eigentlichen Grafikspeicher schreiben, indem ich die so berechneten Werte sukzessiv (je Lichtquelle) im Grafikspeicher aufsummiere, bis — nach Verarbeitung aller Lichtquellen — die komplette Szene fertig beleuchtet ist. Zum Anderen könnte ich die Lichtquellen und vielmehr deren Lichteinflüsse zunächst — wie bereits weiter oben kurz unter dem Stichwort “Light-Map” angedeutet — in eine weitere, separate Textur zeichnen. Die Textur der unbeleuchteten Szene und die der Light-Map müssten dann nur noch übereinandergelegt und entsprechend gemischt werden. Hat beides seine Vor- und Nachteile, die ich noch nicht komplett gegenüberstellen konnte. Vielleicht probiere ich beides einmal aus oder kombiniere sogar beide Ansätze irgendwie. Schließlich könnte ich ja auch noch zwischen Hintergrund- und Vordergrundbeleuchtung unterscheiden und jeweils andere Beleuchtungstechniken anwenden.
Veröffentlicht in Cyber E-Razor - Das Spiel Keine Kommentare »
30. November 2009
So, auch diesen Monat gibt es wieder eine Projektstatistik, schließlich tut sich im Moment ja wieder einiges, obwohl ich nicht die allermeiste Zeit habe. Aber da ich ja nun angefangen bin Spiel-spezifischere Komponenten zu entwickeln, bin ich im Moment sehr motiviert, so dass ich auch zwischendurch mal einfach ein paar Zeilen code. So sind im Laufe des Novembers ca. 6.000 Zeilen hinzugekommen (knapp 2.000 Zeilen reiner Code). Aber seht selbst. Hier ist die aktuelle Tabelle:
| 132.662 |
56.419 |
41.473 |
3.866 |
30.904 |
101.758 |
| 100 % |
43 % |
31 % |
3 % |
23 % |
77 % |
(Zur vorigen Tabelle geht es hier.)
Dann habe ich da noch eine erfreuliche Nachricht für euch: Ich wurde schon das eine oder andere Mal gefragt, ob man mal einen Blick auf den Sourcecode werfen dürfe oder auch, ob es sich um ein Open-Source-Projekt handelt. Tja, dazu kann ich bisher ehrlich gesagt selber noch nicht allzu viel sagen, weil ich noch gar nicht weiß, wohin das Projekt noch führt und wie es sich weiterentwickelt. Ausführbaren Code veröffentliche ich also noch nicht, aber ich habe nun eine Dokumentation generieren lassen unter Zuhilfenahme des wirklich tollen Tools Doxygen, wodurch ein sehr guter Überblick über die gesamte Engine und die bisher fertigen bzw. angefangenen Teile des eigentlichen Spiels gegeben wird und die eine Art Dokumentation der API der Engine darstellt. Folgt hierfür einfach diesem Link: Der Code. Viele werden damit wahrscheinlich nix anfangen können, weil es viel zu technisch ist. Aber ich denke, es ist dennoch eine ganz interessante Sache.
Bis die Tage, Freunde.
Veröffentlicht in Entwicklung Keine Kommentare »
27. November 2009
Heute ist ein ganz besonderer Tag, denn Elsa und Cyber haben wieder beide Geburtstag. Cyber spricht ja nicht gerne über sein Alter, aber Elsa wird heute 30. Ein kluger Kopf mit entsprechenden Hintergrundinformationen kann somit auch auf Cybers Alter schließen.
Sehr viel über die beiden zu berichten gibt es darüberhinaus leider nicht, außer natürlich, dass beide enorm auf viele teure Geburtstagsgeschenke abfahren, das ist ganz klar. Aber das wissen ja eh alle.
Mein Geschenk an Elsa und Cyber ist ein Materialeigenschafteneditor. Dieser ist dazu da, um Texturen verschiedener Art mit Farben und Shadern zu kombinieren und diese Kombinationen als “Materialen” zu speichern. Die über den Materialeigenschafteneditor gepflegten Materialien können dann verwendet werden, um sie einzelnen Objekten in der Spielwelt zuzuweisen. Die Texturen der Materialien nehmen dabei verschiedene Rollen ein, z.B. gibt es eine Textur, die die eigentlichen Pixelinformationen des jeweils darzustellenden Objekts enthält. Weitere, optionale Texturen enthalten Informationen über die Oberflächenbeschaffenheit (z.B. in welcher Richtung das Licht reflektiert wird). Die Texturen werden dann mit spezifizierten Farben gemischt, um generische Texturen individuell wiederverwenden zu können. Über die Auswahl einer konkreten Shader-Combo wird angegeben, in welcher Art und Weise die Textur- und Farbinformationen dann letztlich zur Darstellung kombiniert werden.
Es ist mir etwas peinlich, denn der Materialeigenschafteneditor ist noch gar nicht ganz fertig. Aber das merken Elsa und Cyber heute sowieso nicht, hahaha. Also hab ich noch ein wenig Zeit. Aber hier ist ein erster Screenshot:

Veröffentlicht in Allgemein, Artworks, World-Editor Keine Kommentare »
06. November 2009
Heute gibt es den ersten Screenshot vom World-Editor zu sehen. Besonders umfangreich ist das Werkzeugarsenal des World-Editors bisher noch nicht. Aber das wird es erstens bald sein und zweitens kann man bereits “Blöcke” platzieren, auf denen Cyber dann später rumlaufen und -springen wird, sowie von der Undo/Redo-Funktionalität Gebrauch machen:

Im Screenshot mag der Inhalt des World-Editors noch recht langweilig aussehen. Das liegt daran, dass die “Welt” im World-Editor auf Basis ganz simpler Techniken visualisiert wird und das bislang noch ohne individuelle Texturen der Blöcke. Erstens, weil es wenig sinnvoll ist, den World-Editor mit raffinierten Rendering-Techniken auszustatten, weil, zweitens, durch die schlichte Darstellung der Überblick erhalten bleibt und so der Anwender nicht durch ein völlig überladenes Grafikgeballer in den Wahnsinn getrieben wird. Schließlich müssen die “Welten” ja wie auf einem Reißbrett regelrecht konstruiert werden. Hübsch aussehen müssen sie erst später, wenn Cyber sich in ihnen rumtreiben wird. Dann werden sie mit anderen Techniken und ausgefeilten Raffinessen dargestellt. Das sieht dann richtig geil aus — hoffentlich! Yeah, Baby!
Veröffentlicht in Artworks, World-Editor Keine Kommentare »
31. Oktober 2009
Im September hatte ich leider wieder nicht allzu viel Zeit, daher gab es auch keine entsprechende Projektstatistik. Ich habe lediglich hier und da ein paar Bugs beseitigt, wenn ich mal ne halbe Stunde oder so Zeit hatte.
Aber da ich mich diesen Monat nicht so viel um meine Freundin kümmern musste, hatte ich viel Zeit, mich meinem besonderen Kumpel Cyber zu widmen. Dafür muss ich halt wieder näxten Monat dran glauben. Vielleicht kann ich sie aber mit Schmick und Schmunke abspeisen.
Hier ist die aktuelle Tabelle:
| 126.601 |
54.118 |
39.421 |
3.651 |
29.411 |
97.190 |
| 100 % |
43 % |
31 % |
3 % |
23 % |
77 % |
(Zur vorigen Tabelle geht es hier.)
Hui, da hat sich jetzt doch so einiges getan seit August: Ca. 3.000 Codezeilen sind hinzugekommen. Das ist nicht schlecht, finde ich. Die Debug-Konsole ist fertig und mit dem World-Editor bin ich auch bereits angefangen. Ein aktueller Screenshot der geöffneten Debug-Konsole ist hier zu sehen:

Der World-Editor wird natürlich raffiniert sein und auch so Sachen wie Undo/Redo-Funktionalität unterstützen. So ein System muss volles Rohr ausgeklügelt und von vorne bis hinten durchgeplant sein, sonst fliegt einem alles um die Ohren. Der World-Editor wird also ein sehr großer Brocken, den ich zu bewältigen habe. Hier gehe ich aber Schritt für Schritt vor: Zunächst wird man nur einzelne “Blöcke” platzieren können, auf denen Cyber herumlaufen und -springen können soll. Dann kommen Items (einsammelbare Gegenstände) hinzu. Später auch noch Monster und geskriptete Ereignisse (basierend auf Ernie-Script). Das Ganze muss dann noch mit Grafik hinterlegt werden können, was auch keine einfache Sache sein wird. Puh, aber ich freue mich!
Veröffentlicht in Artworks, Entwicklung 1 Kommentar »
16. September 2009
Hallo Freunde! Ab sofort könnt ihr euch das neue Optikboom-Shirt mit folgendem Motiv bestellen. Dabei handelt es sich um einen Scherz, den ich mir erlaubt habe, indem ich Cyber teilweise als Wireframe-Modell dargestellt habe. Das Motiv trägt daher den Namen C-1000 mit Anlehnung an den Terminator T-1000, weil der teilweise ja “ähnlich” aussieht. Jedoch mit C für Cyber. Aber schaut selbst:

Yeah, das ist geil! Folgt hierfür folgendem Link:
cyber-e-razor.spreadshirt.de.
Es besteht auch die Möglichkeit, auf Anfrage individuelle Kombinationen aus T-Shirt-Typ und Motiv zusammenstellen zu lassen. Diese Kreationen tauchen dann unter der Kategorie “Individualshirts” auf. Einfach nachfragen.
Veröffentlicht in Allgemein, Artworks Keine Kommentare »
31. August 2009
Es tut mir leid, dass ihr solange nix mehr von mir gehört habt. Aber ich war in den letzten Wochen viel unterwegs, sowohl privat als auch beruflich. Seit Cyber laufen gelernt hat, habe ich mich bisher leider nicht wieder um die Weiterentwicklung kümmern können. Daher gab es im Juli auch keine Projektstatistik, weil sich ohnehin nix getan hat. Das soll sich natürlich jetzt im September wieder ändern, ganz klar.
Hier ist die aktuelle Tabelle, die sich zur vorigen Tabelle nicht nennenswert geändert hat:
| 118.334 |
50.993 |
36.838 |
3.132 |
27.371 |
90.963 |
| 100 % |
43 % |
31 % |
3 % |
23 % |
77 % |
(Zur vorigen Tabelle geht es hier.)
Für September habe ich mir vorgenommen, die bereits angesprochene Debugging-Konsole umzusetzen und bereits mit ein paar Spiel-spezifischeren Features zu beginnen. Dazu gehört vor allem ein Manager zur Verwaltung von Ingame-Objekten. Bis es soweit ist, ziehen wir uns halt nochmal Cyber rein, wie geil er läuft. Hihihihi.
Veröffentlicht in Entwicklung Keine Kommentare »
26. Juli 2009
Freund Münninger hat sich einen neuen Läppi gezogen und er bat mich darum, das bisher allergeilste Spiel Tank Wars hochzuladen, so dass er es sich herunterladen und auf seinem neuen Gerät zocken kann! Das mache ich natürlich gerne! Hier ist es, Münninger: Tank Wars.
Tank Wars habe ich vor einiger Zeit programmiert. Das geschah damals noch alles unter DOS, daher ist die Grafik auch so “geil”. Aber es bockt ohne Ende, das können alle bestätigen. Ein paar Bekannte erzählten mir mal, dass sie sich wunderten, dass der Rundenzähler nach einiger Zeit wieder bei 0 anfängt zu zählen. Die hatten tatsächlich 256 (und mehr) Partien am Stück gezockt. Wahnsinn! Falls ihr es nicht zum Laufen bekommt, versucht es vielleicht mit DOSBox. (Dafür empfehle ich aber direkt die grafische Benutzeroberfläche D-Fend Reloaded zu benutzen, da ist DOSBox inklusive.) Sound gibt es übrigens keinen. Das ist aber nicht schlimm, denn wenn man mit ein paar Leuten und einer Kiste Bier den Abend damit verbringt, Tank Wars zu zocken, sollte sowieso viel besser etwas Musik im Hintergrund laufen.
Veröffentlicht in Privates Keine Kommentare »
24. Juli 2009
Juhu, heute gibt es ein neues Video plus einen neuen Download. Denn Cyber hat endlich laufen gelernt. Das bedeutet, dass ich nun ein Animationssystem für die 3D-Modelle gebaut habe. Zum Testen habe ich mich an einer kleinen Animation von Cyber versucht, wie er läuft — und zwar sehr easy und entspannt und überaus cool, wie alle finden. Diese Animation basiert komplett auf ganzrationalen sowie trigonometrischen Funktionen. Üblicherweise werden solche Animationen zwar durch Key-Frames realisiert: Das konkrete Aussehen des 3D-Modells wird für bestimmte Zeitpunkte der Animation durch Drehen und Verschieben der einzelnen Joints (Gelenke des “Skeletts” im 3D-Modell) modelliert. Das Aussehen der dazwischen liegenden Zeitpunkte wird dann per Interpolation berechnet. Diesen Key-Frame-basierten Ansatz wird mein Animationssystem später vielleicht auch noch unterstützen. Aber bislang werden die Rotationen und Verschiebungen der Joints durch Funktionen abgebildet (Stichwort Forward Kinematics). Die Resultate sehen so nämlich zumindest zum Teil viel schöner aus als die einer (linearen) Interpolation. Zieht euch die erste Testanimation rein:
Cyber ist jawohl die coolste Sau, oder?
Als nächstes werde ich wohl kleinere “Baustellen” der Engine ausbessern und noch eine auf Ernie-Script-basierende Debugging-Konsole einbauen, wie man sie sonst eher von Ego-Shootern kennt. (Der Begriff Engine gefällt mir ja eigentlich nicht. Aber wie will man das sonst nennen? Framework? Ist doch auch kacke, zumal es ja mehr als “nur” ein Framework ist. Naja, egal.) Aber so eine Konsole ist überaus nützlich. Sie enthält zum Beispiel auch sämtliche Einträge, die in die Log-Datei geschrieben werden. Wie dem auch sei — dann ist der allgemeine Teil auch hoffentlich bald abgeschlossen, so dass ich mit den ersten “Cyber-spezifischen Features” anfangen kann. Bor, da liegt aber auch noch ein ordentlicher Batzen vor mir, sage ich euch! Schubidu.
Veröffentlicht in Artworks, Engine 1 Kommentar »