Spieleprogrammierung


Seminararbeit, 1999

43 Seiten


Leseprobe


Inhaltsverzeichnis

Einleitung

1. Bestandteile eines Computerspiels
1.1. Sound
1.2. Interface
1.3. Gameplay
1.4. Geschichte
1.5. Künstliche Intelligenz
1.6. Grafik

2. Was ist 3D-Grafik ?
2.1. 3D und 2D im Vergleich
2.2. So funktioniert 3D-Grafik

3. 3D-Grafikprogrammierung
3.1. Traditionelle 3D-Grafikprogrammierung
3.2. 3D-Engines und Schnittstellen
3.2.1. DirectX (Direct3D)
3.2.2. OpenGL
3.3. 3D-Editoren

4. VRML (Virtual Reality Modeling Language)
4.1. Die Entstehung von VRML
4.2. So funktioniert VRML

5. Ausblick

Literaturverzeichnis

Abbildungsverzeichnis

Anhang

Einleitung

Diese Ausarbeitung ist die schriftliche Form meines Vortrags zu diesem Thema, den ich am 15. April gehalten habe. Jedoch habe ich bei dieser Ausarbeitung auf Reaktionen der Zuhörer reagiert, und z.B. ein Kapitel über Künstliche Intelligenz in Computerspielen hinzugefügt. Während der anschließenden Diskussion stellte ich fest, daß die überwiegende Mehrheit der Fragen zu dem Thema VRML (Virtual Reality Modeling Language) gestellt wurden, was mich dazu veranlaßt hat, den VRML-Teil des Vortrags für diese Ausarbeitung zu erweitern. Als ich begann, mich mit dem Thema „Spieleprogrammierung“ zu beschäftigen, stand ich diesem Zweig der Softwareentwicklung noch sehr skeptisch gegenüber. Die Spielepro- grammierung war für mich ein Tummelplatz für Computerfreaks, der mit der ernsthaften und produktiven Verwendung von Computern nicht viel zu tun hat.

Während der Bearbeitung dieses Themas mußte ich jedoch meine Meinung revidieren. Es wurde immer klarer, daß kein anderer Bereich der Softwareentwicklung in den letzten Jahren soviel zur Weiterentwicklung von Multimediasoftware und -hardware beigetragen hat. Insbesondere auf dem Gebiet der Grafikkarten haben die Anforderungen der Spieleentwickler und der Spielebenutzer einen 3D-Boom ausgelöst, der letztlich zu Produkten wie den Riva- oder Voodoo II-Chips führte, die mittlerweile auch bei CAD-Anwendungen und 3D- Simulationssystemen eingesetzt werden.

Inzwischen bin ich der Meinung, daß die Spieleprogrammierung und die damit zusammen- hängenden Bereiche die größten Innovationsschmieden neben den Internet-Technologien sind. An den Anforderungen der Spieleindustrie wird sich, auch in Zukunft, die zu entwickelnde Multimediahardware messen lassen müssen. Aber auch die Internetbetreiber werden der Spiele-industrie Tribut zollen müssen, spätestens in dem Moment, in dem die noch in den Kinder-schuhen steckende Programmiersprache VRML (Virtual Reality Modeling Language) einen Reifegrad erreicht hat, der komplexere Anwendungen ermöglicht.

Beeindruckend ist der Siegeszug, den die Computerspiele in den letzten Jahren angetreten haben. Die Zeiten, in denen ein kleiner, gelber, gefräßiger Kreis in einem Labyrinth aus sehr minimalistisch dargestellten Wänden Punkte fressen, und dabei noch aufpassen mußte, nicht selber das Opfer von 2D-Gespenster zu werden, sind lange vorbei. Wer hätte vor 20 Jahren erwartet, daß netzwerkfähige Computerspiele einmal die Arbeitsleistung ganzer Unternehmens-abteilungen gefährden und selbst Universitäten und Fachhochschulen über den „Mißbrauch“ ihrer Netzwerke nicht mehr Herr werden.

Eine unglaubliche Faszination geht von diesem elektronischen Zeitvertreib aus, gepaart mit einem nicht zu unterschätzenden Suchtfaktor. Diese Faszination (oder auch Sucht) treibt auch die Spieleentwickler, immer bessere, immer komplexere Spiele zu entwerfen und zu implementieren. Worauf man dabei achten sollte, und welche Hilfsmittel auf den verschiedenen Abstraktionsebenen dem Entwickler dafür zur Verfügung stehen, soll der Schwerpunkt dieses Berichts werden. Eine Spanne, die von traditioneller Grafikprogrammierung über 3D-Engines wie OpenGL oder Direct3D bis zu 3D-Editoren nach dem WYSIWYG-Prinzip reicht. Auch werden informatikfremde Themen wie z.B. Gameplay behandelt. Wie entwickelt man also ein Computerspiel ?

Während der Recherchen zu meinem Vortrag stieß ich im Internet auf der Homepage der Spielefirma Blizzard in einer FAQ-Liste auf die folgende Frage:

„Which is the best way to learn Gameprogramming ?“

Eine durchaus gerechtfertigte Frage, die mich auch schon beschäftigt hatte. Um so ernüchternder war die Antwort eines Spieleentwicklers von Blizzard:

„Let me know, when you‘ve found out !“

Das sagt eigentlich alles. Es gibt kein Patentrezept, Spiele zu entwickeln und zu schreiben, denn ein Spiel ist eine überaus komplexe Anwendung. Spiele vereinigen komplexe Grafik, anspruchs-volle Soundeffekte, ein Höchstmaß an Interaktivität mit einem teilweise von künstlicher Intelligenz gesteuertem Eigenleben. Welche andere Familie von Anwendungen kann da schon mithalten. Und es sind auch gerade die einzelnen Teile eines Spiels, die zusammen den Reiz (oder auch nicht) des Spiels ausmachen. Mit der Betrachtung der einzelnen Teile eines Computerspiels soll der Hauptteil diese Berichts nun auch beginnen.

1. Die Bestandteile eines Computerspiels

Ein Computerspiel besteht aus mehreren Teilen, deren Entwurf nicht unbedingt die Arbeit eines Informatikers ist. Ohne in Details gehen zu müssen, die den Rahmen sprengen würden, läßt sich ein Computerspiel in sechs Teile aufspalten1. Hier ist eine kurze Übersicht, bevor jeder Punkt ausführlich dargestellt wird.

- Sound:

Unter Sound sind alle Toneffekte und Musikstücke zu verstehen, die während dem Spiel wiedergegeben werden. Das beinhaltet z.B. Intromusik, MIDI und Umgebungstöne. ® Interface:

Unter Interface versteht man alle Aktionen, die der Spieler durchführen kann, um den Verlauf des Spiels zu steuern. Das beinhaltet Joystick oder Maussteuerung genauso, wie Grafiken oder Buttons, die der Spieler anklicken kann, um Aktionen auszulösen, kurz: die gesamte Benutzerschnittstelle.

- Gameplay:

Das Gameplay ist ein unscharfer Begriff. Es beschreibt die Fähigkeit eines Spiels, den Spieler zu faszinieren und zu fesseln, kurz: es ist die Brücke zwischen dem Spieler und dem Spaß.

- Geschichte:

Die Geschichte ist der rote Faden, der sich durch das Spiel zieht, z.B. bei Spielen nach Filmen, oder bei Adventurespielen. Die Geschichte kann einen Großteil der Faszination eines Spiels ausmachen.

- Künstliche Intelligenz (KI):

KI in Computerspielen ist nicht dasselbe wie wissenschaftliche KI, die man im Informatikstudium behandelt. Genetische Algorithmen und Neuronale Netze werden für gewöhnlich in Computerspielen nicht mehr benutzt.

- Grafik:

Unter Grafik versteht man alle Bilder, die während des Spiels angezeigt werden, wie z.B. Sprites, Hintergründe oder Gegenstände. Das umfaßt 3D- und 2D-Darstellungen genauso wie Texturen oder Video-Sequenzen.

Jeder dieser Punkte hat so großen Einfluß auf den Charakter und damit auch auf den Erfolg eines Spiels, daß wir uns jeden Einzelnen noch einmal ausführlich ansehen wollen.

1.1. Sound

Der Punkt Sound ist genauso wichtig für ein Computerspiel wie jeder andere Teil. Leider wurde er oft vernachlässigt, was auch verständlich ist, denn schließlich kann man ein Spiel auch ohne Sound spielen bzw. entwickeln, und einem Spiel anspruchsvolle Soundeffekte hinzuzufügen bedeutet immer noch viel Arbeit und damit Zeit. So entstanden in den 70er und 80er Jahren eine Menge Spiele mit armseligem Sound, worunter das ganze Spiel im Endeffekt litt. In neuerer Zeit ist durch die großen Speichermöglichkeiten der CD-ROM’s und die Kompressionsmöglichkeiten neuer Formate wie MP3 eine neues Bewußtsein für Sound und Musik entstanden, so daß die neueren Spiele meistens mit durchdachter Musik und imposanten Soundeffekten ausgestattet sind, was der Bedeutung des Sounds für den Spaß des Spielers endlich Rechnung trägt.

Töne sind für die Empfindungen, die ein Spieler während des Spiels hat, enorm wichtig. Töne können Gefühle verstärken oder sogar erzeugen. Das Problem ist, daß diese Effekte unbewußt ausgelöst werden und vom Spieler nicht so bewußt wahrgenommen werden wie z.B. die Grafik. Dadurch entsteht für Spieler und auch für Entwickler der Eindruck, das Sound nicht so wichtig ist, obwohl ein Großteil der Atmosphäre während des Spiels vom Sound bestimmt wird. Nicht nur bei Computerspielen ist dieser Effekt zu beobachten. Auch in Spielfilmen wird Sound angewendet um Gefühle zu erzeugen. Ein kleines Beispiel:

Jeder hat bestimmt schon einmal den Film „Psycho“ von Alfred Hitchcock gesehen, und darin sicher auch eine der berühmtesten Filmszenen der Welt: die Duschszene. Man versuche sich nun diese Szene in Erinnerung zu rufen.

Norman Bates geht durch den Wohnraum des Motelzimmers. Man sieht den Schatten des Messers an der Wand und das ahnungslose Opfer unter der Dusche.

