Archiv für die Kategorie ‘Allgemein’

Kleiner Entwicklungsrückblick

Montag, 15. November 2010

Manchmal finde ich mich selbst etwas frustriert, wenn ich darüber nachdenke, wie lange ich bereits an dem Projekt Cyber E-Razor rockt die Galaxis arbeite und wie lange ich vermutlich noch daran arbeiten werde. Nämlich sehr lange. Das liegt vor allem an zwei Gründen, da mache ich mir nix vor: Zum Einen ist das halt einfach extrem aufwändig, so ein Projekt umzusetzen — und das auch noch alleine. “Normalerweise” entwickeln hunderte von Menschen über viele Jahre an einem Spiel und bringen einen Arbeitsaufwand ein, den ich alleine in mein Projekt stecke. Das führt uns zu Punkt zwei, denn zum Anderen ist es so, dass ich nicht nur das eigentliche Spiel Cyber E-Razor rockt die Galaxis erfinde und erbaue, sondern alles auf dem Weg dorthin selbst programmiere. In den Augen einiger Leute dürfte das relativ dämlich wirken. Aber bei diesem Hobbyprojekt geht es — wie schon an der einen oder anderen Stelle angesprochen — ja gar nicht (nur) um das fertige Produkt, was am Ende (hoffentlich) dabei rauskommt. Sondern bei diesem Hobbyprojekt ist der Weg das eigentliche Ziel. Und wenn man sich diesen Weg mal vor Augen hält, ist der tatsächlich gar nicht so unproduktiv. Im Gegenteil: Eigentlich habe ich im Rahmen der Entwicklung von Cyber E-Razor rockt die Galaxis und der zu Grunde liegenden “Engine” viele kleine bis mittelgroße oder sogar große (Teil-)Projekte erarbeitet und teilweise bereits fertig abgeschlossen. Mit Frust mischt sich dann vielleicht doch ein wenig Stolz, wenn ich mir die folgende Liste anschaue:

  • Eine umfangreiche Mathebibliothek für die Rechnung mit und Transformation von Vektoren und Matrizen;
  • Eine eigene Programmiersprache inklusive Schnittstelle zu C++;
  • Eine Physik-Engine für die Interaktion von Starrkörpern;
  • Ein DirectX-Wrapper-Framework mit Ressourcenverwaltung und Zusatzfunktionalität;
  • Ein XML-System zum Lesen, Schreiben, Verarbeiten und Generieren von XML-Bäumen;
  • Ein umfangreiches konfigurierbares GUI-System.

Im Moment bin ich noch auf der Suche nach einem “neuen” Werkzeug zum Zählen der Code-Zeilen etc. Denn das vorherige Visual-Studio-Addin kann ich leider bis auf Weiteres nicht mehr benutzen. Es müssten mittlerweile ca. 150.000 Zeilen (gesamt) sein. Bis bald.

Geburtstag

Freitag, 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:

Neues Optikboom-Shirt bestellbar

Mittwoch, 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.

Merchandizing-Shop endlich online

Montag, 18. Mai 2009

Na endlich! Ab sofort könnt ihr euch extrem geile T-Shirts mit Cyber-E-Razor-Motiven online bestellen. Der Verdienst fließt direkt in die Entwicklung des Jump-and-Run-Games ein. Weil Tamer nämlich sagt, das erzeugt Druck! Es gibt drei Kategorien: In der Basic-Line werden die schon sehr oft gesehenen T-Shirts mit eingescannten Cyber- und Elsa-Posen zu finden sein. Die zweite Kategorie — Bug-Shirts — beinhaltet Shirts mit coolen Motiven, die durch Bugs zufällig entstanden. Die dritte Kategorie ist einfach Optikboom. Sau geil!

“Write in C”

Freitag, 20. Februar 2009

Heute habe ich einen genialen Cover-Song von “Let it be” von den Beatles im Internet gefunden: “Write in C”. Ein junger Knabe singt und begleitet sich selbst am Klavier. Zieht es euch rein und genießt:

Get the Flash Player to see the wordTube Media Player.

(Link zum originalen YouTube-Video.)

Hach, ist das schön. Leider ist die tolle Performance des Knaben eine relativ kurze. Denn der Song geht eigentlich noch länger. Daher lest euch doch einfach den kompletten Text durch, wie ich ihn mir aus verschiedenen Quellen zusammengesucht habe. Wer den Text ursprünglich verfasst hat, konnte ich leider nicht herausfinden.

When I find my code in tons of trouble,
Friends and colleagues come to me,
Speaking words of wisdom:
“Write in C.”

And as the deadline fast approaches,
And bugs are all that I can see,
Somewhere, someone whispers:
“Write in C.”

Write in C, write in C,
Write in C, oh, write in C.
LOGO’s dead and buried,
Write in C.

