Cube-Wars 2010
Schritt für Schritt

Durch das Programmierer Treffen in Frankfurt angestoßen habe ich mich entschieden noch ein paar Sachen zu überarbeiten und zu verbessern bevor ich den Funktionsprotyp freigebe.
Der erste Schritt in diese Richtung war eine Reihe von korrekturen, die im späteren Stadium schwer auffindbare Fehler hätten verursachen können. So z.b. das animierte ConnectorPunkte (entgegen dessen was ich auf dem Treffen behauptet habe) ganz und garnicht funktionierten.
Auch habe ich die Priority Datei überarbeitet, so das jetzt nicht nur angegeben werden kann was geladen werden soll, sondern auf bei Bedarf der Rest des Ordner, oder eben nichts weiteres, geladen wird. Standardmäßig wird nach abarbeitung der Priority Datei der Rest des Verzeichnisses geladen.
Des weiteren habe ich TEngine (und die dazu gehörigen GameData-klassen) Abstrakt gemacht - ebenso die Loader Funktionen der TEngine GameData Klassen (TEngineGameData und TEngineGameDataGraphical). Damit wird erzwungen das
a) die Datenstruktur von TEngine nicht alleine benutzt wird, sondern abgeleitet werden MUSS
b) das GameData Klassen einen korrekt definierten Loader Funktionssatz haben
Auch habe ich damit begonnen kleinere Unstimmigkeiten in der Engine zu suchen und auszumerzen. Das sind folgende Punkte:
a) Es gibt derzeit noch einen massiven Leistungseinbruch (~200-300fps) wenn die Bewegungs und Angriffsradien einer Einheit angezeigt werden. Ich bin der Ursache auf der Spur.
b) Im DebugModus (egal ob per CMD oder Compile definiert), wird eine bestimmte Instanz am ende des Programmablaufs nicht gelöscht. Das ist ziemlich seltsam - auch hierran arbeite ich.
c) Manchmal gibt es in der Engine starke FPS Schwankungen von bis zu 30fps ins Plus oder Minus, ich habe noch keine Ahnung wodran das liegen kann, befürchte aber das es an der Update Routine der TAnimationController liegt.
Ebenfalls durch das Treffen angestoßen gibt es jetzt eine Möglichkeit des sog. "StrictDebugMode". Im ganzen Code von Cube-Wars gibt es nur 2 RuntimeErrors. Ich vermeide RTE's wann immer möglich, weil ich die Engine wirklich nur wenn es umbedingt sein muss abschießen will. StrictDebugMode provoziert aber ein anderes verhalten. Sofern ein DebugLog Eintrag mit der WARNING-Flag erstellt wird, dann wird ein RTE mit dem zu erstellenden Text erzeugt.
Ich denke die release des Funktionsprototypen verzögert sich im Worst-Case noch bis auf Ende nächster Woche, ich rechne aber eher mit Mitte nächster Woche. Was mich am meisten momentan wurmt ist dieser ungeheuerliche Leistungseinbruch im Spiel.
Bis zum nächsten Eintrag - Kernle



a) die Datenstruktur von TEngine nicht alleine benutzt wird, sondern abgeleitet werden MUSS
b) das GameData Klassen einen korrekt definierten Loader Funktionssatz haben

a) Es gibt derzeit noch einen massiven Leistungseinbruch (~200-300fps) wenn die Bewegungs und Angriffsradien einer Einheit angezeigt werden. Ich bin der Ursache auf der Spur.
b) Im DebugModus (egal ob per CMD oder Compile definiert), wird eine bestimmte Instanz am ende des Programmablaufs nicht gelöscht. Das ist ziemlich seltsam - auch hierran arbeite ich.
c) Manchmal gibt es in der Engine starke FPS Schwankungen von bis zu 30fps ins Plus oder Minus, ich habe noch keine Ahnung wodran das liegen kann, befürchte aber das es an der Update Routine der TAnimationController liegt.