Ich wette, der charakteristische schrille Sound, der immer wieder mit dieser Szene in Verbindung gebracht wird, war ganz selbstverständlich in unserem inneren Ohr, wie die Bilder des Films vor unserem inneren Auge waren, vorausgesetzt man hat den Film gesehen. Aber auch das völlige Fehlen von Musik und Soundeffekten erzeugt Gefühle und Stimmungen. Auch hier möchte ich ein Beispiel meines Lieblingsregisseurs Hitchcock anführen; einen weiteren Klassiker der Filmgeschichte: „Die Vögel“.

Meines Wissens ist „Die Vögel“ der einzige Film, der jemals völlig ohne Musik und Sound- effekte, ausgenommen natürliche Hintergrundgeräusche der Möwen, gedreht wurde. Diese fast unnatürliche Ruhe erzeugt ein beklemmendes Gefühl, das sehr gut zur Handlung des Films paßt.

Wenn man versucht, sich diesen Film in Erinnerung zu rufen, wird man zuerst überlegen müssen, ob in „Die Vögel“ wirklich keinerlei Musik vorkommt, denn so genau hat man noch nie darauf geachtet. Man wird sich im ersten Moment an zwei Dinge erinnern: daß der Film schwarz/weiß ist, und an ein unbestimmtes bedrückendes Gefühl, das sich durch den ganzen Film zog. Das dieses Gefühl evtl. durch die Soundeffekte (die nicht vorhandenen Soundeffekte) erzeugt wurde, wird erst klar, wenn man mal genauer darüber nachdenkt. An diesen beiden Beispielen kann man sehr gut sehen, wie unterbewußt Effekte sind, die sich mit Sound erzielen lassen. Der Spieleentwickler sollte sich bei der Auswahl der Musik oder der Soundeffekte eines Spiels genau darüber klar sein, welche Stimmung er in diesem Moment beim Spieler erzeugen möchte, um ihn „in das Spiel“ zu ziehen.

Schade eigentlich, daß die Benutzer dem nicht mehr bewußte Aufmerksamkeit zukommen lassen.

1.2. Interface

Das Interface, die Benutzerschnittstelle des Spiels, soll dem Spieler ermöglichen, das Geschehen des Spiels zu steuern und zu kontrollieren, Informationen vom Spiel zu bekommen und ihm Informationen zu geben.

Das Interface ist sehr wichtig für ein Spiel, denn die Bedienung ist ausschlaggebend für den Komfort, den der Spieler empfindet, und schwierige Bedienung frustriert den Neuling sehr schnell. Wenn man zur Bedienung eines Spiels die Maus und das Keyboard benutzen muß, wie z.B. bei „Quake“, mag das für gute Spieler in Ordnung sein, aber für einen Spieler mit geringerer Koordination wird es das Spiel unspielbar und damit uninteressant machen. Viele Menschen können ihre Hände einfach nicht in dieser Weise koordinieren. Sie laufen gegen Wände, sind in manchen Situationen, die schnelle Koordination erfordern, hilflos, bleiben dadurch im Spielverlauf hängen, werden frustriert und spielen das Spiel nie wieder. Das kann natürlich nicht Sinn und Zweck des Interfaces sein. Der Entwurf eines geeigneten Interfaces ist für den Entwickler eine schwierige Gratwanderung.

Man will dem Spieler natürlich möglichst viele Bewegungs- und Steuerungsoptionen bieten, um das Spiel so realitätsnah wie möglich zu machen, aber es muß auch bedienbar bleiben. Das ist das Dilemma der Spielesteuerung. Wie kann man dieses Problem lösen ?

Zu Beginn sollte man die Zielgruppe identifizieren, die das Spiel spielen soll oder zwangsläufig spielen wird. Entwirft man z.B. ein Spiel, daß an die StarTrek-Filme angelehnt ist, muß man damit rechnen, daß die große StarTrek-Fangemeinde, deren Mitglieder nicht unbedingt Spielefreaks sein müssen2, besonderes Interesse an diesem Spiel zeigen wird. Entwirft man einen Nachfolger für das Spiel „Quake“, so ist damit zu rechnen, daß die Fans des Vorgängers, die sowieso schon die komplexe Steuerung gewöhnt sind, dieses Spiel spielen werden.

Will man ein Spiel entwickeln, das sowohl von Neulingen als auch von Spieleprofis gespielt werden soll, so sollte man ein einfaches, intuitives Interface entwerfen. Das bedeutet nicht, daß es nicht komplexe Optionen geben darf, aber man muß dem Anfänger die Chance geben, „ins Spiel zu kommen“. Was ist nun ein spielerfreundliches, intuitives Interface ? Intuitiv zur Steuerung z.B. einer Spielfigur ist die Verwendung der Pfeiltasten zur Bewegungs-steuerung. Jeder Spieler wird diese Tasten zuerst ausprobieren, wenn er nicht weiß, wie eine Figur bewegt wird.

Spielerfreundlich zur Steuerung ist z.B. daß die linke Hand die Feuertaste auch erreichen kann, wenn die rechte Hand die Figur gerade bewegt. Es gibt tatsächlich Spiele, in denen die Hand zur Bewegungssteuerung Aktionstasten verdeckt.

Nichts desto trotz ist es oft sinnvoll, sich beim Entwurf eines Interfaces an den bewährten Interfaces anderer Spiele zu orientieren, denn erstens spart es dem Entwickler eit, die er für sinnvollere Tätigkeiten verwenden kann, als die Neuerfindung des Rades, und zweitens ist das zu entwickelnde Interface und dessen Steuerungsmöglichkeiten vielen Benutzern dann evtl. schon bekannt und sie können folglich sehr schnell ins Spiel finden.

Prinzipiell sollten möglichst viele Steuerungsoptionen vom Spieler konfigurierbar sein. Es sollten sinnvolle Standardeinstellungen gegeben sein, die vom Benutzer konfiguriert werden können, um die Steuerung an seine persönlichen Vorlieben anzupassen.

Dabei sollte man beachten, daß manuelle Konfiguration von Fortgeschrittenen benutzt werden wird, und nicht von Anfängern. Deshalb sollte die Konfiguration der Steuerungsfunktionen eine Option und keine Pflicht sein. Anfänger werden, wenn sie am Beginn des Spiels nach

Einstellungen gefragt werden, unter Umständen gar nicht verstehen, worum es überhaupt geht.

Man sollte, zusammengefaßt, beim Entwurf des Interface eines Computerspiels folgenden Satz beherzigen:

„Denke bloß nicht, daß irgendwer das Handbuch liest, bevor er zu spielen beginnt !“3

1.3 Gameplay

Gameplay ist ein unscharfer Begriff. Es beschreibt die Fähigkeit eines Spiels, den Spieler zu faszinieren und zu fesseln, und ist somit vielleicht der wichtigste Punkt eines Spiels. Das Gameplay ist völlig unabhängig von der Art des Spiels. Kleine, nette Spielchen, wie z.B. Solitaire oder Minesweeper, die jeder Windows-Version beiliegen, verfügen bei manchen Menschen zweifellos über einen ebenso hohen Suchtfaktor wie aufwendige 3D-Spiele mit gigantischen Soundeffekten. Daraus erkennt man schon, daß Gameplay und dessen Bewertung durch den Spieler eine sehr subjektive Angelegenheit ist. Spieler erwarten sehr unterschiedliche Dinge von einem Computerspiel. Manche bevorzugen „Ballerspiele“ wie „Duke Nukem 3D“ oder „Doom“, andere messen lieber ihre taktischen Fähigkeiten mit anderen Spielern oder Computergegnern in Spielen wie „Warcraft“ oder „Starcraft“. Was aber jeder Spieler von einem Computerspiel erwartet sind zwei elementare Dinge:

- Abwechslung:4

Spieler wollen nicht immer mit denselben Dingen in einem Spiel konfrontiert werden. Das Spiel lebt von immer neuen Highlights, die den Spieler überraschen, geheimen Elementen, die vielleicht erst beim fünften Durchgang durch ein Level entdeckt werden, oder Variationen im Spielablauf, die ein Level immer etwas anders gestalten. Manche Entwickler behaupten sogar, das 30% der Funktionalität eines Spiels verdeckt sein sollten, z.B. in Geheimgängen oder versteckten Gegenständen. Die verschiedenen Varianten, die ein Level annehmen und deren Zahl prinzipiell unendlich sein kann, hängen hierbei eng mit der KI eines Spiels zusammen (siehe 1.5. Künstliche Intelligenz (KI)).

- Herausforderung

Wer sich ein Spiel kauft erwartet, von diesem Spiel herausgefordert zu werden. Diese Herausforderung kann unterschiedliche Formen annehmen5.

- Herausforderung das Spiel zu beenden:

Spieler, die diese Herausforderung suchen, wollen meistens die Programmierer des Spiels besiegen oder einfach sehen, was am Ende als „Bonbon“ passiert. Ein Spiel zu programmieren, das einfach nicht zu schaffen ist, würde diese Spieler sehr frustriert zurücklassen.

- Herausforderung des Wettkampfs:

Hierbei geht es den Spielern hauptsächlich darum, sich mit anderen Spielern oder Computergegnern zu messen. Neuere Spiele, die die Option bieten, eigene Level zu ent-wickeln und sie mit Anderen zu spielen, sind bei diesen Spielern favorisiert.

- Herausforderung der perfekten Beherrschung:

Spieler, die diese Herausforderung suchen, wollen ein Spiel möglichst perfekt beherrschen. Diese Spieler begeistern sich oft für Fahrzeug- oder Flugzeugsimulatoren. Selbst wenn das Spiel geschafft ist, versucht man immer noch, seine Leistungen im Spiel zu verbessern.

- Herausforderung der High Score:

Das ist ein Sonderfall der Herausforderung des Wettkampfs. Spieler spielen nicht direkt gegeneinander, sondern versuchen in beliebig vielen Versuchen, die Bestleistung anderer Spieler zu überbieten. High Scores üben eine besondere Faszination auf Spieler aus.

Diese Dinge sollte man beim Entwurf des Gameplays unbedingt beachten, wenn man ein Spiel entwickeln will, daß von einer möglichst großen Spielergemeinde akzeptiert werden soll, was die Voraussetzung für den, auch kommerziellen, Erfolg eines Spiels ist.