I used to write a lot of FORTRAN,
For science it worked flawlessly.
Try using it for graphics!
Write in C.

And if you’ve just spent nearly 30 hours
Debugging some assembly,
Soon you will be glad to
Write in C.

Write in C, write in C,
Write in C, yeah, write in C.
Only wimps use BASIC.
Write in C.

Write in C, write in C,
Write in C, oh, write in C.
PASCAL won’t quite cut it.
Write in C.

Write in C, write in C,
Write in C, yeah, write in C.
Don’t even mention COBOL.
Write in C.

And when the screen is fuzzy,
And the editor is bugging me,
I’m sick of ones and zeroes.
Write in C.

A thousand people swear that T.P.
Seven is the one for me.
I hate the word PROCEDURE,
Write in C.

Write in C, write in C,
Write in C, oh, write in C.
PL1 is 80′s,
Write in C.

Write in C, write in C,
Write in C, yeah, write in C.
The government loves ADA,
Write in C.

Geburtstag

Donnerstag, 27. November 2008

Heute ist der 27. November. Das ist der Geburtstag von Cyber und Elsa. Cyber und Elsa sind im Gegensatz zu dem, was einige Leute denken, nämlich gar kein Pärchen im Sinne von Männlein und Weiblein, sondern Geschwister. Obendrein sind sie Zwillinge. Sie haben heute am 27. November gemeinsam Geburtstag und planen, eine riesen Sause zu veranstalten. Natürlich wünschen sich beide irre viele Geschenke! Das ist ja das Geilste an Geburtstagen: Geschenke! Ein guter Freund von Cyber und Elsa, nämlich Münninger, sagte einst über Geschenke: “Von Herzen müssen sie nicht kommen, aber teuer sollen sie sein!” Das trifft es wohl auf den Punkt! Zumindest findet Elsa das. Cyber ist in dieser Hinsicht nicht ganz so krass wie Elsa. Er ist mit sehr viel weniger zufrieden. Aber Elsa, herrje — wenn du ihr den Finger hinstreckst, reißt sie dir den ganzen Arm heraus! Bildlich gesprochen! Obwohl’s auch schon tatsächlich passiert sein soll!

Elsa freut sich natürlich über Blumen, ganz klar. Sie ist ja schließlich ein Mädel. Oder wie einige Leute sagen würden, die sich des modernen Slangs bedienen: Elsa ist ein weltklasse Frauenzimmer mit einer tierisch geilen Performance! Oh ja, das ist sie, Baby!

Einen Strauß Blumen hat Elsa heute bekommen. Den findet sie auch geil. Aber worüber sie sich richtig gefreut hat, ist das H&K-G3, das Cyber ihr geschenkt hat. Elsa ist manchmal recht nostalgisch unterwegs: Sie steht nicht so auf die Waffen, deren Software Cyber programmiert. Sie schießt lieber mit altmodischen Waffen wie .45-Kaliber-Pistolen oder 7.62mm-Gewehren. Cybers Waffe hingegen — die Bärenpranke 9000 — ist mit modernster und raffiniertester Highend-Software ausgestattet, die Cyber natürlich selbst programmiert hat.

Zwischenmeldung

Donnerstag, 02. Oktober 2008

Es ist ja schon ein wenig was her, dass ich das letzte Mal hier was von mir gegeben habe. Das soll so ja nicht weitergehen. Nur habe ich im Moment nix Besonderes, was ich zeigen könnte. Gut, dass 3D-Modell von Elsa könnte ich langsam mal an die Sonne kloppen, aber ich bin jetzt gerade bei meinen Eltern und hätte nur über Umwege Zugriff auf das Modell.

Was ich aber ganz wunderbar machen kann, ist, einfach etwas zu berichten, womit ich mich gerade so beschäftige:

Während die Grafik- und die Eingabekomponente bereits funktionieren (über Direct3D bzw. DirectInput), wird von der Engine bisher noch keinerlei Wiedergabe von Sounds unterstützt. Darum kümmere ich mich aber gerade. Wave-Dateien können bereits geladen werden, um die DirectSound-Buffer zu füllen. Jedoch ist noch kein Abspielen möglich, weil das nicht ganz trivial ist. Naja, wenn der DirectSound-Buffer einmal gefüllt ist, stellt ein einfaches Abspielen keine große Herausforderung dar. Jedoch müssen größere Sounds “gestreamt” werden, d.h., sie befinden sich im regulären Arbeitsspeicher und werden nur häppchenweise in die Sound-Hardware geschoben. Immer nur die Portionen, die wirklich gerade abgespielt werden. Oder aber ein Sound muss dubliziert werden, weil er mehrmals parallel ertönen soll (z.B. wie beim lustigen Knattern einer Maschinengewehrsalve). Von zusätzlichen Effekten habe ich noch gar nicht gesprochen, aber da bin ich mir auch noch nicht sicher, was es alles geben wird. Nicht, dass jemand jetzt denkt, die DirectSound-Komponente wäre ein komplexeres Baby als die Direct3D-Komponente zur Grafikdarstellung etc. Aber das ist ja auch kein Vergleich.