Ich denke die release des Funktionsprototypen verzögert sich im Worst-Case noch bis auf Ende nächster Woche, ich rechne aber eher mit Mitte nächster Woche. Was mich am meisten momentan wurmt ist dieser ungeheuerliche Leistungseinbruch im Spiel.
Bis zum nächsten Eintrag - Kernle
Loader die 2.

Nachdem ich mir das Gebilde gestern nochmal durchgeschaut habe, habe ich eine kleine Änderung vorgenommen. Anstatt die Daten in 2 verschiedene Containerdateien aufzuteilen, werden jetzt beide, also Cube- und Felddaten aus einer Containerdatei namens CGD (CubeWarsGameData) gespeist. Die Aufteilung der Dateien bleibt zur Übersichtlichkeit aber.
So schnell kann es manchmal gehen.
So schnell kann es manchmal gehen.
...loaded

Nachdem der Funktionsprototyp nun fertig ist, kümmere ich mich um den ganzen Kram der im Code liegen geblieben ist, zugunsten der Zeit. D.h. ich optimiere hier und da was, lösche da die auskommentierten Zeilen, usw.
Aber auch Funktional tut sich noch was. So habe ich die vergangenen Tage damit verbracht den ganzen Content des Spiels auf einen Loader umzustellen. D.h. der gesammte Spielinhalt wird jetzt über zwei eigene kleine Container-Datei geladen.
.cud - CubeWarsUnitData
und
.cfd - CubeWarsFieldData
Zudem gibt es jetzt die Möglichkeit einen "Priority" Datei zu erstellen (Priority.ini), mit der geregelt werden kann ob, was und in welcher Reihenfolge die Daten im Verzeichnis der Priority-Datei geladen werden sollen. Die priority Datei für die Unit Daten sieht z.b. so aus:
Zitat:
Wie man sieht sind die Dateien die die Element und Alloy Changes enthalten (ich habe die Daten üprigens nur der Übersichtlichkeit aufgeteilt - ich könnte sie auch alle in eine Datei packen) alle nach ganz unten verschoben worden. Das ist nur logisch, denn die Changes benötigen eine vorhandene Legierung oder Element zum "Anhängen". Würde man die Changes zuerst erstellen, würde die Engine die Basisobjekte nicht finden, und die Changes würden nicht erstellt.
Parallel zum Feintuning am Funktionsprototyp arbeite ich an einer Umfassenden Dokumentation zu selbigem. Darin geht es vor allem um die ganzen kleinen Konzepte die ich für Cube-Wars entwickelt habe, aber natürlich auch um das Spiel selber, das Kampfsystem, sowie die bisherige Entwicklungsgeschichte.
Letztere gibt es ab jetzt auch schon als PDF zum Download:
https://www.blitzforum.de/upload/file.php?id=7180
Der Rest der Dokumentation folgt dann mit der Release des Funktionsprototypen selber.
So long,
Kernle
Aber auch Funktional tut sich noch was. So habe ich die vergangenen Tage damit verbracht den ganzen Content des Spiels auf einen Loader umzustellen. D.h. der gesammte Spielinhalt wird jetzt über zwei eigene kleine Container-Datei geladen.
.cud - CubeWarsUnitData
und
.cfd - CubeWarsFieldData
Zudem gibt es jetzt die Möglichkeit einen "Priority" Datei zu erstellen (Priority.ini), mit der geregelt werden kann ob, was und in welcher Reihenfolge die Daten im Verzeichnis der Priority-Datei geladen werden sollen. Die priority Datei für die Unit Daten sieht z.b. so aus:
Zitat:
// Loading Basic Unit Data
Bases.cud
Weapons.cud
Elements.cud
Types.cud
Alloys.cud
Powers.cud
// Loading Changes in Element and Alloy Logic
ElementChanges.cud
AlloyChanges.cud
Bases.cud
Weapons.cud
Elements.cud
Types.cud
Alloys.cud
Powers.cud
// Loading Changes in Element and Alloy Logic
ElementChanges.cud
AlloyChanges.cud
Wie man sieht sind die Dateien die die Element und Alloy Changes enthalten (ich habe die Daten üprigens nur der Übersichtlichkeit aufgeteilt - ich könnte sie auch alle in eine Datei packen) alle nach ganz unten verschoben worden. Das ist nur logisch, denn die Changes benötigen eine vorhandene Legierung oder Element zum "Anhängen". Würde man die Changes zuerst erstellen, würde die Engine die Basisobjekte nicht finden, und die Changes würden nicht erstellt.
Parallel zum Feintuning am Funktionsprototyp arbeite ich an einer Umfassenden Dokumentation zu selbigem. Darin geht es vor allem um die ganzen kleinen Konzepte die ich für Cube-Wars entwickelt habe, aber natürlich auch um das Spiel selber, das Kampfsystem, sowie die bisherige Entwicklungsgeschichte.
Letztere gibt es ab jetzt auch schon als PDF zum Download:
https://www.blitzforum.de/upload/file.php?id=7180
Der Rest der Dokumentation folgt dann mit der Release des Funktionsprototypen selber.
So long,
Kernle
Funktionsprototyp fertig!