1.4 Geschichte

Einmal mehr ist auch der Punkt „Geschichte“ abhängig von der Art des Spiels, das man entwickeln will. Bei Spielen wie „Doom“, der „Mutter“ aller Ein-Mann-Massaker-Spiele, wäre eine Geschichte normalerweise unangebracht, aber eine Geschichte, die die einzelnen Level in einen gewissen Zusammenhang bringt, könnte einen bestimmten Reiz beim Spieler erzeugen6.

Eine Geschichte in einem Spiel läßt sich nicht mit einem Buch vergleichen. Ein Spiel will schließlich keine Aussagen machen oder zum Nachdenken anregen. Ein Spiel soll Spaß machen, und das sollte auch die Geschichte tun, die der Spieler in einem Spiel durchlebt. Viele Spiele haben in der Vergangenheit versucht, sich an den Erfolg von Büchern und besonders von Filmen anzuhängen. Schon zu Zeiten des Commodore 64 gab es Spiele wie „Rambo“, „Indiana Jones“, „Gremlins“ oder „Platoon“.

Auch in neuerer Zeit hat sich dieser Trend fortgesetzt, z.B. bei „Star Trek - The Next

Generation“ oder „Discworld“, einem Spiel nach dem gleichnamigen7 (übrigens sehr amüsanten) Roman von Terry Pratchet.

Ein Spiel nach einem Film zu machen erspart dem Entwickler, sofern er die Geschichte denn selbst entwirft, viel Arbeit. Schreibarbeit, die ein Entwickler sowieso ungern macht. Jedoch ist es bei Spielen nach Filmen, ebenso wie bei Filmen nach Büchern, sehr schwierig, den Film oder das Buch exakt zu kopieren und Ungereimtheiten können Fans des Films bzw. Buchs schnell verschrecken. Das wäre natürlich eine Katastrophe, denn indem man das Spiel an den Film oder das Buch anlehnt, will man ja gerade eben diese Fans dazu verleiten, das Spiel zu kaufen.

Ein Unteraspekt der Geschichte sind die Charaktere, die in der Handlung des Spiels auftauchen oder die Charaktere, die der Spieler selber steuert.

Menschen neigen dazu, sich mit anderen Menschen zu identifizieren, insbesondere wenn man selber gerne so wäre wie diese Menschen8. Wenn man einem Spielefan zuhört, der einem anderen Fan von einem neuen Spiel erzählt, wird man feststellen, daß nie gesagt wird: „Du steuerst in diesem Spiel einen ...“, sondern fast ausnahmslos: „Du bist in diesem Spiel ein ...“. Ein kleiner, aber feiner Unterschied, der zeigt, wie sehr sich Spieler mit den Charakteren eines Spiels identifizieren.

Deshalb ist auch die Heldenfigur in Spielen so beliebt, besonders der „verwundbare Held“9. Das erklärt wohl auch, warum das erfolgreichste Spiel der 90er Jahre „Tombraider“ ist, in dem sich die mittlerweile weltberühmte Lara Croft durch eine Welt voller Monster und Killer prügelt. Die zierliche, aber keineswegs hilflose Lara löst beim Spieler diese Identfikation mit der verwundbaren Heldin aus10.

Was ist ein verwundbarer Held? Es ist eine gewöhnliche Person, die durch ungewöhnliche Umstände in eine gefährliche Situation gerät, und diese nun wohl oder übel meistern muß, so z.B. in einem der erfolgreichsten Spiele für den C 64, „Zak McCracken“, in dem drei Jugendliche ihre Freundin aus den Fängen eines irren Professors retten müssen.

Besonderes Augenmerk sollte der Entwickler der Geschichte darauf richten, daß die Geschichte des Spiels in sich schlüssig ist, d.h. daß sich keine Löcher in der Handlung befinden, die für den

Spieler nicht nachvollziehbar sind. Bestimmte Handlungen, die nicht als Level realisiert sind, könnten dem Spieler z.B. als Videosequenzen vorgeführt werden. Unschlüssige oder unlogische Handlung wirkt verwirrend und kann den Spielspaß sehr negativ beeinflussen.

1.5 Künstliche Intelligenz

Über Künstliche Intelligenz in Computerspielen wird seit einiger Zeit viel diskutiert, und das mit gutem Grund. Seit es Spiele mit realistischen Soundeffekten und fast fotorealistischer 3D- Grafik gibt, fällt es verstärkt auf, wenn ein Spiel sich nicht „intelligent“ verhält. KI in Computerspielen ist nicht dasselbe wie wissenschaftliche KI, die sich genetischer Algorithmen oder neuronaler Netze bedient. Solche Systeme würden in Computerspielen zuviel Rechenleistung verbrauchen, die dringend anderweitig, z.B. für 3D-Grafik, benötigt wird.

Die KI in Computerspielen versucht lediglich, oft mit Zufallsalgorithmen, ein scheinbar intelligentes Verhalten des Programms zu simulieren. Wenn z.B. ein Wächter in einem Spiel nicht nur auf einem vorgegebenen Weg patrouilliert, sondern ab und zu anhält und mit einem anderen Wächter spricht oder austreten muß (man spricht dabei von einheitenbezogener KI), und dies nicht nach einem chronologischen Schema tut, so wird es auf den Spieler real und damit intelligent wirken.

Man unterscheidet zwei Arten von KI in Computerspielen11: Reagierende KI:

Reagierende KI reagiert, wie der Name schon sagt, auf Entwicklungen in der Umgebung einer Einheit. Wenn man z.B. das Verhalten unseres Wächters programmiert, sollte man dessen Wahrnehmungsfähigkeiten berücksichtigen (Sichtradius, Hörradius, etc.).

Wenn eine feindliche Einheit in seinen Sichtbereich kommt, sollte er angemessen reagieren und angreifen oder flüchten, z.B. bedingt durch die Art der feindlichen Einheit. Wenn er unter normalen Umständen vor einer bestimmten feindlichen Einheit flüchten würde, so könnte er, falls andere Wächter in der Nähe sind, diese Zuhilfe rufen, bedingt durch deren Hörradius. Wenn unser Wächter nur Schritte hören würde, könnte er dahingehend reagieren, daß er sich Deckung sucht, um den potentiellen Feind zu überraschen.

Spontane KI:

Spontane KI erzeugt bei Figuren „intelligentes“ Verhalten, auch wenn sie nicht diekt in die Handlung einbezogen sind. Das ist sehr wichtig, um das Problem der herumstehenden Figuren zu

lösen. Eine Figur, die nur herumsteht und nichts tut, bis sie von der Figur des Spielers angesprochen oder getötet wird, wirkt ziemlich dumm.

Man kann dieser Figur aber Aufgaben geben, die sie ausführt, bis sie in die Handlung integriert wird, und zu denen sie, sollte sie es überleben, danach wieder zurückkehrt. Spontane KI erzeugt beim Spieler den Eindruck, daß das Spiel wirklich „lebt“ und ist somit für den Spielspaß enorm wichtig.

Diese beiden KI-Formen sind auch ohne wissenschaftliche KI-Systeme zu realisieren und werden deshalb meist direkt in sehr umfangreichen Event-Handlern realisiert..

1.6 Grafik

Nun kommen wir zum mutmaßlich wichtigsten Bestandteil eines Computerspiels. Die Grafik ist das Erste, was ein Spieler sieht, wenn er zu spielen beginnt. Eventuell sogar schon dann, wenn er die Verpackung in der Hand hat und die obligatorischen Screenshots auf der Rückseite betrachtet. Deshalb sollte schon der Stil und das Design der Grafik soviel wie möglich über den Charakter des Spiels aussagen12. Die ersten Eindrücke entscheiden beim Spieler oft schon über die Faszination, die das Spiel bei auslöst.

Die Auswahl der Grafik beginnt schon bei der Wahl der Perspektive, aus der der Spieler das Spiel sehen soll. Soll es eine Übersichtsperpektive sein, wie z.B. bei „Starcraft“, oder die direkte Erste-Person-Perspektive, wie z.B. bei „Quake“ oder „Doom“? Hierbei hat mittlerweile jedes Spiel-Genre seine traditionelle Perspektive, die von den Spielern akzeptiert wird. An diese ungeschriebenen Konventionen sollte sich der Entwickler in seinem eigenen Interesse halten.

Jedes Spiel sollte aber ungeachtet dessen eine unverwechselbare Oberfläche haben, die von den Spielern sofort mit genau diesem Spiel assoziiert wird.

Kommen wir nun zur Wahl der Grafikart. Es gibt 2D-Grafik und 3D-Grafik. Zwischen diesen beiden muß sich der Entwickler entscheiden. In der letzten Zeit ist die 3D-Grafik immer mehr auf dem Vormarsch, auch unterstützt durch neue, leistungsfähige Hardware auf dem Grafikkartenmarkt.

Wie 3D-Grafik funktioniert, und was die Vor- und Nachteile gegenüber 2D-Grafik sind, dem wollen wir das nächste Kapitel widmen.

2. Was ist 3D - Grafik ?

2D-Grafik ist in den letzten Jahren von vielen Entwicklern totgesagt worden. In der 3D- Euphorie der 90er Jahre verwundert das nicht. Bezüglich solcher Aussagen ist ein Blick auf die Rangliste der meistverkauften Spiele sehr aufschlußreich.

Abbildung in dieser Leseprobe nicht enthalten

Quelle: „2D vs. 3D: Fight of the Century“ von Geoff Howland

Tatsächlich 8 von 10 TopTen-Spielen (Stand Juni 1998) sind immer noch 2D-Anwendungen. Also ist 3D vielleicht doch nicht das Maß aller Dinge ? Eventuell bringt ein Vergleich von 2D- und 3D-Grafik Aufschluß darüber.

2.1. 3D und 2D im Vergleich

Was ist der Unterschied zwischen 2D und 3D ? Zunächst einmal sind beide Grafikarten in der Lage, dem Benutzer Informationen anzuzeigen. Und sie tun dies beide auf einem 2D-Bildschirm. Gibt es also überhaupt „echte“ 3D-Grafik ? Ein Hauptunterschied zwischen 2D- und 3D-Grafik ist die Art, in der Grafikinformationen gespeichert werden.

