Die Entstehungsgeschichte von Ghost World 3D

Hier kannst Du erfahren, wie und warum Ghost World 3D entstand. English speaking's can read in short form here.
Außerdem:
-was vor dem Programmieren war
-wie ich zum Programmieren kam und wo und in welchen Programmiersprachen ich zunächst programmierte
-was ich vor Ghost World 3D programmierte (z.B. erste Grafikprogramme & Minispiele in C, mein 1.Spiel Tetris,
 und meine ersten 2D- und 3D-Grafikprogramme mit DirectX.
-Die Ghostworld 3D Entstehungsgeschichte & weiterentwicklung des Spiels, incl. alten & neuen GW3D Trailervideo.
-Was es brachte, GW3D zu programmieren
-
Zukünftige Spiele des Ghost World 3D Programmierers
-Andere selbstprogrammierte Programme von mir (Anwendungssoftware)
-Meine ersten 2 Internetseiten (per Html)

 

 


Bevor Ghost World 3D v0.9 entstand

Eine meiner großen Leidenschaften war warscheinlich schon immer, etwas selbst zu bauen & zu erschaffen.
Meine diesbezüglichen Anfänge im Kindesalter waren z.B. eine aus Legosteine nachgebaute Kaffeemaschiene,
bauen mit den Fischertechnik-Baukasten (alte Version mit Metall-Stangen, steckbare Plastikteile, u.v.m.),
bauen mit Legosteinen (z.B. Raumschiffe, teilw. sogar incl. "Gummimechanik"),
ein Maschienen-Pusterohr, bau einer Schneehöhle (sogar mit Rundgang, also eine mit 2 Gängen) u.A. .


Auch mit Elektronischen Bauteilen hab ich gern etwas gemacht, bereits schon früh einiges darüber gelesen,
ich war oft im Elektrogeschäft & vermutlich einer der jüngsten Kunden.
Ich kann mich noch daran erinnern, z.B. einen Tongenerator & 1 einzelnes Bit gebaut (zusammengelötet) zu haben.


Zu meinen ersten Kindheitsträumen zählten u.a.:
Einen Roboter selbst zu bauen, einen Computer selbst zu bauen, eine Rakete zu bauen.
Mein 1. im Grundschulalter selbstgebauter Roboter konnte aber nur Fahren, und hatte eine Transport-Klappe im Bauch (eventuell sogar mit Innenbeleuchtung).
Ihn nahm ich mal in meine damalige Grundschule mit - Er "landete" indirekt sogar positiv ins Zeugnis :-)

Würde Elektronik derzeitig noch zu meinen Interessen zählen, dann hätte ich mittlerweile bestimmt Massen von Bauteilen usw, und wäre vielleicht ein Ingenieur oder Forscher.

Jahre später hab ich Tonspuren erzeugt, und die Spuren & Töne zusammengebaut u.v.m. (Musik produziert, teilw incl Midi-Programmierung).

 



Nun zu meinen Hobby "Programmieren":
Mein 1. Kontakt zum Programmieren entstand, als mir mein Vater ein Listing mit einen Quellcode gab. Nach dem Abtippen hab ich mein allererstes Computerprogramm "programmiert". Vermutlich auf den Atari 800 XL oder C 64.

Bereits zu dieser Zeit, im Alter von ca.14 oder 12 Jahren, hatte ich aber schon Interesse an der Grafik-Programmierung. Aber ein Spiel zu programmieren, war noch ein Jugendtraum... Denn an entsprechende Informationen zu kommen,war zu der Zeit schwieriger, als heutzutage im Internet Zeitalter.
 

Ich programmierte erstmal in Basic. Danach programmierte ich Vokabellernprogramme u.a. Programme.
Auch in Assembler und Maschienensprache hab ich ein wenig programmiert.

Eine Zeit lang programmierte ich auch persöhnlich 2 Internetseiten in HTML.

Was Computerspiele betrifft, hab ich z.B. mal ein aus Sternchen-Zeichen (ASCII?) bestehendes Autorennen (Experiment) programmiert, u.a.
Auch den C-64 Gamemaker "Garry Kitchens Gamemaker" probierte ich öfter aus, aber das Wissen dazu fehlte.