Hiermit verkünde ich feierlich das der Funktionsprototyp fertig gestellt ist.
Hiermit ist der 1. echte Meilenstein in der gesamten Entwicklungszeit von Cube-Wars (seit 2004) erreicht.
Hinter mir liegen knapp 6 Monate intensiver Programmierarbeiten. Einige Sachen haben in der Zeit gelitten, so habe ich z.b. meine Gitarre vernachlässigt, und auch die Schule hat etwas gelitten.
Bis zum ende der Ferien werde ich jetzt noch ein wenig Feintuning betreiben. Ich möchte die Erstellroutinen für die Einheiten und Felddaten noch auslagern, und ein Primitives Menü erstellen. Aber das zähle ich wie gesagt zum Punkt Feintuning - Der Funktionsumfang ist zu diesem Punkt prinzipiell erstmal vollständig
Auf dem Frankfurt-Treffen werde ich den Funktionsprototyp vorstellen, und zum Ende der NRW-Ferien (25.10.09) auch hier im Worklog zugänglich machen.
Hiermit endet er, der 35. Eintrag in der Odysee die ich mir selbst geschaffen habe. Fast 5 Jahre ist es her das ich die Idee zu Cube-Wars hatte. Eine lange Zeit. Und mit dem Abschluss des Funktionsprototypen habe ich erstmals das Gefühl das ich es diesmal wirklich schaffen könnte das Spiel jemals fertigzustellen.
Codestand zum Abschluss des Funktionsprototypen:
Zeichen: 352252
Zeilen: 9466
Klassen: 28
So long,
Kernle
Hiermit ist der 1. echte Meilenstein in der gesamten Entwicklungszeit von Cube-Wars (seit 2004) erreicht.
Hinter mir liegen knapp 6 Monate intensiver Programmierarbeiten. Einige Sachen haben in der Zeit gelitten, so habe ich z.b. meine Gitarre vernachlässigt, und auch die Schule hat etwas gelitten.
Bis zum ende der Ferien werde ich jetzt noch ein wenig Feintuning betreiben. Ich möchte die Erstellroutinen für die Einheiten und Felddaten noch auslagern, und ein Primitives Menü erstellen. Aber das zähle ich wie gesagt zum Punkt Feintuning - Der Funktionsumfang ist zu diesem Punkt prinzipiell erstmal vollständig
Auf dem Frankfurt-Treffen werde ich den Funktionsprototyp vorstellen, und zum Ende der NRW-Ferien (25.10.09) auch hier im Worklog zugänglich machen.
Hiermit endet er, der 35. Eintrag in der Odysee die ich mir selbst geschaffen habe. Fast 5 Jahre ist es her das ich die Idee zu Cube-Wars hatte. Eine lange Zeit. Und mit dem Abschluss des Funktionsprototypen habe ich erstmals das Gefühl das ich es diesmal wirklich schaffen könnte das Spiel jemals fertigzustellen.
Codestand zum Abschluss des Funktionsprototypen:
Zeichen: 352252
Zeilen: 9466
Klassen: 28
So long,
Kernle
Felder 1x1