Bei 2D geschieht dies meistens in Form von vorher gezeichneten Bildern, sog. Sprites, die bei Bedarf an der richtigen Position in das anzuzeigende Bild kopiert werden. Bei 3D-Darstellungen werden die Informationen über ein Objekt in Form von sog. Volumenmodellen13 gespeichert, die dann durch mehrere Operationen (Drahtmodell erzeugen, Rendering, etc.) auf dem Bildschirm sichtbar gemacht werden.

Durch die besondere Erzeugungsart von 3D-Objekten ist es möglich, diese Objekte aus allen Blickwinkeln zu betrachten. Dazu muß nur eine Reihe von mathematischen Operationen auf die Koordinaten angewendet werden.

Bei 2D-Objekten muß demnach jede Ansicht eines Objektes vorgezeichnet sein, und zur richtigen Zeit dargestellt werden. Das bedeutet, daß wenn man ein 2D-Objekt von allen Seiten betrachten will, dabei nur die horizontale Ansicht berücksichtigt14, und einen minimalen Drehwinkel von 30° zugrunde legt, man bereits 12 verschiedene Ansichten des Objektes vorzeichnen und abspeichern müßte.

Vorteile von 3D-Grafik:

3D-Grafik besitzt gegenüber 2D-Grafik drei entscheidende Vorteile:

- 3D-Grafik kann dem Benutzer die virtuelle Welt sehr viel realer präsentieren als 2D-

Grafik, da eine 3D-Welt aus allen Blickwinkeln betrachtet und auf variablen Ebenen durchschritten werden kann. 2D-Grafik kann das nicht bieten, da alle Ansichten vorgezeichnet werden müßten, und die Anzahl möglicher Ansichten einer virtuellen Welt schon auf kleinstem Raum unglaublich groß werden kann. Bei 3D-Darstellungen müßte nur der Standort und der Blickvektor des Betrachters geändert werden und schon würde durch mathematische Operationen das Bild neu berechnet.

- Ein weiterer Vorteil ist die Möglichkeit, Objekte zu animieren. Auch hier gibt es bei 3D- Objekten keinerlei Einschränkungen. Sie können in allen Größen, in alle Richtungen, aus allen Blickwinkeln animiert werden, wobei wir bei 2D-Objekten wieder auf das Problem stoßen, jede Ansicht als vorgezeichnetes Bild verfügbar haben zu müssen. ® Auch die Erzeugung neuer Objekte ist in 3D-Anwendungen sehr einfach. Man muß nur vorhandene Objekte zu neuen Volumenmodellen gruppieren, und schon kann man diese als ein Objekt behandeln. Nun kann man alle Operationen auf das neue Objekt anwenden, obwohl es erst zur Laufzeit erzeugt wurde. Dies ist ein großer Flexibilitätsvorteil gegenüber 2D-Objekten.

Vorteile von 2D-Grafik:

Auch wenn 2D-Grafik von manchem schon lange als rückständig oder primitiv bezeichnet wird, besitzt sie dennoch einige Vorteile gegenüber 3D-Grafik:

- Ein Vorteil, der 2D-Grafik trotz allem noch am Leben erhält, ist die Mölichkeit, sehr detailreiche Darstellungen zu erreichen. Da alle Bilder, oder Sprites, von Hand gezeichnet werden, können sehr detailverliebte Bilder verwendet werden, deren Realisierung in 3D- Systemen zu riesigen Volumenmodellen führen würde, die vom Rechner, da auf jeden einzelnen Punkt mathematische Operationen angewendet werden, nicht in angemessener Zeit bewältigt werden könnten. Man erkennt deswegen 2D-Grafik auch häufig an den exakten Details der Darstellungen, wobei 3D-Grafiken „flächiger“ wirken. ® Der nächste wichtige Vorteil von 2D-Grafiken ist die Geschwindigkeit der Darstellung, da alle Bilder vorgezeichnet sind, und nur in den Bildschirm kopiert werden müssen. Dadurch können Bildraten von 20-25 Bildern pro Sekunde, die für Echtzeit- Anwendungen verlangt werden, leicht erreicht werden. Eine komplexe 3D-Grafik könnte das nur mit einem System schaffen, das über sehr viel mehr Rechenleistung verfügt. Deshalb geht der Trend auch zu schnelleren 3D-Grafikkarten, die dem Prozessor möglichst viel Rechenleistung abnehmen.
- Neben den technischen Vorteilen, gibt es auch ergonomische Gründe, sich für 2D-Grafik zu entscheiden. So werden von Benutzern 2D-Oberflächen als einfacher und benutzer- freundlicher empfunden als 3D-Oberflächen, besonders von Anfängern. Die uneinge- schränkte Bewegungsfreiheit von 3D-Welten kann Neulinge leicht überfordern und frustrieren15.
- Als letzter Punkt wären hier noch die Grafik-Engines zu nennen, die wie in Kapitel 3.2. „3D-Engines und Schnittstellen“ noch näher behandeln werden. Es ist sehr viel einfacher, eine 2D-Engine zu entwickeln und zu benutzen, als eine 3D Engine. Dies kann sich aber ändern, falls sich eine 3D-Engine als Standard durchsetzten sollte16.

Für die Zukunft kann man aber sagen, daß sich, wenn sich die Rechenleistung der Homecomputer und Grafikkarten so weiterentwickelt wie in den letzten Jahren, die große Flexibilität von 3D-Anwendungen durchsetzen wird. In naher Zukunft werden Rechner und Grafikkarten in der Lage sein, komplexe, detailreiche Volumenmodelle in angemessener Zeit zu verarbeiten.

2.2. So funktioniert 3D-Grafik

Die Erzeugung und Ausgabe von 3D-Szenen auf dem Bildschirm besteht im wesentlichen aus drei elementaren Schritten17:

- Die Erzeugung eines dreidimensionalen Modells der realen Szene (Volumenmodell). ® Die Abbildung des Modells auf den zweidimensionalen Bildraum (Projektion) ® Die Ausgabe auf dem jeweiligen Gerät.

Diese Schritte enthalten ihrerseits wieder Unterschritte, die berücksichtigt werden müssen, um akzeptable Ergebnisse zu erhalten. Deshalb werden wir jeden Punkt noch einmal ausführlich behandeln.

Erzeugung einer 3D-Szene:

Eine 3D-Szene ist ein festgelegter Bereich mit einem Koordinatenurprung (x,y,z) = (0,0,0) und einem Punkt (x,y,z) = (xmax,ymax,zmax), der die maximale Ausdehnung des Raumes beschreibt. Dieser Raum steht nun dem Modellierer zur Verfügung, um darin 3D-Objekte anzuordnen.

Ein 3D-Körper wird aus geometrischen Grundformen, sog. Primitiva, aufgebaut. Primitiva sind z.B. Quader, Pyramiden, Kegel oder Zylinder. Diese Primitiva werden zu komplexeren Formen und Gebilden zusammengefügt. Aus diesen Gebilden und den Koordinaten ihrer Eckpunkte wird das Volumenmodell des Objekts erzeugt.

Volumenmodell:

Die Koordinaten der Eckpunkte eines Objekts werden gewöhnlich in Form einer Matrix oder eines Feldes gespeichert. Diese Matrix oder dieses Feld repräsentiert dann das 3D-Objekt. Die gespeicherten Werte können nun entweder unverändert dargestellt werden, oder mit Hilfe einer Skalierungs- oder einer Translationsmatrix vor der Darstellung so verändert werden, daß das Objekt in der Szene so erscheint, wie der Entwickler es will. Auch können so mehrere dieser Objekte in unterschiedlichen Erscheinungsformen in der Szene auftauchen. Dies ist besonders dann der Fall, wenn später das gleiche Modell mit verschiedenen Texturen18 in der Szene erscheinen soll.

Drahtmodell (Wireframe):

Das Volumenmodell kann auch als Drahtmodell dargestellt werden, indem man die Eckpunkte des Objekts darstellt, und durch Kanten verbindet.

Abbildung 2.1. Drahtmodell einer 3D-Szene19

Abbildung in dieser Leseprobe nicht enthalten

Dazu muß jedoch bekannt sein, welche Punkte miteinander verbunden werden sollen. Aus diesem Grund wird zu den reinen Koordinaten noch ein Feld angelegt, in dem die Kanten des Objektes abgespeichert werden. Werden nun die Punkte gezeichnet, kann durch die Kantenfeldwerte ein genaues Drahtmodell des Objektes dargestellt werden.

Hierbei hat man noch die Möglichkeit, nicht nur gerade Kanten, sondern durch die Berechnung von Spline- oder Bezierkurven, gekrümmte (interpolierte) Kanten darzustellen.

Zur Verdeutlichung sehen wir uns zwei Grafiken an:

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2.2. Verbindung von Punkten mittels gerader Kanten

Man sieht, daß diese Darstellung nicht sehr flüssig aussieht, und wenn man die Anzahl der Punkte eines Volumensmodells aus Performancegründen niedrig halten will, kann das Objekt in der Darstellung sehr eckig wirken. Deshalb bedient man sich mathematischer Interpolationsver-fahren, um die Kanten des Objektes zu glätten.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 2.3. Verbindung von Punkten mittels einer Spline-Interpolation

Diese Verbindung sieht schon viel weicher aus, als die Verbindung in Abb. 2.2. Es gibt noch mehrere Interpolationsarten, aber alle zu behandeln, würde hier zu weit führen. Deshalb gehen wir der Einfachheit halber davon aus, daß wir ein vernünftiges Drahtmodell erhalten haben, und wenden uns der weiteren Verarbeitung zu.

Grafische Darstellung von 3D-Objekten:

Sieht man sich Abb. 2.1. an, so wird deutlich, warum das Drahtmodell Drahtmodell heißt. Man kann hindurch und eigentlich verdeckte Kanten sehen. Im Normalfall wollen wir aber massive Körper erzeugen, bei denen nur die Seite, die der Blickrichtung zugewandt ist, sichtbar ist.

Wir müssen nun also versuchen, die modellierten Objekte innerhalb der Szene in realistischer Weise auf dem Bildschirm abzubilden. Das heißt, unsere 3D-Szene zweidimensional darzustellen. Um das zu erreichen, bedient man sich sogenannter Projektionen. Es gibt mehrere Projektionsarten, aber wir wollen uns hier nur die Zentralprojektion genauer ansehen.