Sobald die Sounds letztlich abgespielt werden können, werde ich die FaceLabs (das Modul für die grafische Benutzeroberfläche) weitestgehend fertigstellen. Wenn es soweit ist, werde ich eine kleine Demo schreiben, die ich dann zum Download bereitstelle. Das wird nix Wildes sein. Nix, was mit dem eigentlichen Spiel zu tun hätte. Sondern einfach nur ne kleine Demo des FaceLabs-Moduls. Aber da könnt ihr euch dann schon mal auf den ersten Download von dieser Seite freuen, hihihi.

Bezüglich des FaceLabs-Moduls bin ich mir aber noch nicht sicher, wie ich die Individualisierung der optischen Darstellung der Fenster und Steuerelemente etc. realisieren werde. Ich hatte zunächst an eine XML-Datei gedacht, in der die Farben zum Mischen und Koordinaten sowie Dateinamen der Texturen und Sounds etc. vermerkt sind, jedoch bockt mich das mittlerweile nicht mehr so an. Ich würde lieber alles in einer Binärdatei haben, also Sounds, Grafik, sonstige Daten wie Farben und Koordinaten und so alles in einer “Paketdatei”. Dafür ist dann natürlich eine Art Editor nötig, um so ein Bündel zu einer Datei zusammenzuführen. So ein Editor bedeutet wieder mehr Aufwand. Aber ich fänds halt einfach schöner.

Kritik, Vorschläge und Ideen oder auch Wünsche sind sehr willkommen.

Naja, mal sehen. Ich bin selbst gespannt! Bis die Tage.

FaceLabs — Vererbungsstruktur und erster Screenshot

Freitag, 05. September 2008

Ich arbeite ja an mehreren Baustellen gleichzeitig. Insofern gibt es dieses Mal weder was Neues von den Rigid Bodies noch vom Scripting-System. Heute zeige ich euch den bisherigen Aufbau der FaceLabs anhand eines Diagramms mit der Vererbungsstruktur der “Face-Klassen”. Zusätzlich gibt es schon mal einen kleinen Screenshot.

Unter einem “Face” wird hierbei ein Element der grafischen Benutzeroberfläche verstanden, das Benutzereingaben entgegennimmt oder lediglich der Darstellung von Informationen dient. Die Faces untergliedern sich in drei Kategorien: Static-Faces wie Labels und Progress-Bars bieten nur optische Informationen. Mit ihnen kann der Benutzer nicht interagieren. Control-Faces nehmen zusätzlich noch Benutzereingaben entgegen. Hierzu zählen Buttons, Check- und Edit-Boxes, Radio-Buttons und Slider. Collection-Faces stellen Zusammenstellungen mehrerer Faces dar. Collections können ihrerseits zum einen in Form von Containern oder in Form von Fusion-Faces auf den Plan treten. Der unterschied dabei besteht darin, dass Container eine dynamische Anzahl untergeordneter Elemente haben, während Fusion-Faces eigenständige Elemente darstellen, die jedoch aus anderen Faces zusammengesetzt sind. Dazu zählen Drop-Down- und List-Boxes sowie Scroll-Bars. Eine Scroll-Bar wird z.B. aus zwei Buttons und einem Slider gebildet. Container kommen neben Group-Boxes (zur optischen Gruppierung von Elementen) hauptsächlich in Form von Windows vor. Dabei wird zwischen Frames und Popups unterschieden, wobei Frames “ganz normale” Fenster darstellen, die eine Titelleiste haben und verschiebbar sind etc. Popups sind kleine Fensterlein, die “aufpoppen” und wieder verschwinden, wenn nicht mit ihnen interagiert wird. Eine Drop-Down-Box z.B. lässt ein Popup-Fenster erscheinen, wenn der entsprechende Button gedrückt wird. Das Popup-Fenster der Drop-Down-Box enthält dann eine List-Box mit den auswählbaren Elementen. Eine Sonderform der Frames stellen Dialog-Fenster dar. Wenn ein Dialog-Fenster aktiv ist, kann mit anderen Fenstern erst wieder interagiert werden, nachdem das Dialog-Fenster geschlossen wurde — es sei denn, es handelt sich um ein Popup- oder ein weiteres Dialog-Fenster, das durch das aktuell aktive Dialog-Fenster hervorgerufen wurde.