Und nochmal ein kleiner Schritt für die Menschheit...
Endlich sind auch die Felder komplett fertig. Die Map / Arena ist bisher fest einprogrammiert. Wenn ich es schaffe lagere ich das aber noch aus.
Was man auch sieht das ich das HUD nochmal überarbeitet habe. Der Graue Klotz war mir dann doch zu hässlich. Auch der "Glow" wurde nochmal Grunderneuert und leuchtet jetzt im Spiel auch leicht animiert.
Anklicken für größere Variante
Die Technisch größte Neuerung drüfte sein das Einheiten jetzt mehrere Waffen, Legierungen und Powers (ehemals "Slots") unterstützen. Die Einheit muss dabei nur mind. eine Waffen haben, die anderen beiden Objekte sind Optional.
Ansonsten bin ich mit meinem Code-Revising fast fertig, d.h. habe nochmal alle Klassen und dergleichen auf Fehler geprüft, genormt, komplettiert, usw.
Es fehlt jetzt tatsächlich nurnoch ein wenig Kleinkram wie etwa Sound, dann ist der Funktionsprototyp aus der Spieltechnischen Sicht fertig. Wenn ich die Zeit finde mache ich noch ein kleines Menü, aber das ist nicht so vordergründig.
Ich hoffe das der nächste Eintrag die Verkündung der Fertigstellung des Funktionsprototyps sein wird. Ob es so kommen wir, man wird sehen.
Bis dann ~ Kernle
Endlich sind auch die Felder komplett fertig. Die Map / Arena ist bisher fest einprogrammiert. Wenn ich es schaffe lagere ich das aber noch aus.
Was man auch sieht das ich das HUD nochmal überarbeitet habe. Der Graue Klotz war mir dann doch zu hässlich. Auch der "Glow" wurde nochmal Grunderneuert und leuchtet jetzt im Spiel auch leicht animiert.

Anklicken für größere Variante
Die Technisch größte Neuerung drüfte sein das Einheiten jetzt mehrere Waffen, Legierungen und Powers (ehemals "Slots") unterstützen. Die Einheit muss dabei nur mind. eine Waffen haben, die anderen beiden Objekte sind Optional.
Ansonsten bin ich mit meinem Code-Revising fast fertig, d.h. habe nochmal alle Klassen und dergleichen auf Fehler geprüft, genormt, komplettiert, usw.
Es fehlt jetzt tatsächlich nurnoch ein wenig Kleinkram wie etwa Sound, dann ist der Funktionsprototyp aus der Spieltechnischen Sicht fertig. Wenn ich die Zeit finde mache ich noch ein kleines Menü, aber das ist nicht so vordergründig.
Ich hoffe das der nächste Eintrag die Verkündung der Fertigstellung des Funktionsprototyps sein wird. Ob es so kommen wir, man wird sehen.
Bis dann ~ Kernle
Und es wart ein HUD geboren

Und wieder hat ein kleines Stück vom Funktionsprototyp seine Vollendung gefunden: Das Provisorische HUD. Auch sind die Einheitengrafiken nahezu fertig, wie man den Bildern vielleicht auch entnimmt. Ein Detail das leider durch die Bilder verloren geht: Jeder Teil der Einheit ist individuell animiert.
Anklicken für größere Variante
Was auf dem Bild wohl ebenfalls ins Auge sticht ist der komische Grüne Schein um eine der Einheiten. Nun, das ist mein Provisorische Versuch die Zugehörigkeit der Einheit auch ohne HUD darzustellen. Wie man sieht noch recht erfolglos
Aber ich habe ja noch etwas Zeit, und notfalls streiche ich es einfach wieder.
Anklicken für größere Variante
Dieses Bild zeigt ziemlich die gleiche Situation, aber in einem anderen Moment. So sieht man z.b. das die rechte Einheit schon ein wenig Schaden genommen hat, und der gerade erteilte Schaden parallel dazu durch eine Zahl über der Einheit hervorgehoben wird.
Das war es eig auch schon für diesen Eintrag, viel mehr habe ich in der kurzen Zeit eig auch nicht geschafft. Ich habe ein paar Translations hinzugefügt die fehlten, und passen dazu den Englischen Translationfile komplett neu geschrieben, sowie den Deutschen ein wenig angepasst ("Ecken & Kanten V2" ist kein sonderlich inovativer Waffenname oder?). Auch habe ich hier und da noch ein paar kleine Fehler behoebn und optimierungen vorgenommen, Peanuts im Grunde genommen.
Theoretisch fehlt jetzt nurnoch ein wenig kleinkram, und ich bin fertig. Dieser "Kleinkram" umfasst Spritegrafiken (um den Einheitenschaden sowie Einheitentod noch besser zu visualisieren), und Sound. Auf Musik werde ich vermutlich verzichten.
So long,
Kernle