Meine damaligen Programmen enstanden auf dem Atari 800 XL & C 128 (Commodore C 64 Heimcomputer).

 

Mein Einstieg in C/C++:
Jahre später fing ich an, am Fernstudium
"C/C++ Programmierer-Windows" von der SGD (Studiengemeinschaft Darmstadt) teilzunehmen. Meine Einsendeaufgaben erhielten gute Bewertungen, und selbst den Wertebereich von Integer- u.a. variablen schrieb ich mir auf Kärtchen, um das zu lernen (Int-Bereich lernen war z.B nicht notwendig).
Ich hab mein Fernstudium zwar vorzeitig abgebrochen, aber anschließend privat weiterprogrammiert & mich fortgebildet (Mittlerweile (2017) laß ich schon ca. 12 DirectX/Spieleprogrammierungs/C++ Bücher)
Das Fernstudium war mir eine gute Grundlage usw für die C/C++ Programmierung.
Noch heute benutze ich z.B. gern die dort empfohlene Quelltextformatierung ({ } / Klammersetzung/Einrückung).

 

Der früher im Fernstudium verwendete Compiler "Sybase Watcom C/C++ 11.0" hatte glücklicherweise einfach nutzbare Grafikfunktionen, wie z.B. _setvideomode(), _setcolor(), _setpixel() und _lineto(). Somit konnte ich schon schnell auch mit Grafik programmieren, ohne viel Wissen zu müßen.
 

Aus privaten Interesse schrieb ich nun erste kleine Grafikprogramme & Spiele, wie z.B. Autorennen, Raumschiffe abschiessen, 1 Jump & Run Experiment, etc. Diese waren mein Einstieg in die 2D-Grafikprogrammierung auf dem PC.

 


Diese & erste C-Programme sind in folgenden Video zu sehen (Außer mein 3D-Spiel am Ende des Videos):

 

 


Danach programmierte ich mein 1. selbstprogrammiertes Spiel: Tetris (12.12.2003-24.12.2003).

Download von Tetris (wahlweise auch incl. Quellcode) und mehr Infos siehe hier.

 


Ca. seit der Zeit meiner Umschulung zum Fachinformatiker Anwendungsentwicklung hab ich mich privat viel mit der Grafikprogrammierung unter DirectX auseinandergesetzt.
Ich lernte & übte erstmal das programmieren & nutzen von DirectX in C++.

(Text, Punkte, Linien & ein Mänchen (Sprite) in einem DirectX-Windows Fenster anzeigen, die 2D-Spielwelt bewegen (Scrolling), u.v.m.).

Ausschnitte davon sind in den folgenden Video zu sehen:

 


Danach fing ich mit der 3D-Grafik-Programmierung in DirectX an. Es war mein Einstieg in die 3D-Grafikprogrammierung.

Zufälligerweise waren die gelernten 3D-Themen auch meine 1.Schritte, um später Ghost World 3D programmieren zu können. 

(1.DirectX 9.0c Programm, ein 3D-Dreieck Ohne Textur: vor dem 23.03.2004)

In folgendem Video sind meine ersten 3D Programme (3D-Würfel anzeigen & bewegen, Raum anzeigen, uvm) zu sehen:

 

 


Die Entstehung von Ghost World 3D

Ich hab mir gedacht, es wäre doch toll, Pac-Man mal in 3D statt in 2D spielen zu können (also nach FPS-/Egoshooter- Art. Und somit direkt durch die Levels durchgehen zu können, statt "nur" von oben drauf zu sehen). Wegen dieser Idee entstand Ghost World 3D.

Außerdem war ich von Spielen & 3D-Spielwelten fasziniert,
wie z.B. in meinen damaligen Lieblingsspielen Deus Ex 1, Gothik II und Heretic II.
Gerne wollte ich auch mal eine Spielewelt erschaffen.
Und ich bin außerdem gern erschaffend & Kreativ tätig, und baue gern etwas zusammen.

 

Ghost World 3D 1 (GW3D v0.9, 31.08.2007)
1. spielbare Version