Zentralprojektion:

Bei der Zentralprojektion gibt es drei wichtige Grundobjekte: ® Den Beobachterstandort

- Die Projektionsebene (zweidimensional)
- Die Beobachtungsrichtung (senkrecht zur Projektionsebene)

Diese Objekte werden nun innerhalb des Raumes positioniert, und bestimmen die spätere Bildschirmausgabe.

Wie wird nun ein Punkt auf dem Bildschirm ausgegeben ?

Vom Beobachterstandort zeigt ein Vektor zum darzustellenden Punkt und durch diesen hindurch bis zu dem Punkt, an dem der Vektor die Projektionsebene durchdringt, falls er sie überhaupt durchdringt. An dieser Stelle wird der Punkt später ausgegeben, denn die Projektionsebene repräsentiert den Bildschirmbereich, auf dem die Ausgabe später erfolgen soll. Dies geschieht mit jedem Punkt der Szene und den Kanten der Objekte. Wenn alle Punkte abgearbeitet sind, erhält man eine 2D-Darstellung des sichtbaren Bereichs der Szene auf der Projektionsebene (als Drahtmodelle).

Abbildung 2.4. Darstellung eines Körperpunktes mittels Zentralprojektion

Abbildung in dieser Leseprobe nicht enthalten

Ausgehend von dem Blickrichtungsvektor kann man nun sichtbare Bereiche der Objekte identifizieren und weitere Effekte, wie z.B. Lichtquellen, berechnen.

Rückseitenentfernung:

Zur Rückseitenentfernung benötigt man die Normalenvektoren der Flächen eines Objektes und den Blickrichtungsvektor in Richtung dieser Flächen.

Die Richtung des Normalenvektors erhält man aus der Umlaufrichtung der Eckpunkte; dessen Länge aus der Ausdehnung der Fläche. Er steht senkrecht auf deren geometrischem Mittelpunkt. Der Blickrichtungsvektor zeigt vom Beobachterstandort zum Mittelpunkt der jeweiligen Fläche. Aus dem Skalarprodukt dieser beiden Vektoren kann man nun bestimmen, ob die Fläche sichtbar ist und gezeichnet werden soll oder nicht.

Abbildung 2.5. 3D-Szene nach der Rückseitenentfernung

Abbildung in dieser Leseprobe nicht enthalten

Sichtbarkeitsentscheid nach dem z-Buffering-Prinzip:

Nachdem man nun bestimmt hat, welche Teile eines Objektes sichtbar sind, muß nun natürlich noch berücksichtigt werden, daß ein Objekt evtl. andere Objekte ganz oder teilweise verdecken kann. Dazu bedient man sich des z-Buffering.

In der 3D-Szene gibt es drei Achsen, wobei die x- und y-Achse den entsprechenden Achsen des Bildschirms entsprechen20. Die z-Achse ragt also in den Bildschirm hinein. Diese Achse ist nun maßgeblich, wenn man entscheiden will, ob ein Objekt vor einem anderen (also sichtbar) ist, oder von anderen Objekten ganz oder teilweise verdeckt ist. Dazu wird zu jedem Punkt der ƵWert in einem separaten Feld gespeichert. Nach diesen Werten wird bei der Zeichnung der Szene entschieden, in welcher Reihenfolge die Objekte gezeichnet werden.

Abbildung 2.6. 3D-Szene nach dem z-Buffering

Abbildung in dieser Leseprobe nicht enthalten

Mapping:

Wenn wir das Objekt realitätsgetreu darstellen können, wenden wir uns nun dem Objekt selbst und dessen Oberfläche zu. Meistens wollen wir, daß unser Objekt eine bestimmte Farbe oder vielleicht sogar eine bestimmte Struktur hat.

Um beispielsweise ein Objekt, daß später ein Felsen sein soll, realitätsnah abzubilden, müßte dessen Oberfläche eine Struktur haben, die wie ein Stein aussieht. Man nimmt also eine Textur, die einen Stein darstellt, und „klebt“ diese auf unser Objekt. Diesen Vorgang nennt man „Mapping“. Dabei werden die einzelnen Flächen des Objekts mit den entsprechenden Bereichen der Textur gefüllt. Mappt man z.B. die 2D-Textur einer Weltkarte auf eine Kugel, so würde man die Erde als kugelförmigen Planeten erhalten.

Abbildung 2.7. 3D-Szene mit Texture-Mapping

Abbildung in dieser Leseprobe nicht enthalten

Ausgabe auf dem jeweiligen Gerät:

Wenn wir nun alle Objekte erzeugt, bearbeitet und gemappt haben, folgt die Umrechnung der Projektions- in Bildschirmkoordinaten und mit dem entsprechenden Befehl wird unsere Szene ausgegeben.

Wenn man bedenkt, daß alle diese Vorgänge in Echtzeit-Anwendungen 25 mal pro Sekunde durchgeführt werden müssen, kann man verstehen, warum 3D-Echtzeit-Anwendungen so viel Rechenleistung benötigen, daß normale Rechner sie kaum aufbringen können. Aus diesem Grund sind auch in den letzten Jahren immer mehr dieser Schritte auf die Grafikkarten verlagert worden. So übernehmen viele neuere Grafikkarten z.B. das Mapping und die Umrechung von Welt- in Bildschirmkoordinaten selbst, nd entlasten damit den Prozessor entscheidend. Diese Grafikchipsätze heißen 3D-Beschleuniger, da durch die Prozessorentlastung schnellere 3D-Verarbeitung bei gleicher Prozessorrechenleistung ermöglicht wird.

3. 3D-Grafikprogrammierung

Nach diesem längeren Ausflug in die Theorie wollen wir uns nun der Fragestellung widmen, welche Möglichkeiten und Hilfsmittel dem Entwickler auf verschiedenen Abstraktionsstufen zur Verfügung stehen, um ein Spiel zu realisieren. Das Hauptaugenmerk des Informatikers wird auch hierbei wieder auf der 3D-Grafik liegen. Wir wollen uns drei Alternativen ansehen: ® Traditionelle Grafikprogrammierung

- 3D-Engines und 3D-Schnittstellen
- 3D-Editoren nach dem WYSIWYG-Prinzip21

3.1. Traditionelle Grafikprogrammierung

Bei der traditionellen Grafikprogrammierung stehen dem Entwickler praktisch keine Hilfsmittel zur Verfügung. Alle Schritte, die wir im vorigen Kapitel kennengelernt haben, müssen von Hand implementiert werden. Auf unterster, mathematischer Ebene. Auch die KI des Spiels, d.h. die umfangreichen, meist aber sehr ähnlichen Event-Handler müßte der Entwickler selber realisieren.

Volumenmodelle müssen auf Feldebene für jedes Primitivum von Hand erzeugt, die Objekte gruppiert werden, etc. Von viel komplexeren Vorgängen wie z.B. dem Mapping ganz zu Schweigen. Das bedeutet einen ungeheuren Aufwand für den Entwickler. Und diesen Aufwand hat man bei jedem Spiel von Neuem.

Auf der anderen Seite bedeutet dieses aber auch ein Höchstmaß an Flexibilität in der Gestaltung der grafischen Objekte und Szenen. Auch bei Animationen und Echtzeit- Anwendungen läßt sich bei manueller Implementierung die Performance optimieren. Die Frage ist, ob der Preis für die Flexibilität hier nicht zu hoch ist. Die Hardwareabhängigkeit, und damit die mangelnde Portabilität, ist ebenfalls ein Problem, wenn man von Hand implementiert. Die Vielfalt der Grafikkarten, die manche Features unterstützen, andere wiederum nicht, und bei der Nächsten ist es genau umgekehrt; macht performantes implementieren fast unmöglich.

Es ist kein Wunder, daß man gerade in diesem Bereich versucht hat, Standards zu schaffen, um einen akzeptablen Mittelweg zwischen Aufwand und Flexibilität zu finden. Diese Standards, die auch 3D-Engines oder 3D-Schnittstellen genannt werden, stellen die nächsthöhere Abstraktionsstufe dar.

3.2. 3D-Engines und Schnittstellen

Es gibt unzählige 3D-Engines. Fast jede Entwicklergruppe hat irgendwann einmal eine eigene, vermeintlich perfekte 3D-Engine entwickelt und setzt sie auch erfolgreich ein. Durch vorgefertigte Funktionen wird ein Großteil der Erzeugung von 3D-Objekten erheblich vereinfacht, Projektionen und Mapping werden automatisiert, wobei die meisten 3D-Engines nicht viel unflexibler sind, als die traditionelle Grafikprogrammierung. Es ist zum Beispiel schon eine große Erleichterung, wenn die Erzeugung der Primitiva vereinfacht wird. Auch die Hardwarefrage wird durch eine intelligente 3D-Engine gelöst. Mittels spezieller 3D-Engines ist es möglich, gleiche Bedingungen auf verschiedenen Plattformen zu schaffen. Durch die direkte Steuerung der Hardware kann optimale Performance erreicht werden, ohne die Hardware der jeweiligen Maschine im Detail kennen zu müssen.

Das Prinzip einer 3D-Engine kann man der folgenden Abbildung entnehmen:

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 3.1. Prinzip einer 3D-Engine

Beispiele für 3D-Engines und 3D-Schnittstellen sind z.B. Direct3D, der 3D-Grafikteil der umfangreichen Multimedia-Engine DirectX, OpenGL oder GLIDE.

3.2.1. DirectX

Ursprünglich entstand DirectX Ende 1995, um die Nachteile von Windowsapplikationen gegenüber DOS-Anwendungen zu beheben. Die Vorteile von Windows, z.B. die zentrale Hardwareverwaltung oder die einfache Installation von Programmen, gingen mit deutlichen Performanceeinbußen einher, die Spielen unter Windows 3.x und Windows 95 den Wind aus den Segeln nahmen.

Deshalb wurden fast alle Spiele für den DOS 32-bit-Modus geschrieben und im DOS-Modus von Windows ausgeführt.