Anklicken für größere Variante
Was auf dem Bild wohl ebenfalls ins Auge sticht ist der komische Grüne Schein um eine der Einheiten. Nun, das ist mein Provisorische Versuch die Zugehörigkeit der Einheit auch ohne HUD darzustellen. Wie man sieht noch recht erfolglos


Anklicken für größere Variante
Dieses Bild zeigt ziemlich die gleiche Situation, aber in einem anderen Moment. So sieht man z.b. das die rechte Einheit schon ein wenig Schaden genommen hat, und der gerade erteilte Schaden parallel dazu durch eine Zahl über der Einheit hervorgehoben wird.
Das war es eig auch schon für diesen Eintrag, viel mehr habe ich in der kurzen Zeit eig auch nicht geschafft. Ich habe ein paar Translations hinzugefügt die fehlten, und passen dazu den Englischen Translationfile komplett neu geschrieben, sowie den Deutschen ein wenig angepasst ("Ecken & Kanten V2" ist kein sonderlich inovativer Waffenname oder?). Auch habe ich hier und da noch ein paar kleine Fehler behoebn und optimierungen vorgenommen, Peanuts im Grunde genommen.
Theoretisch fehlt jetzt nurnoch ein wenig kleinkram, und ich bin fertig. Dieser "Kleinkram" umfasst Spritegrafiken (um den Einheitenschaden sowie Einheitentod noch besser zu visualisieren), und Sound. Auf Musik werde ich vermutlich verzichten.
So long,
Kernle
'Unit Attacked'

Und wieder ist Cube-Wars dem Funktionsprototypen ein Stück näher gerückt. Einheiten haben jetzt (sofern im Echtzeit Kampfsystem Modus) eine Aktionsleiste, die dafür sorgt das Einheiten nur Aktionen ausführen können sofern deren Leiste gefüllt ist. Diese Leiste wird neben der CP-Leiste (Corepoints, sowas wie HP = Healthpoints) Visuell bei jeder Einheit dargestellt. Auch können Einheiten endlich besiegt werden.
Anklicken für größere Variante
Die obere Leiste ist die Aktionsleiste, die untere die CP-Leiste.
Des weiteren habe ich mehrere kleine Fehler beseitigt, und die Performence allgemein ein kleinwenig verbessert, aber leider nicht wirklich nennenswert (höchstens 1-2 ms pro Frame). Außerdem habe ich jetzt endlich mal den Arm-Test rausgenommen
Jetzt fehlt im Grunde nurnoch die Miteinbeziehung der Felder fürs Kampfsystem, dann ist der Echtzeitbasierende Teil des Kampfsystems schon fertig yay...
Bis zum nächsten Eintrag,
Kernle

Anklicken für größere Variante
Die obere Leiste ist die Aktionsleiste, die untere die CP-Leiste.
Des weiteren habe ich mehrere kleine Fehler beseitigt, und die Performence allgemein ein kleinwenig verbessert, aber leider nicht wirklich nennenswert (höchstens 1-2 ms pro Frame). Außerdem habe ich jetzt endlich mal den Arm-Test rausgenommen