Der Screenshot enthält ein “normales Fenster” (Frame) mit einem Label, einem Button, einer Check-Box und zwei Radio-Buttons, einer Edit-Box sowie einer Group-Box, die ihrerseits eine List-Box enthält. Die Render-States sind noch nicht optimiert. Das kann man sehen, wenn man sich die orangene Schräge der Titelleiste des Frame-Fensters und die verschiedenen Texte ansieht: Die Darstellung ist stellenweise etwas pixelig (was man hier aber nicht so deutlich erkennen kann, weil der Screenshot verkleinert wurde).

Entwickler-Blog zu “Cyber E-Razor rockt die Galaxis”

Montag, 16. Juni 2008

Hallo allerseits,

ich werde so oft gefragt, wie es denn um den Entwicklungsstand meines längst angekündigten und mittlerweile leider auch überfälligen Spiels Cyber E-Razor rockt die Galaxis steht. Solche Fragen lösen in meinem Brain meistens eine Explosion verschiedenster Gefühle aus: Einerseits freue ich mich immer wahnsinnig, wenn sich Leute für mein Spiel interessieren. Auf der anderen Seite bin ich oft etwas peinlich berührt, weil ich wieder mal eine enttäuschende Antwort geben muss: “Nein, das Spiel ist noch nicht fertig. Noch lange nicht. Und ich habe im Moment auch wenig Zeit, mich damit zu beschäftigen.” Das ist ein generelles Problem, wenn man von etwas spricht, dass es erst sehr viel später geben wird. So sehr viel später, dass man den genauen Zeitpunkt nicht sagen kann. Es ist meine eigene Schuld, ich weiß. Nichtsdestotrotz (krasses Wort) existiert das Projekt noch weiter und wird auch nicht im Mülleimer landen.

Da sich tatsächlich viele für das Spiel interessieren, ohne zu wissen, was sie wirklich erwarten wird, möchte ich über diese Internetseite per Entwickler-Blog den aktuellen Entwicklungsstand mitteilen. Ich habe viel darüber nachgedacht: Die Zeit, die ich in diese zusätzliche Sache stecke, fehlt mir bei der Weiterentwicklung des Spiels oder auch bei anderen Hobbys wie RC-Heli-Fliegen, Schlafen, Zocken, Ihr wisst schon, das volle Programm halt. Aber so ein Entwickler-Blog ist für mich selbst ein Ansporn, das Projekt voranzutreiben. Zusätzlich werdet Ihr stets mit aktuellen Neuigkeiten etc. versorgt. Peinliche Situationen, in denen ich mich fühle, als müsste ich mich rechtfertigen, wird es so nicht mehr geben. Und: Im Laufe der Zeit werden die Leute nach und nach an das Spiel herangeführt. Niemand wird das Spiel zum ersten Mal sehen und denken, “puh, das habe ich mir aber anders vorgestellt”. Das ist eine meiner großen Befürchtungen gewesen: Andere Leute zu viel versprochen ohne es gewollt oder gar geplant zu haben. Dieses Problem wird durch dieses Entwickler-Blog ebenfalls adressiert. (Habe ich gelernt: Es heißt das Blog, nicht der. Blog kommt ja von Web-Logbuch. Weiß ich jetzt. Endlich.)

Ich werde versuchen, so viel wie möglich über das Spiel und die zugrunde liegende Engine preiszugeben. Hierfür werde ich zunächst Umfang, Komponenten und Architektur der Engine vorstellen. Erst grob, später wahrscheinlich detaillierter. Sobald es Screenshots gibt, werde ich auch davon ein paar zeigen, ganz klar. Jedoch dauert es bis dahin noch etwas. Es gab zwar bereits eine Vorab-Version des Spiels, in der man schon rumrennen und -springen sowie schießen und Sachen einsammeln konnte. Aber das war noch die absolute Pre-Alpha-Test-Version, oder was auch immer. Kein 3D, kaum grafische Transparenz (weil DirectDraw), keine Physik, nix! Vielleicht zeige ich davon bei Zeiten trotzdem mal ein bisschen was. Das weiß ich ja jetzt noch nicht.

Puh, tun mir die Fingerchen weh vom vielen und wieder mal viel zu schnellen Tippen! Braak!

Am Anfang werde ich wohl erst mal die Seite hier aufpolieren müssen, damit man nicht sofort auf den ersten Blick sieht, dass ich doch nicht immer alles selbst programmiere, sondern auch mal was “Fremdes” benutze. Das darf ich, machen andere ständig. Nur! Ich einklich nicht. Egal! Hab ich heute Kaffee getrunken? Ich laber wieder wirres Zeug, oder?

Anschließend informiere ich die Leute mit dem Kram, den ich bereits konzipiert, designt und programmiert habe. Häppchenweise. Danach geht es häppchenweise mit neuem Stuff weiter.

Ich hoffe, das hier macht mir viel Spaß und Euch natürlich auch! Ansonsten kann ich es ja einfach nach einer Zeit sein lassen. Das fände ich aber schade.

Bis bald!