ca. im Jahre 2007 fing ich an, Ghost World 3D zum ersten mal zu programmieren, in der Programmiersprache C,
C++, und mit dem Compiler Visual C++ 6.
Dabei nutzt Ghost World 3D meine selbstprogrammierte kleine Gameengine, 
die im Laufe der Zeit ausgebaut, teilweise umgebaut, und verbessert wurde.
Die Gameengine greift auf DirectX 9.0c Funktionen usw zu, damit bei der Programmierung von Ghost World 3D mit hilfe der Gamenengine einfacher Grafik und Schrift angezeigt, die Tastatur und Maus abgefragt, Sound und Musik abgespielt, Video angezeigt und aufgenommen werden kann, u.v.m.

Allerdings fehlte es mir zu dieser Zeit teilweise noch an Infos & Erfahrungen mit DirectX, C++, und der Spiele-
programmierung. Bisher hatte ich an kompletten Spielen ja nur einen Tetris-Clone in 2D programmiert.
Aber ich konnte ja schon Wände & Klötze mit Bild drauf (Textur) anzeigen, und hatte anderweitig bereits einige Programmiererfahrungen gesammelt.
Ich hatte außerdem zunächst größtenteils nur das DirectX-Buch "(jetzt lerne ich) DirectX 9 und Visual C++", Infos aus dem Internet, meine Kreativität, etc. als Hilfen zur entstehung von GW3D.

Mein zu der Zeit wichtigstes Ziel war, ein komplett funktionierendes Pac-Man ähnliches Spiel in 3D zu programmieren. Es war mir somit das wichtigste, es zu schaffen, daß das Spiel überhaupt funktioniert.

Als ich GW3D eines Tages schon soweit programmiert hab, daß sogar Geldkisten eingesammelt werden konnten,
wußte ich, daß ich schon gut weitergekommen bin, und die Freude war groß.


Einige Zeit später war die 1. spielbare Version "Ghost World 3D v0.9" fertig,
und wurde ca. ab April 2008 von mir bei www.Freeware.de zum Download angeboten.
Obwohl z.B. die Geister in V0.9 nur rechteckige Klötze mit Gesicht sind, und auch das meiste in der Umgebung der Levels entweder nur rechteckig (Wände, Säulen), oder Flach (Boden, Zimmer-Decke) ist.

Im folgenden Video können Screenshots (Bilder) von der 1.spielbaren Version angesehen werden:

 

 

Ghost World 3D 2 (GW3D ab v0.91, 09/2014)

Deutlich erweiterte & verbesserte Version

Mit mehr Programmiererfahrungen und mehr Programmierbüchern war nun eins meiner nächsten größeren Ziele, Ghost World 3D zu verbessern.

Ich machte mich an die Arbeit, und änderte oder verbesserte dieses und jenes, baute (programmierte) hier und da neues ein, und testete und Experimentierte.
Ab und an kam ich nicht weiter (einige wenige Programmier Fehler bzw Probleme ließen sich z.B. erst nach 3 Tagen lösen).
Eine der größten Herausforderungen war es, einen eigenen X-File Loader trotz manch fehlender Kenntniss zu programmieren. Damit Geister nicht nur rechteckige Klötze mit Gesicht sind, sondern besser aussehen (echte ladbare 3D-Objekte). Und damit die Geister (3D-Objekte im X-File Format) mit guter Perfomance/FPS angezeigt werden können, etc. Die Programmierung der X-File Loader Klasse, die X-File Analyse, u.v.m. dauerte aufgrund des großen Umfanges, manch fehlender wichtiger Information, einigen Tests, u.a., ca. 2 1/2 Wochen.

Denn Stefan Zerbst schrieb in einen seiner "3D-Spieleprogrammierung Büchern" (DirectX 8) ja mal, daß mit eigenen Funktionen schneller gerendert (3D Modelle mit besserer FPS angezeigt werden können),
als wenn man die Mesh-, Animations-, usw- Funktionen vom DirectX SDK nutzen würde.
Ca. seit DirectX 9 aber werden von DirectX selbst Funktionen zur Mesh (X-File) Optimierung angeboten.
Ob da eine selbstprogrammierte X-File Klasse immer noch deutlich schneller ist, ist mir derzeitig nicht bekannt.
Einer der Vorteile ist jedoch, daß man noch mehr Renderperformanceoptimierungen selbst bestimmen kann,
und später auch die programmierseitige Einbindung von anderen 3D-Modellformate besser verstehen & durchführen kann. Außerdem gibt es seltener X-File Ladeprobleme, usw.