Jetzt fehlt im Grunde nurnoch die Miteinbeziehung der Felder fürs Kampfsystem, dann ist der Echtzeitbasierende Teil des Kampfsystems schon fertig yay...
Bis zum nächsten Eintrag,
Kernle
Bewegung im Getriebe

Es geht vorran mit Cube-Wars... Als neustes gibt es zu vermelden das Einheiten jetzt anwählbar sind, und auch für den Moment bewegbar (für den Moment, da es noch kein Einheiten-Timing gibt, d.h. man kann die Einheiten jederzeit bewegen ohne auf eine Aktions/timingleiste der Einheiten zu achten) . Des weiteren können Einheiten untereinander schon Schaden austeilen, auch wenn dieser weder Visuell darstellbar ist, noch es eine Todes-Abfrage gibt. Aber es ist ein großer Schritt in die Richtige Richtung.
Wenn es so weiter geht werde ich bis zum Wochenende das Kampfsystem soweit fertig haben. Dann fehlt noch etwas Kleinkram (den ich vermutlich eh schon in der Woche parallel erledige) sowie ein paar kleinere Hürden wie Sound und GUI die ich mir zum Schluss aufbewahre, und dann ist die Techdemo 003 schon fertig. Danach muss nurnoch an allen Ecken komplettiert, optimiert und ausgebessert werden, dann ist der Funktionsprototyp endlich fertig.
Was so einfach und locker klingt ist natürlich noch eine ganze Menge Arbeit, aber ich denke ich werde mit dem Funktionsprototypen wie geplant bis zu den Herbstferien fertig sein. Mein Ziel ist eine Präsentation auf dem Frankfurt Treffen in der 2. Herbstferienwoche in NRW (sofern es statt findet). Eine release hier im Forum kommt dann so schnell wie möglich nach.
Bis zum nächsten Eintrag...
So long,
Kernle
PS: Aktuelle Zahlen aus meinem Projekt:
Zeichen: 268636
Zeilen: 7621
Wenn es so weiter geht werde ich bis zum Wochenende das Kampfsystem soweit fertig haben. Dann fehlt noch etwas Kleinkram (den ich vermutlich eh schon in der Woche parallel erledige) sowie ein paar kleinere Hürden wie Sound und GUI die ich mir zum Schluss aufbewahre, und dann ist die Techdemo 003 schon fertig. Danach muss nurnoch an allen Ecken komplettiert, optimiert und ausgebessert werden, dann ist der Funktionsprototyp endlich fertig.
Was so einfach und locker klingt ist natürlich noch eine ganze Menge Arbeit, aber ich denke ich werde mit dem Funktionsprototypen wie geplant bis zu den Herbstferien fertig sein. Mein Ziel ist eine Präsentation auf dem Frankfurt Treffen in der 2. Herbstferienwoche in NRW (sofern es statt findet). Eine release hier im Forum kommt dann so schnell wie möglich nach.
Bis zum nächsten Eintrag...
So long,
Kernle
PS: Aktuelle Zahlen aus meinem Projekt:
Zeichen: 268636
Zeilen: 7621
Dem Funktionsprototyp so nah