Das veranlaßte Microsoft dazu, das erste DirectX SDK (Software Development Kit) zu entwickeln, um die Programmierung von Multimedia-Anwendungen für die Windowsplattformen zu fördern. Hierbei beschränkten sich die Entwickler nicht nur auf die Grafik, sondern berücksichtigten nach und nach alle relevanten Peripherieteile.

In den ersten Versionen von DirectX war 3D-Grafik noch gar nicht berücksichtigt worden, was sich aber im Herbst 1996 mit der Einführung von Direct3D als Bestandteil von DirectX änderte. Vor der Einführung von Direct3D war lediglich eine 2D-Engine namens DirectDraw verfügbar. DirectDraw ist immer noch in DirectX enthalten und arbeitet eng mit Direct3D zusammen. Der besondere Vorteil von DirectDraw gegenüber dem GDI (Graphic Device Interface) von Windows besteht darin, daß über DirectDraw die Software direkten Zugriff auf den Grafikspeicher hat. Sie kann den Speicher in Bereiche aufteilen, wobei der aktive (angezeigte) Speicherbereich unverändert bleibt, während in anderen Bereichen bereits neue Bilder aufgebaut werden, die dann darauf warten, irgendwann aktiviert zu werden. Die aktuellen Bestandteile von DirectX sind:

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 3.2. Bestandteile von DirectX

Microsoft sieht DirectX als Schnittstelle zwischen den Entwicklern von Multimedia-Software und den Hardware-Herstellern. Die Grundabsicht ist es, den Programmierern einen hardwareunabhängigen Weg zu hardwareabhängigen Features zu ermöglichen.

Wenn man diese Aussage liest, erscheint dieses Ansinnen zunächst wie die „Quadratur des Kreises“. Um so erstaunlicher, daß es den Microsoft-Programmierern tatsächlich gelungen ist, dieses zu realisieren. Die Zauberworte heißen „HAL“23 und „HEL“ 24.

DirectX-Elemente basieren auf einer hardwareunabhängigen Schicht, durch die der Programmierer von der Hardware und deren speziellen Eigenschaften isoliert wird. Die Elemente werden also von der Hardware abstrahiert. Das geschieht durch den sog. „Hardware Abstraction Layer“ (HAL), der von den Hardware-Herstellern zur Verfügung gestellt wird.

DirectX hat nun die Möglichkeit, wenn es nötig ist, die Hardware abzufragen, um festzustellen, ob ein bestimmtes Feature vorhanden ist. Ist es vorhanden, wird es von DirectX direkt angesteuert; ist es nicht vorhanden, wird es vom „Hardware Emulation Layer“ emuliert.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 3.3. Funktionsweise von DirectX

Das ermöglicht dem Entwickler, alle Features, die DirectX bietet, zu verwenden, ohne sich darum zu kümmern, ob sie in der Multimedia-Hardware des Benutzers überhaupt vorhanden sind. Das setzt natürlich voraus, daß der Benutzer DirectX in einer geeigneten Version verwendet. Die aktuelle Version ist die Version 6.1.

Je mehr Features emuliert werden müssen, desto mehr Performance geht logischerweise verloren. Aus diesem Grund wird man, bei den steigenden Anforderungen der Spiele, trotz DirectX nicht um neue Hardware herumkommen.

3.2.2. OpenGL

Seit sich Microsoft im Dezember 1993 festgelegt hatte, die neue Windows NT-Version mit OpenGL als offener 3D-Grafik-Schnittstelle auszuliefern, ist die Entwicklung aus dem Hause SiliconGraphics in aller Munde, wenn es um die Entwicklung von 3D-Anwendungen für NT- Plattformen geht.

OpenGL ging aus der SiliconGraphics-internen Schnittstelle IRIS GL hervor, die in Verwendung mit SGI-Workstations schon bei vielen Filmproduktionen, z.B. „Terminator“, gezeigt hat, welche Möglichkeiten sie bietet.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 3.4. OpenGL-Logo

Auch wenn OpenGL als „offene“ Schnittstelle bezeichnet wird, ist es ein Warenzeichen von SiliconGraphics und wenn eine Implementierung sich mit dem Namen OpenGL schmücken will, müssen nicht nur Lizenzgebühren gezahlt werden, sie muß auch eine Reihe von Konformitäts-prüfungen bestehen. Dies wird aber nicht ausschließlich von SiliconGraphics überwacht, sondern vom sogenannten „Architecture Review Board“, daß auch aus Vertretern anderer Firmen wie IBM, DEC, Intel und Microsoft besteht.

OpenGL ist vom Umfang her sehr viel kleiner als z.B. Direct3D. Es umfaßt hauptsächlich die 2D-Projektion von einfachen Formen (Primitiva). Hierbei kann der Entwickler aber auf Hilfsmittel wie den „OpenInventor“ zurückgreifen. Auch weiterführende Techniken wie Raytracing benötigen externe Routinen.

Warum leistet man sich eine Schnittstelle wie OpenGL auf Windows-Systemen, wenn man doch ein mächtiges, umfassendes System wie DirectX zur Verfügung hat? Der Schwerpunkt von DirectX liegt eindeutig im Bereich der Unterhaltungs-Software, wobei OpenGL im Bereich der professionellen 3D-Anwendungen die Nase vorn hat, da es die Möglichkeiten der Hardware zur Performanceoptimierung etwas besser ausnutzt.

Jedoch reagiert OpenGL dabei sehr empfindlich auf die Größe des verfügbaren Hauptspeichers. Zur Performancesteigerung werden mittlerweile Grafikkarten mit speziellen OpenGL-Chips angeboten, die Preise bis zu mehreren tausend Mark erreichen. Zusammengefaßt kann man sagen, daß OpenGL, bei allen Mängeln die Spieleentwickler beanstanden, ein überschaubares, gut zu handhabendes Interface zur Darstellung räumlicher Grafik ist.

3.3. 3D-Editoren

Wer den Programmieraufwand fast auf null reduzieren will, ist mit einem 3D-Editor, auch Virtual Reality - Autorenwerkzeug genannt, gut beraten. Obwohl mit CAD-Programmen wie AutoCAD 13 aus dem Hause Autodesk bereits 3D-Anwendungen möglich sind, bleiben deren Möglichkeiten immer noch hinter den Erwartungen der Spieledesigner zurück, zumal es nicht möglich ist, komplexe Animationen und Objektverhalten grafisch zu bearbeiten.

Deshalb hat sich eine Generation von 3D-Editoren entwickelt, die speziell auf die Bedürfnisse der Spieleentwickler zugeschnitten sind. Diese Editoren arbeiten mit Drag’n Drop nach dem WYSIWYG-Prinzip25, d.h. daß man die virtuelle Welt während des Entwurfs genau so sieht, wie sie im späteren Spiel aussehen wird. Im Gegensatz zur Programmierung, wo man während des Entwurfs nur den Code sehen kann und extra testen muß, ob die Darstellung auch so aussieht, wie der Entwickler es beabsichtigt hat.

Objekte werden nicht programmiert, sondern grafisch erzeugt und in der Szene positioniert. Auch die Objekteigenschaften können grafisch geändert werden.

Zur Verdeutlichung wollen wir uns ein Beispiel für einen 3D-Editor ansehen.

ACKNEX 3D Game Studio von Conitec

Das Virtual Reality Autorenwerkzeug 3D Game Studio ist ein sehr weit entwickeltes Werkzeug aus dem Hause Conitec. Es ist so leistungsfähig, daß selbst die Fachzeitschrift „PC Games“ es im Vergleich zu US-Produkten folgendermaßen beurteilt:

„Viele erstaunenswerte Effekte(..) Optisch herausragend(..) Den derzeitigen US-Varianten deutlich überlegen.“

Mit diesem Tool lassen sich sowohl Rollenspiele und Adventures, als auch Actionspiele und Simulatoren ohne Programmierkenntnisse produzieren.

Doch nicht nur Spiele können mit 3D Game Studio entwickelt werden, es eignet sich genauso gut zur Erstellung von 3D-Präsentationen, Walkthroughs oder virtuellen Messen. Zuerst muß man in einer Textdatei die Grundzüge des Spiels festlegen, bevor man mit Hilfe eines grafischen Editors Wände, Räume, Gebäude und Gegenstände wie in einem CAD- Programm in die Szenen einfügen kann. Die Profiversion kann dabei bis zu 10000 Objekte pro Level verarbeiten. Die Palette der Objekte reicht von Cockpitkomponenten bis zu einfachen Böden oder Wänden. Auch die Farbe und die Struktur von Objekten kann durch das Mappen beliebiger Texturen beeinflußt werden26.

Abbildung 3.5. CAD-Editor des 3D Game Studios

Abbildung in dieser Leseprobe nicht enthalten

Wenn die festen Objekte und Lebewesen, wie Wachen, Passanten, Monster oder Tiere, eingefügt sind, bietet 3D Game Studio dem Entwickler die Möglichkeit, Verhalten und Eigenschaften dieser Lebewesen und Objekte in bis zu 80 verschiedenen Punkten zu variieren. Zum Abschluß werden dann die entwickelten Level mit Intros, Videosequenzen und Soundeffekten zusammengefügt.

Der Bewegungsradius des Spielers ist nur durch die eingefügten Komponenten eingeschränkt. Er umfaßt 360° auf allen Ebenen. Man kann beliebig viele Ebenen definieren, um realistische Landschaften oder sogar ganze Städte zu konstruieren.

Mouse, Joystick und Tastatur-Eingabegeräte werden standardmäßig erkannt und unterstützt. Dabei greift die integrierte ACKNEX 3D Engine auch auf DirectX zu, sofern das Spiel auf einer Windowsplattform ausgeführt wird.

Animationen sind bis zu einer Bildrate von 44 Frames pro Sekunde möglich, bei einer maximalen Auflösung von 800 x 600 Pixel.

Diesen Komfort läßt sich Conitec natürlich entsprechend bezahlen. Die Anschaffungskosten der Profiversion sind mit DM 1850,- zzgl. MwSt. noch relativ günstig. Vergleichbare Produkte können durchaus das Zehnfache kosten.

Wenn man aber kommerzielle Spiele mit dem 3D Game Studio entwickelt, werden Lizenzgebühren fällig, die je nach Vermarktungsumfang hohe 5-stellige Beträge erreichen können. Wohl gemerkt, diese Gebühren werden pro vermarktetem Spiel fällig, das mit einer Version von 3D Game Studio entwickelt wird.