Nachdem die Geister endlich als richtige 3D-Objekte angezeigt werden konnten, wurden GW3D auch andere einfache 3D-Modelle hinzugefügt (Z.B. Gitterstäbe, Bäume, Gras).
Auch zuvor ungeplante Dinge, wie z.B. sprechende Geister & 3D-Brillen-Modus, wurden eingebaut.

(Mehr Infos über neue GW3D-Features u.v.m. siehe "2. & neueste Version" bei Downloads )

GW3D hat zwar immer noch eine einfach gestaltete Spielwelt, aber ich hab z.B. auch durchs Leveldesign und möglichst viele verschiedene Texturen aus "wenig" möglichst viel gemacht. Ich freue mich über Spieler, die Gefallen an Ghostworld 3D haben, welches in Jahrelanger & aufwendiger Arbeit entstand, umsonst spielbar ist, und von nur einer einzigen Person programmiert und fortlaufend verbessert wurde.



Im folgenden Video ist ein Teil vom neuen & verbesserten Ghost World 3D v0.91 zu sehen:

 

 

Dieses Video ist incl. Spielsounds, und zeigt z.B. die Levels "Wald", "Zugang zur Rakete" und "In der Rakete":

 

 

Was hat es gebracht, Ghost World 3D zu programmieren?

Bereits seit Programmierung der 1. Version dieses Spiels lernte ich immer mehr dazu, was das Programmieren
(C, C++), das nutzen des DirectX 9.0 SDKs, die Spielprogrammierung, und einiges mehr betrifft - auch durch das komplette durchlesen von mittlerweile schon ca. 12 DirectX- & Programmier-Büchern, das ansehen von Spielesendungen und spielen von PC-Spielen.

Besonders schwierig war u.a. das Verstehen usw des DirectX SDKs.

Zumindest Computerspiele ab einen gewissen Aufwand werden heutzutage nicht wie bei mir von nur einer Person,
sondern von einen Team produziert. Dafür, das ich fast alles allein an GW3D gemacht hab, hab ich einiges erreicht. Nicht nur, was das Programmieren betrifft, sondern auch in einigen anderen Spieleentwicklungsbereichen
(Leveldesign, 3D-Modelling etwas gelernt, ein wenig mehr Photoshop Erfahrung gemacht, u.v.m).

 

Ein Computerspiel wird außerdem normalerweise vor seiner Entstehung geplant (Designdokument, etc).
Bei GW3D wurde jedoch eher das Wenigste von mir geplant - alles ergab sich eher nach & nach, und wurde dann und wann ins Spiel "eingebaut" (Geplant wurden nur mal die Kaufmenüpreise, nicht eingebaute Überraschungspaketinhalte, ein etwas anderer Levelverlauf & etwas anderes Spielverhalten, die Spielstory, die Sätze der sprechenden Geister, ein paar wenige Level und das nicht eingebaute Überraschungspaket "Geistverkleinerung" (was bestimmt sehr lustig wäre, so kleine in frecher Mickey Mouse Stimme redende Geister).

Manche Themen wurden auch (wenn auch nicht immer direkt in GW3D) eingebaut, weil ich gerade über dieses Thema in einem Buch laß, und die richtige Zeit war, es mit einzuprogrammieren (z.B. wg. dem Buch "Programming an RTS Game with Direct3D: Spiegel, Computerbildschirme).
Außerdem führten verschiedene Programmierziele und Wünsche fürs Spiel wieder zu neuen Problemen und anschließend neuen Kenntnissen. Hier nur mal 3 Beispiele:

1.) Als von einen 3D-Objekt wie z.B. dem Geist nicht nur eins, sondern mehrere angezeigt werden sollten,
und mir dies aufgrund fehlender C++ Kenntnisse nicht gleich so gelang, wie ich es mir wünschte (Geist 2=Geist 1 usw) kam es so z.B. zum Thema Copierkonstruktor/Zuweisungsoperator.

2.) Während ich für meine 3D-Modell Klasse die Funktionalität "3D-Modell Animation" einbaute, mußte ich mich mit dem Thema verkettete Listen usw befassen, was dann auch zu 2 aufwändigeren Datenstrukturen führte.
Außerdem auch mit 3D-Modelling (in True Space, Milkshape 3D, und Blender ausprobiert usw).
3.) Das Thema FPS Optimierung brachte mind. 2 weitere neue Erkenntnisse mit sich. U.a. z.B. eine selbstentwickelte "staatische Variable", die nur für alle 3D-Objekte gleicher Art staatisch ist,
statt für alle Instanzen der Klasse (und somit 3D Objekten verschiedener Art) staatisch zu sein.