Und hier kommt er, der 30. Eintrag in der Cube-Wars Worklog
Als erstes, warum gab es so lange keinen Eintrag mehr? Nun, ich habe mich die letzten Wochen sehr intensiv mit Cube-Wars beschäftigt, immerhin halte ich weiterhin daran fest bis zu den Herbstferien hier in NRW (12.10.09) den Funktionsprototypen von Cube-Wars fertig zu haben.
Und was hat sich getan? Viel, sehr viel. Nahezu alles was bisher hier präsentiert wurde habe ich nochmal aufgefrischt und -poliert und mit meinen neusten Erkenntnissen gefüttert.
Nach etlichen Testversionen die ich ausschließlich im Chat vertrieben habe, heißt die nächste Version Techdemo 003, und diese wird erstmals anspielbare Elemente (das heißt konkret: ein Kampfsystem) enthalten. Danach folgt der ersehnte Funktionsprototyp.
Hier ein Bild, einfach aus der aktuellen Version gegriffen:
Anklicken für größere Variante
Es ist schwer konkret zu sagen was sich alles getan hat, aber hier so ziemlich die wichtigsten Dinge:
Benchmarks erstellt (3 an der Zahl)
Support für OpenGL (Standard) und Direct3D
"GUI" aufgeräumt und optimiert
Etliche Fehler korrigiert (die Changeslog zur letzten veröffentlichen Version war endlos :S)
Den Arm (rechts unten zu sehen) mehrmals verändert (mittlerweile animiert).
Das Spielfeld neu ausgerichtet (Zentriert) sowie mit Shading und neuem Glow ausgestattet
Komplette integration eines funktionierenden Commandline Parser
TImageFile, TImageInstance, TConnector2D und TConnection2D fertiggestellt und optimiert
Komplette integration des TGraphicalSet
Erste Rudimentäre Anfänge der Klasse TGameUnit
Für genaueres schaut in die Changeslogs der untrigen Downloadversionen
--------------------------------------------
Alle im Chat veröffentlichen Versionen mit Datum:
Techdemo 001 (26.08.2009)
Techdemo 002 (10.09.2009)
Techdemo 002-2 (12.09.2009)
Techdemo 002-3 (13.09.2009)
Techdemo 002-4 (21.09.2009) [non-public preversion: 18.09.2009]
Sammel Download
--------------------------------------------
Das wars auch schon mit dem 30. Eintrag. Ab jetzt werde ich falls möglich / nötig wieder öfter was schreiben. Zumal auch jetzt erst langsam für die meisten das eigentlich interessante ins Rampenlicht tritt: Das Kampfsystem.
So long,
Kernle
PS: Habe ich bereits erwähnt das ich den Arm toll finde, auch wenn er so rein garnichts mit dem Spiel zu tun hat?
Als erstes, warum gab es so lange keinen Eintrag mehr? Nun, ich habe mich die letzten Wochen sehr intensiv mit Cube-Wars beschäftigt, immerhin halte ich weiterhin daran fest bis zu den Herbstferien hier in NRW (12.10.09) den Funktionsprototypen von Cube-Wars fertig zu haben.
Und was hat sich getan? Viel, sehr viel. Nahezu alles was bisher hier präsentiert wurde habe ich nochmal aufgefrischt und -poliert und mit meinen neusten Erkenntnissen gefüttert.
Nach etlichen Testversionen die ich ausschließlich im Chat vertrieben habe, heißt die nächste Version Techdemo 003, und diese wird erstmals anspielbare Elemente (das heißt konkret: ein Kampfsystem) enthalten. Danach folgt der ersehnte Funktionsprototyp.
Hier ein Bild, einfach aus der aktuellen Version gegriffen:

Anklicken für größere Variante
Es ist schwer konkret zu sagen was sich alles getan hat, aber hier so ziemlich die wichtigsten Dinge:










Für genaueres schaut in die Changeslogs der untrigen Downloadversionen
--------------------------------------------
Alle im Chat veröffentlichen Versionen mit Datum:






--------------------------------------------
Das wars auch schon mit dem 30. Eintrag. Ab jetzt werde ich falls möglich / nötig wieder öfter was schreiben. Zumal auch jetzt erst langsam für die meisten das eigentlich interessante ins Rampenlicht tritt: Das Kampfsystem.
So long,
Kernle
PS: Habe ich bereits erwähnt das ich den Arm toll finde, auch wenn er so rein garnichts mit dem Spiel zu tun hat?

Es geht vorran