Zum Abschluß noch zwei Screenshots von Spielen, die mit 3D Game Studio entwickelt wurden.

Abbildung 3.6. Screenshots zweier mit 3D Game Studio entwickelter Spiele

Abbildung in dieser Leseprobe nicht enthalten

4. VRML - Virtual Reality Modeling Language

Ein sehr interessanter Ansatz zur Entwicklung von Spielen und Multiuser-Welten im Internet ist die Sprache VRML, die sich seit einigen Jahren langsam im Internet ausbreitet. Virtuelle Dörfer entstehen und Ausstellungen können nun im Internet „durchschritten“ werden. Wenn die Interaktionsmöglichkeiten von VRML in einer neueren Version optimiert werden sollten, könnte VRML eine echte Alternative zu herkömmlichen Online 3D-Systemen werden.

4.1 Die Entstehung von VRML

Im Frühjahr 1994 stellten Mark Pesce und Anthony Parisi auf der ersten World Wide Web- Konferenz in Genf ein 3D-Interface namens LABYRINTH vor. Auf derselben Konferenz wurde von WWW-Mitbegründer Tim Berners-Lee und Dave Raggett der Vorschlag gemacht, eine Arbeitsgruppe zur Entwicklung der Virtual Reality Markup Language27 zu bilden. Die Arbeitsgruppe begann nach dem Ende der Konferenz, die neue Sprache sinnvoll zu spezifizieren. VRML sollte prinzipiell das grafische Pendant zu HTML werden, und im wesentlichen drei Ziele verfolgen28:

- Unabhängigkeit von der Hardwareplattform
- beliebig erweiterbar
- mit langsamen Verbindungen noch benutzbar

Als kurz nach der Konferenz von der VRML-Arbeitsgruppe eine Mailingliste zu diesem Thema eingerichtet wurde, übertraf das Echo alle Erwartungen. Mehr als tausend Mitglieder zählte sie innerhalb weniger Tage. Daraufhin wurde beschlossen, bis zur nächsten WWW- Konferenz (1995 in Chicago) den ersten Konzeptentwurf vorzulegen. Deshalb wurden die Anforderungen an die Version 1.0 zurückgeschraubt und es sollten soweit wie möglich bereits vorhandene Technologien verwendet werden. Auf der Suche nach geeigneten Konzepten setzte sich dann das „Open Inventor ASCII File Format“ von Silicon Graphics gegen die Konkurrenten, z.B. OOGL29 von der University of Minnesota oder CDF30 von Autodesk, durch.

Das Inventor File Format wurde freundlicherweise von Silicon Graphics ohne Einschränkungen freigegeben, nachdem ein Mitarbeiter (Gavin Bell) es an die Bedürfnisse von VRML angepaßt hatte. Die Version 1.0 wurde am 03. April 1995 der Öffentlichkeit vorgestellt.

Diese Version war lediglich zur Darstellung von 3D-Grafiken in der Lage, was einem Hauptziel, der Interaktivität, natürlich sehr abträglich war.

Das änderte sich jedoch, als zwei Jahre später VRML 2.0 veröffentlicht wurde. Nun war s möglich interaktive Multi-User-Welten zu entwickeln. Auch Sound-Unterstützung war nun verfügbar. Der große Durchbruch gelang VRML bis jetzt dennoch nicht.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 4.1. VRML 97 - Logo

Das könnte sich jedoch bald ändern, da VRML 2.0 im Jahre 1998 als ISO Standard „VRML 97“ anerkannt worden ist. Nun ist der Weg für die kommerzielle Vermarktung frei, und die Verwalter der VRML-Sprache, das „VRML Consortium Incorporated“, suchen nun verstärkt nach Märkten, die sich bestimmt auch im Bereich „Online Mall“finden werden.

4.2 So funktioniert VRML

Im Kapitel 4.1. haben wir gelesen, daß VRML das grafische Pendant zu HTML sein sollte. HTML ist eine Seitenbeschreibungssprache. Also müßte VRML eine Weltenbeschreib- ungssprache sein, die komplexe Informationen über 3D-Welten in schnell zu übertragenden ASCII-Dateien speichert31.

Jedes VRML-Dokument besteht aus einer Reihe von Objekten, den sog. Nodes, die sich hierarchisch strukturiert gegenseitig beeinflussen können. Früher erzeugte Nodes rangieren vor später erzeugten Nodes. Der Code einer VRML-Datei, die alle die Endung *.wrl (für World) tragen, beginnt per Definition mit folgender Zeile:

#VRML V2.0 ascii

Nodes können z.B. Kugeln, Kegel, Quader oder Pyramiden sein. Diese werden erzeugt, positioniert und ihre Eigenschaften definiert. Die Positionierung erfolgt innerhalb eines rechts-

händigen kartesischen Koordinatensystems (siehe Abb. 4.2.). Längeneinheiten sind in Meter, Winkelangaben in Radianten definiert.

Abbildung in dieser Leseprobe nicht enthalten

Abbildung 4.2. Das kartesische Koordinatensystem

Zum besseren Verständnis sehen wir uns eine Node-Definition innerhalb einer VRML Datei an.

Abbildung in dieser Leseprobe nicht enthalten

Nun werfen wir einen Blick auf das Objekt, das von dieser Definition erzeugt wird:

Abbildung 4.3. VRML-Kegel

Wenn wir nun den Code und das daraus resultierende Bild vergleichen, merkt man gleich, daß hier eine auffallende Ähnlichkeit zur HTML-Verarbeitung besteht.

HTML benötigt, um angezeigt zu werden, eine Applikation, die in der Lage ist, den HTMLCode zu interpretieren. Genauso verhält es sich auch bei VRML.

Der VRML-Browser erhält die VRML-Dateien und zeigt die daraus resultierende Welt an. Der Benutzer kann sich nun mit verschiedenen Bewegungsoptionen (turn, roll, walk, etc.) in der Welt bewegen.

Abbildung 4.4. VRML-Browser des Internet Explorer 4.01

Abbildung in dieser Leseprobe nicht enthalten

Die schnelle Entwicklung der Werkzeuge und Browser schreitet weiter voran. Vermutlich in wenigen Jahren wird VRML zu einem festen Bestandteil des WorldWideWeb werden. Was zum jetzigen Zeitpunkt noch Spielereien sind, mit denen Diplomanden das Potential von VRML veranschaulichen wollen, wird aller Voraussicht nach zu kommerziellen, leistungsfähigen 3D-Anwendungen führen, die das Internet in die dritte Dimension erheben, und die Benutzer dem Ziel der virtuellen Realität einen großen Schritt näher bringen können. Das plastische „global Village“ ist keine Fiktion mehr.

Eine Liste mit Links zu VRML-Welten im Internet finden Sie in Anhang II.

5. Ausblick

Wie wird die Welt der Spiele in Zukunft aussehen? Werden immer mächtigere PCAnwendungen die Spielefans mit immer komplexerer Grafik und beeindruckenden Soundeffekten faszinieren? Oder liegt die Zukunft der Computerspiele im nternet? Werden die Einzelspiele der wachsenden Zahl von Multiplayer-Spielen weichen müssen?

Fragen über Fragen, die sich alle nicht pauschal beantworten lassen. Einmal mehr wird der Markt der Anforderungen und deren Befriedigung den zukünftigen Weg der Banche aufzeigen.

Für den Entwickler bedeutet das, Strömungen der Bedürfnisse der Spielefans, und nicht zuletzt den Zeitgeist zu interpretieren. Eine fast philosophische Aufgabe.

Wir haben in Kapitel 1 schon festgestellt, daß ein Großteil der Spieleentwicklung und des Spielentwurfs mit Psychologie und Ergonomie zu tun hat. In Zukunft werden sich Entwickler also mehr mit diesen Themen beschäftigen müssen, um in der Unterhaltungsbranche, zu der die Spieleindustrie gehört, bestehen zu können. Und Patentrezepte, um ein erfolgreiches, fesselndes Spiel zu entwickeln, sind leider immer noch nicht gefunden.

Zum Schluß möchte ich noch einmal auf eine Frage zurückkommen, mit der wir uns am Beginn dieser Ausarbeitung beschäftigt haben.

„Which is the best way to learn Gameprogramming ?“

Nachdem ich mich nun ausführlich mit diesem Thema beschäftigt habe, kann ich eigentlich auch keine andere Antwort geben als der Profi von Blizzard:

„Let me know, when you’ve found out !“

Abbildungsverzeichnis:

Abbildung 2.1 : „Drahtmodell einer 3D-Szene“ Quelle: Bungartz, H.-J.; Griebel, M.; Zenger, C.: „Einführung in die Computergraphik“

Abbildung 2.2 : „Verbindung von Punkten mittels gerader Kanten“

Abbildung 2.3 : „Verbindung von Punkten mittels einer Spline-Interpolation“

Abbildung 2.4 : „Darstellung eines Körperpunktes mittels Zentralprojektion“ Quelle: Bachmann, Walter M.: „Grafische Datenverarbeitung“ Vorlesungsskript SS 98

Abbildung 2.5 : „3D-Szene nach der Rückseitenentfernung“ Quelle: Bungartz, H.-J.; Griebel, M.; Zenger, C.: „Einführung in die Computergraphik“

Abbildung 2.6 : „3D-Szene nach dem z-Buffering“ Quelle: Bungartz, H.-J.; Griebel, M.; Zenger, C.: „Einführung in die Computergraphik“

Abbildung 2.7 : „3D-Szene mit Texture-Mapping“ Quelle: Bungartz, H.-J.; Griebel, M.; Zenger, C.: „Einführung in die Computergraphik“

Abbildung 3.1 : „Prinzip einer 3D-Engine“

Abbildung 3.2 : „Bestandteile von DirectX“ Quelle: Joffe, David (1999): „David Joffe's Guide to Programming Games with DirectX“

Abbildung 3.3 : „Funktionsweise von DirectX“

Abbildung 3.4 : „OpenGL - Logo“

Abbildung 3.5 : „CAD-Editor des 3D Game Studio“ Quelle: Conitec (1999): „Acknex 3D GameStudio“