Ich hab also meine Kenntnisse & Fähigkeiten während der GW3D Weiterentwicklung vielfach weiterentwickelt.
Es war vielleicht auch sozusagen meine selbstgemachte eigene "Ausbildung"/mein eigenes "Studium" zum 3D-Spieleentwickler.
Bei gewissen wenigen Themen (z.B. X-File Animation) hätte ich zuvor nie gedacht, diese doch mal erfolgreich zu meistern.
Davon abgesehen gab es nicht nur neue Programmierkenntnisse, sondern auch einige Bereicherungen in anderen Bereichen (z.B. positive Bewertungen und ähnliches, andere Free-3D-Modelle & Free-Sounds aus dem Internet, etc)

Das ständige fortentwickeln von GW3D hat sich für mich in spontan unbeschreiblich vielfacher Hinsicht gelohnt.
Nebenbei wurde außerdem auch die Gameengine von GW3D weiterentwickelt. Diese enthält dabei nicht nur in GW3D enthaltene Features, sondern auch andere (z.B. 3D-Objekte mit der Maus anklicken (aussuchen/markieren), Partikeleffekte (siehe unten folgendes Partikeleffekt Video), u.a.
Die Gameengine kann ich dann auch für die Programmierung anderer Spiele nutzen, und somit zukünftig auch schneller & besser vorankommen.

Außerdem gab es, wenn auch zu wenig, Feedback & Tipps von GW3D-Spielern & Testern. Erfreulich sind auch die Downloadzahlen, die dafür, daß kein Geld in Werbung investiert wurde, meiner Meinung nach fürs erste doch recht hoch & sogar multikulturell sind.

Nicht unerwähnt lassen möchte ich auch die viele Zeit, die ich ins Programmieren u.v.m. investierte (und die vielen gerauchten Zigaretten. Der vermutlich für Programmierer typische Kaffekonsum war nicht hoch).

Pac-Man & GW3D sind im Vergleich zu Half Live 1, Deus Ex 1, Gothic 2, World of Warcraft, u.a. normalerweise nur kleine Spiele, doch im laufe der Zeit ist aus Ghost World 3D mehr geworden, als ich je gedacht hätte.
Nach dem ursprünglichen Ghost World 3D v0.91 gabs mittlerweile schon einige neuere Versionen dieses Spiels.

Außerdem ermögliche ich Computerspielern Spaß und Momente mit meinem Spiel Ghost World 3D,
(sofern diese Grafisch & Spielmechanisch nicht zu anspruchsvoll sind).

Ich hab mir mit GW3D nicht nur einen meiner Kindheitsträume erfüllt (mal irgendein PC Spiel zu programmieren),
sondern hab mir auch einen von mehreren möglichen Wegen geebnet.
Aus einfachen Verhältnissen stammend und als jemand, der wie andere auch öfter "normal" (gegen Bezahlung) arbeitete, aber auch arbeitslos war & ist (deswegen auch DirectX 9 statt DX 12 Bücher, keine Werbeinvestitionen, usw).
Die Welt ist nicht immer einfach. Doch ein Chinesisches Sprichwort besagt:

- Jeder Weg beginnt mit den 1.Schritt -

Wenn ich neue Funktionalitäten von GW3D+Gameengine allein schon ca. 15 000 bis 20 000 mal getestet hab - um wie viel mehr mögen es dann wohl Schritte gewesen sein? Der Weg zu GW3D wurde größtenteils gegangen,
und es wurden neue Wege für Zukünftiges geschaffen.

 

Ich freue mich, wenn Du z.B. mich als Vorbild nimmst, Deinen Weg zu gehen,
indem Du mit Deinem 1.Schritt beginnst, :-)

 