Und wieder bin ich gut vorran gekommen, auch wenn ich mich zum Ende etwas aufgehalten habe. Also, was ist alles passiert seit dem letzten Eintrag?
OBS wurde überarbeitet, und funktioniert jetzt schneller
TEngine hat jetzt eine funktionierende "RemoveAll" Funktion die alle TEngine Instanzen löscht.
TEngine besitzt jetzt Counter für die Anzahl der aktuellen Instancen und OBS Hookings.
Neue Klassen: TImageFile und TConnector2D , TImageInstance und TConnection2D
Was es mit den neuen Klassen auf sich hat leite ich am besten mit einem Bild ein.
Die Grafiken sind nur Test Grafiken und haben nichts mit dem Spiel zu tun!
ImageFiles stehen für geladene Images. Diese kann man aber noch nicht so zeichnen, man muss erst noch eine sog. ImageInstance davon erstellen. Der Sinn dahinter erschließt sich mit der Einführung von Connector2D und Connection2D. Ein Connector ist eine Stelle auf einem Bild, an die andere Bilder "angedockt" werden können, so wie man es auf dem obrigen Bild erahnen kann. Connections sind die Zwischenklassen die ImageInstances an andere koppelt. Connections sind u.a. auch für Lokale Positionierung und Rotation der angedockten (connecteten) ImageInstances zuständig.
Kurz: Erstellt man eine ImageInstance, kann man ihr über die Connectors die sich im dazugehörigen ImageFile befinden weitere ImageInstances andocken. Das alles funktioniert Prima, und auch problemlos mit Image Handles (was man gut beim 1. Beispiel sieht, die Waffe ist an dem Grauen Kreis gehandelt).
Das alles funktioniert schon Prima, es fehlt nurnoch eine >sinnvolle< Art und Weise im nachhinein wieder auf einzelne Connections von einer ImageInstance zuzugreifen, aber daran arbeite ich noch.
An der Bezeichnung von Connectors und Connections (jeweils ein "2D" am Ende) ahnt der ein oder andere es sicher schon: Ja, das ganze obrige Konzept werde ich bei Zeiten auch in 3D Umsetzen. Allein weil das schon die Basis für das Stacking der Einheiten wird. Die 2D Variante ist im Prinzip nur zum lernen da, und vielleicht auch für den Funktions-Prototyp, der komplett in 2D gehalten sein wird.
So long,
Kernle
Edit:
Achja, mein USB-Stick stand Pate für den obrigen Geschütz Turm




Was es mit den neuen Klassen auf sich hat leite ich am besten mit einem Bild ein.

Die Grafiken sind nur Test Grafiken und haben nichts mit dem Spiel zu tun!
ImageFiles stehen für geladene Images. Diese kann man aber noch nicht so zeichnen, man muss erst noch eine sog. ImageInstance davon erstellen. Der Sinn dahinter erschließt sich mit der Einführung von Connector2D und Connection2D. Ein Connector ist eine Stelle auf einem Bild, an die andere Bilder "angedockt" werden können, so wie man es auf dem obrigen Bild erahnen kann. Connections sind die Zwischenklassen die ImageInstances an andere koppelt. Connections sind u.a. auch für Lokale Positionierung und Rotation der angedockten (connecteten) ImageInstances zuständig.
Kurz: Erstellt man eine ImageInstance, kann man ihr über die Connectors die sich im dazugehörigen ImageFile befinden weitere ImageInstances andocken. Das alles funktioniert Prima, und auch problemlos mit Image Handles (was man gut beim 1. Beispiel sieht, die Waffe ist an dem Grauen Kreis gehandelt).
Das alles funktioniert schon Prima, es fehlt nurnoch eine >sinnvolle< Art und Weise im nachhinein wieder auf einzelne Connections von einer ImageInstance zuzugreifen, aber daran arbeite ich noch.
An der Bezeichnung von Connectors und Connections (jeweils ein "2D" am Ende) ahnt der ein oder andere es sicher schon: Ja, das ganze obrige Konzept werde ich bei Zeiten auch in 3D Umsetzen. Allein weil das schon die Basis für das Stacking der Einheiten wird. Die 2D Variante ist im Prinzip nur zum lernen da, und vielleicht auch für den Funktions-Prototyp, der komplett in 2D gehalten sein wird.
So long,
Kernle
Edit:
Achja, mein USB-Stick stand Pate für den obrigen Geschütz Turm

Gehe zu Seite Zurück 1, 2, 3, 4, 5, 6, 7 Weiter