Abbildung 3.6 : „Screenshots zweier mit 3D Game Studio entwickelter Spiele“ Quelle: Conitec (1999): „Acknex 3D GameStudio“

Abbildung 4.1 : „VRML 97-Logo “ Quelle: The VRML Consortium Incorporated: „Specifications“

Abbildung 4.2 : „Das kartesische Koordinatensystem“ Quelle: Steinbuch, Andreas: „VRML - Möglichkeiten und Perspektiven“

Abbildung 4.3 : „VRML-Kegel“ Quelle: Steinbuch, Andreas: „VRML - Möglichkeiten und Perspektiven“

Abbildung 4.4 : „VRML-Browser des Internet Explorers 4.01“

Literaturnachweise:

Bücherquellen:

Bungartz, H.-J.; Griebel, M.; Zenger, C.: „Einführung in die Computergraphik“ Braunschweig/Wiesbaden, Vieweg Verlag , 1996

Bibliothek der FH Gießen : DAV 205 176

Pesce, Mark: „VRML - Cyberspace-Welten erkunden und erschaffen“ München, Hanser Verlag , 1997

Bibliothek der FH Gießen : DAV 205 159

Internetquellen:

Conitec (1999): „Acknex 3D GameStudio“ http://www.conitec.de, 15.03.1999

Howland, Geoff (1998): „Game Design - The Essence of Computer Games“ http://www.hient.com , 03.03.1999

Howland, Geoff (1998): „Game Design - The Addiction Element“ http://www.hient.com , 03.03.1999

Howland, Geoff (1998): „Basics of Game AI“ http://www.hient.com , 03.03.1999

Howland, Geoff (1998): „2D vs. 3D: Fight of the Century ?“ http://www.hient.com , 03.03.1999

Joffe, David (1999): „David Joffe's Guide to Programming Games with DirectX“ http://www.geocities.com/SoHo/Lofts/2018 , 12.04.1999

The VRML Consortium Incorporated: „Specifications“ http://www.vrml.org , 16.04.1999

Zeitschriftenquellen:

Eiden,H.; Schmerer, K.; Riske, C. : „Quantensprünge in die Dritte Dimension“ aus PC Professional 5/98

Hansen, Björn: „DirectX - Besseres Multimedia für Windows?“ aus c’t 6/96

Kuntze, Michael: „3D-Grafikstandard OpenGL“ aus c’t 8/94

Sperlich, T.; Bauer, C.: „VRML98 - Die langsame Evolution des dreidimensionalen Netzes“ aus c’t 3/98

Andere Quellen:

Bachmann, Walter M.: „Grafische Datenverarbeitung“

Vorlesungsskript SS 98, FH Gießen-Friedberg, Fachbereich MNI

Steinbuch, Andreas: „VRML - Möglichkeiten und Perspektiven“ Studienarbeit WS 95/96, Universität Karlsruhe

Anhang I: Sourcecode einer *.wrl-Datei (VRML)

Abbildung in dieser Leseprobe nicht enthalten

Anhang II: Links zu VRML-Welten im Internet

VRML Welten von Park Tae Ha

Kleine Sammlung netter, selbst erstellter VRML Umgebungen und Avatare wie Taschenrechner, Auto, Karusell, Schaukel und einer Eule.

http://user.chollian.net/~shupel

Digitaler Garten

Im Rahmen einer Diplomarbeit entstand diese VNet basierte Multiuser-Umgebung einer dreidimensionalen Gartenwelt. http://www.fh-nuertingen.de/~garden/garden.htm

Museum des 21. Jahrhunderts

Digitalworx präsentiert die größte Kulturbaustelle Europas exemplarisch am Neubau des Museum Moderner Kunst Stiftung Ludwig . Die Seite zeigt das Museum des 21. Jahrhunderts. http://195.230.34.62/museumx

Cyber Chicago

Virtuelles Stadtmodell von Chicago. Besonderer Clou: Im VRML-Modell sind Sonnenauf und - untergang realisiert. http://surf.to/rueedi

Neue Gemäldegalerie Berlin

Virtueller Museumsbesuch der Gemäldegalerie der Staatlichen Museen Preußischer Kulturbesitz in Berlin. Wenn mal etwas mehr Download-Kapazität vorhanden ist, ist dies ein äußerst lohnender Link. Ansonsten gestaltet sich das Laden der mehreren hundert Bilder etwas langwierig. http://www.sdf.de/gemaeldegalerie-smpk

Virtuelles Stadtmodell "Alte Synagoge Essen"

An der Universität Essen wurde in einem Projekt des Fachbereichs Vermessungswesen die Alte Synagoge Essen sehr detailgetreu in VRML visualisiert. Zur Datenerfassung wurden photogrammetrische Aufnahmen verwendet. Sehr umfangreicher und schön dokumentierter Site. http://www.vermessung.uni-essen.de/aktuelles/schloss/titel.htm

Sonnensystem

Hier gibt es Wissenswertes rund um unser Sonnensystem zu erfahren. http://www.astronomie.de/vorschau/java

VirtualSOMA

Sie wollten schon immer mal nach San Francisco? Virtuell kein Problem. Besuchen Sie das südliche Areal der Market Street in San Francisco (South of Market Street Area - SOMA). http://www.planet9.com/vrsoma.htm

VRML-Topographiekarten-Generator

Dieser Generator erzeugt Oberflächenmodelle der Erde. Klicken Sie dazu einfach auf einer Weltkarte das gewünschte Gebiet an, und Sie erhalten eine dreidimensionale Karte dieser Region. http://evlweb.eecs.uic.edu/pape/vrml2/etopo 15. April 1999

[...]


1 Nach „Game Design - The Essence of Computer Games“ von Geoff Howland

2 siehe Kapitel 1.4. „Geschichte“

3 Vergl.: „Game Design - The Essence of Computer Games“ von Geoff HOwland

4 Nach „Game Design - The Essence of Computer Games“ von Geoff Howland

5 Nach „Game Design - The Addiction Element“ von Geoff Howland

6 Vergl. Kapitel 1.3. „Gameplay“

7 in der englischen Originalausgabe. Die deutsche Ausgabe trägt den Titel „Scheibenwelt“

8...oder Spielfiguren, aber da für den Spieler die Spielfiguren Menschen darstellen und auch als solche akzeptiert werden, werde ich diese Begriffe nicht differenzieren.

9 Vergl.: „Game Design - The Essence of Computer Games“ von Geoff Howland.

10 bei „Tombraider“ wird es demnächst eine Weltpremiere geben, nämlich den ersten Kinofilm angelehnt an ein PC-Spiel. Die reale Lara Croft ist schon gefunden und im nächsten Jahr wird der Film „Tombraider“ in die Kinos kommen. Man darf, wenn man das Spiel kennt, besonders auf die Dialoge gespannt sein.

11 Nach „Basics of Game AI“ von Geoff Howland

12 Vergl.: „Game Design - The Essence of Computer Games“ von Geoff Howland.

13 Siehe: Kapitel 2.2. „So funktioniert 3D-Grafik“

14...und Ansichten von oben, bzw. unten aus verschiedenen Winkeln gar nicht erst berücksichtigt.

15 Siehe Kapitel 1.2. „Interface“

16 Im Moment sieht es so aus, als würden sich OpenGL, Direct3D, Glide, etc. in Zukunft noch heftig Konkurrenz machen. Eine echte Standardisierung ist nicht abzusehen.

17 Vergl.: Bungartz, H.-J.; Griebel, M.; Zenger, C. (1996): „Einführung in die Computergraphik“, S. 2f

18 Siehe „Mapping“ S. 20.

19 Aus: Bu ngartz, H.-J.; Griebel, M.; Zenger, C. (1996): „Einführung in die Computergraphik“, Farbtafel 27 im Bildteil.

20 Bei der Zentralprojektion entsprechen die x- und y -Achsen der Projektionsebene denen des Monitors. Die z-Achse entspricht der Hauptblickrichtung. Zum Verständnis des Prinzips ist die vereinfachte Darstellung ausreichend und weniger verwirrend.

21 WYSIWYG = what you see, ist what you get. So bezeichnet man grafische Anwendungen, in denen eine Szene mittels Drag’n Drop erstellt werden kann, und der Entwickler keine Programmierkenntnisse benötigt.

22 Dieser Punkt ist besonders wichtig, seit in letzter Zeit exotische Eingabegeräte für bestimmte Spieletypen in Mode gekom-men sind, z.B. Lenkräder für Rennspiele oder spezielle Joysticks mit Schubhebeln für Flugzeug-Simulatoren.

23 Hardware Abstraction Layer

24 Hardware Emulation Layer

25 WYSIWYG = What you see, is what you get.

26 Siehe Kapitel 2.2. „Mapping“

27 Der Name wurde später in Virtual Reality Modeling Language geändert, um dem 3D-Charakter von VRML gerecht zu werden.

28 Vergl.: Steinbuch, Andreas: „VRML– Möglichkeiten und Perspektiven“

29 Object Oriented Geometry Language

30 Cyberspace Development Format

31 Ein Beispiel für eine VRML-Datei finden sie in Anhang I

Ende der Leseprobe aus 43 Seiten

Details

Titel
Spieleprogrammierung
Hochschule
Fachhochschule Gießen-Friedberg; Standort Gießen
Veranstaltung
Allgemeines Seminar
Autor
Jahr
1999
Seiten
43
Katalognummer
V96287
ISBN (eBook)
9783638089630
Dateigröße
2046 KB
Sprache
Deutsch
Schlagworte
Spieleprogrammierung, Allgemeines, Seminar, Professoren, Prof, Kaufmann, Prof, Scheer, Gießen, Friedberg
Arbeit zitieren
Matthias Merz (Autor:in), 1999, Spieleprogrammierung, München, GRIN Verlag, https://www.grin.com/document/96287

Kommentare

  • Noch keine Kommentare.
Blick ins Buch
Titel: Spieleprogrammierung



Ihre Arbeit hochladen

Ihre Hausarbeit / Abschlussarbeit:

- Publikation als eBook und Buch
- Hohes Honorar auf die Verkäufe
- Für Sie komplett kostenlos – mit ISBN
- Es dauert nur 5 Minuten
- Jede Arbeit findet Leser

Kostenlos Autor werden