Mein 1.Schritt zu GW3D & seiner Gamenengine begann, als mir dieses Buch in einer Buchhandlung aufgefallen ist, ich es mir kaufte, und mein 1. Dreieck per Direct-X anzeigen konnte.

Im Laufe der Zeit & einige Schritte weiter wurde nicht nur GW3D & die Gameengine mehr, sondern auch die Anzahl meiner Programmier usw Bücher (sind allergrößtenteils gebraucht gekaufte & "wertlose" Bücher):

Grafikprogrammierung unter Verwendung von DirectX lernen: Hier klicken (Buch-Empfehlungen).

 

 

Partikeleffekt-Video:

 

 


Zukünftige Spiele von Daniel Opitz

Irgendwann in der Zukunft werde ich anfangen, an meinem nächsten Spiel zu arbeiten, doch bis dahin dauert es noch eine längere Weile. Stand: 21.11.2018

Im Gegensatz zu Ghostworld 3D, daß nicht aus meiner eigenen Idee entstand, sondern teilweise eher ein erweiterter & veränderter Pac-Man Clone ist, wird mein zukünftiges Spiel aber meiner eigenen Idee entspringen. Dadurch würde es noch mehr etwas Besonderes werden.
Es wird auch wieder ein 3D-Spiel werden, aber auch ein besseres, und in echten 3D, statt in 2 1/2D.
Selbstverständlich wird auch in meinen zukünftigen Spiel(en) kein Blut vorkommen.

Es kann allerdings ein paar Jahre dauern, bis mein nächstes Spiel erscheint.
Dieses wird dann aber schneller als Ghost World 3D programmiert worden sein (wenns nicht zu umfangreich ist).

 

 


Andere Programme von Daniel Opitz

Außer Spiele hab ich auch mal Anwendungssoftware programmiert.
Von dem, was ich auf dem Atari 800 XL & C-64 Programmierte (Vokabellernprogramme u.a.), hab ich leider keine Screenshots. Es folgen Screenshots von auf dem PC programmierten Anwendungsprogrammen:

-TopGen (Grafisches Paßwort & Passwortgenerator) Infos & Download

 1.Upload auf www.freeware.de: 18.06.2007

 

-Your Speaker (Verwandelt Text in Sprache, läßt den Computer sprechen): Infos & Download

 1.Upload auf www.freeware.de: 26.11.2007

 


-Vocal Generator (Erzeugt BPM gerechte Vocals für Musikproduktion. Download Incl. Anleitung)
Infos & Download

 1.Upload auf www.freeware.de: 03.03.2008 (Dieses Programm ist Shareware, nicht umsonst.)

 

 

 

2 erste eigene Internetseiten (Html)

Außer Anwendungssoftware & Spiele hab ich im Jahre 2000 (als das Internet noch per Modem & langsam war usw)
meine ersten selbstgemachten Internetseiten gemacht (2-3 Stück, in Html geschrieben usw).
Als erstes folgt die 2.eigene Internetseite (Thema "Redeangebot" wird online aber nicht mehr von mir angeboten.
Aber warscheinlich gibts zumindest noch bei YouTube z.B. die Sendung Domian):

 

Das war meine 1.eigene Internetseite:
Links konnte eine E-Gitarren Aufnahme (nach meiner eigenen Idee gespielt) angehört werden,
und rechts (Homepage) gings zur linken Seite.


Datenschutzerklärung
Gratis Homepage von Beepworld
 
Verantwortlich für den Inhalt dieser Seite ist ausschließlich der
Autor dieser Homepage, kontaktierbar über dieses Formular!