Textadventures

Transcription

Textadventures
Textadventures
Ein Referat von Robin Halfkann und Oliver Hummel
Textadventures
Einführung
1.
Einführung in Textadventures/Interactive Fiction
1.
2.
3.
2.
3.
4.
5.
Was ist ein Textadventure?
Roleplay vs. Interactive Fiction
„GetLamp“ Trailer
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
Let‘s play: „Verloren in der Zeit“
Fazit
Textadventures
Geschichte
Zeitlinie
Planet Mephius
1983
Labyrinth
1985
Déjà Vu
1986
1987
1990
Textadventures
Geschichte
1.
2.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
1.
3.
4.
5.
Zeitlinie
Technik: Implementierung in Prolog und Javascript
Let‘s play: „Verloren in der Zeit“
Fazit
Textadventures
Geschichte
Zeitlinie
Colossal Cave
Adventure
1976
1977
1978
1979
1980
Textadventures
Geschichte
Colossal Cave Adventure
Textadventures
Geschichte
Colossal Cave Adventure
Colossal Cave Adventure ist das erste Textadventure
Wird 1976 von William Crowther veröffentlicht
Textadventures
Geschichte
Colossal Cave Adventure
Textadventures
Geschichte
Colossal Cave Adventure
Colossal Cave Adventure ist das erste Textadventure
Wird 1976 von William Crowther veröffentlicht
Crowther ist begeisterter Höhlenwanderer
Das Spiel verbreitet sich dank des ARPANET recht schnell
Textadventures
Geschichte
Zeitlinie
Colossal Cave
Adventure
1976
1977
Zork
1978
1979
1980
Textadventures
Geschichte
Colossal Cave Adventure
Textadventures
Geschichte
Zork
Zork ist einer der bekanntesten Vertreter der Interactive
Fiction
Intelligentere Grammatik, erkennt Präpositionen
Textadventures
Geschichte
Zeitlinie
Colossal Cave
Adventure
1976
Adventureland
1977
Zork
1978
1979
1980
Textadventures
Geschichte
Colossal Cave Adventure
Textadventures
Geschichte
Adventureland
Adventureland ist „Adventure“ für Heimcomputer
Scott Adams verwertet das Genre als Erster kommerziell
Textadventures
Geschichte
Zeitlinie
Colossal Cave
Adventure
1976
Adventureland
1977
Zork
1978
1979
Infocom
1980
Textadventures
Geschichte
Textadventures
Geschichte
Infocom ist bekannt für anspruchsvolle Interactive Fiction
Textadventures
Geschichte
Textadventures
Geschichte
Infocom ist bekannt für anspruchsvolle Interactive Fiction
Infocoms Adventure laufen in einer Virtuellen Maschine
Übernahme durch Activision im Jahr 1986
Textadventures
Geschichte
Zeitlinie
Colossal Cave
Adventure
1976
Adventureland
1977
Zork
1978
On-Line Systems
1979
Infocom
1980
Textadventures
Geschichte
Colossal Cave Adventure
Textadventures
Geschichte
Colossal Cave Adventure
Textadventures
Geschichte
On-Line Systems
Mystery House und Wizard and the Princess gelten als erste
Grafik Textadventures
Entwickelt von Ken und Roberta Williams
Textadventures
Geschichte
1.
2.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
1.
2.
3.
4.
5.
Zeitlinie
Die Entwicklung zum Point and Click Adventure
Technik: Implementierung in Prolog und Javascript
Let‘s play: „Verloren in der Zeit“
Fazit
Textadventures
Geschichte
Colossal Cave Adventure
Textadventures
Geschichte
Planet Mephius
Japanisches Adventure, erschien für Fujitsu FM-7
Verwendet als erstes Spiel ein Point-and-Click Interface
Textadventures
Geschichte
Zeitlinie
Planet Mephius
1983
1985
Déjà Vu
1986
1987
1990
Textadventures
Geschichte
Colossal Cave Adventure
Textadventures
Geschichte
Déjà Vu
GUI Betriebssysteme verhelfen Point-and-Click Adventures zum
Durchbruch
Drastisch reduziertes Vokabular im Vergleich zu Textadventures
Textadventures
Geschichte
Zeitlinie
Planet Mephius
1983
Labyrinth
1985
Déjà Vu
1986
1987
1990
Textadventures
Geschichte
Zeitlinie
Planet Mephius
1983
Labyrinth
1985
Déjà Vu
1986
1987
1990
Textadventures
Geschichte
Zeitlinie
Planet Mephius
1983
Labyrinth
1985
Déjà Vu
1986
1987
Maniac Manson
1990
Textadventures
Geschichte
Colossal Cave Adventure
Textadventures
Geschichte
Maniac Manson
Erstes Lucas Arts Point and Click Adventure
Die NES Version wurde stark geschnitten
1990 startet Maniac Manson als TV Serie
Textadventures
Geschichte
Zeitlinie
Planet Mephius
1983
Monkey Island
Labyrinth
1985
Déjà Vu
1986
1987
Maniac Manson
1990
Textadventures
Geschichte
Colossal Cave Adventure
Textadventures
Geschichte
Monkey Island
Monkey Island prägt das Adventure Genre nachhaltig
Cineastischer Aufbau des Skripts
Textadventures
Geschichte
1.
2.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
1.
2.
3.
3.
4.
5.
Zeitlinie
Die Entwicklung zum Point and Click Adventure
Adventures in 3D: First Person und Action Adventures
Technik: Implementierung in Prolog und Javascript
Let‘s play: „Verloren in der Zeit“
Fazit
Textadventures
Geschichte
Zeitlinie
Indiana Jones
The last Crusade
1989
1993
1996
Textadventures
Geschichte
Zeitlinie
Planet Mephius
1983
Labyrinth
1985
Déjà Vu
1986
1987
1990
Textadventures
Geschichte
Zeitlinie
Indiana Jones
The last Crusade
1989
1993
Myst
1996
Textadventures
Geschichte
Colossal Cave Adventure
Textadventures
Geschichte
Myst
Myst ist das erste First Person Adventure in 3D
Vorgerenderte Grafiken ermöglichen große Detailtreue
Das Spiel ist wegen seiner zu ruhigen Atmosphäre umstritten
Textadventures
Geschichte
Zeitlinie
Indiana Jones
Tomb Raider
The last Crusade
1989
1993
Myst
1996
Textadventures
Geschichte
Colossal Cave Adventure
Textadventures
Geschichte
Tomb Raider
Tomb Raider gilt als das erste Moderne Action Adventure
Dialog basierte Adventures verlieren allmählich an Boden
Textadventures
Technik
1.
2.
3.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
1.
4.
5.
Ablaufdiagramm
Let‘s play: „Verloren in der Zeit“
Fazit
Textadventures
Technik
Initialisierung
Texteingabe
Parser
Bekannt
Unbekannt
Switch
Fehler
Parameter
Zustandsprüfung
Programm Ende
Zustandsänderung
Aktion
Textadventures
Technik
1.
2.
3.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
1.
2.
4.
5.
Ablaufdiagramm
Erstellen einer Datenbasis
Let‘s play: „Verloren in der Zeit“
Fazit
Textadventures
Technik
Erstellen einer Datenbasis
Die Datenbasis beschreibt die „Spielwelt“
Gegenstände, Räume, usw.
Zustände
Enthält sowohl statische als auch dynamisch veränderbare
Daten
Statisch: zum Beispiel Räume, Türen oder feste Gegenstände
Dynamisch: Position des Spielers, aufnehmbare Gegenstände, Inventar,
etc.
Textadventures
Technik
Datenbasis: Einfaches Beispiel in Prolog
Zwei Räume, Zimmer und Flur
Eine Tür, welche die Räume verbindet
Zwei Gegenstände im Zimmer: Schreibtisch, Schrank
Schreibtisch
Schrank
Tür
Flur
Zimmer
Textadventures
Technik
Datenbasis: Einfaches Beispiel in Prolog
Räume, Gegenstände und Türen werden durch Prädikate definiert
Türen erfordern zusätzlich eine Regel, um festzulegen, dass es sich um
beidseitige Verbindungen zwischen Räumen handelt
Schreibtisch
Schrank
Tür
Flur
Zimmer
Textadventures
Technik
„Umsehen“-Funktion: Eine erste Abfrage der
Datenbasis
Anforderungen
Es werden keine Parameter benötigt
Abfragen aller Gegenstände aus der Datenbasis, die sich am
aktuellen Standort befinden
Zutreffende Gegenstände auflisten
Abfragen aller möglichen Verbindungen des Standorts zu
anderen Räumen aus der Datenbasis
Mögliche Verbindungen auflisten
Alternativ: Vordefinierten Beschreibungstext zum aktuellen Standort
aus der Datenbasis abfragen und ausgeben
Textadventures
Technik
Datenbasis
Implementierung in Javascript
Die Datenbasis wird mittels Raumabhängigen Objekten
realisiert
room[1][1].name = "Startraum";
room[1][1].look = "Du bist im Startraum";
room[1][1].content =[ "ding", "schlüssel"];
room[1][1].exits =[ "süden"];
room[1][1].usable =[ "handtuch"];
room[1][1].usecond =[ "ding"];
room[1][1].usemsg =[ "Du musst erst das Ding nehmen", "Du hast das Handtuch benutzt"];
room[1][1].exitcond =[ "trocken"];
room[1][1].exitlock =[ "süden"];
room[1][1].exitkey =[ "schlüssel"];
room[1][1].exitmsg =[ "Du willst das Handtuch benutzen"];
Textadventures
Technik
Datenbasis
Implementierung in Javascript
Die Datenbasis wird mittels Raumabhängigen Objekten
realisiert
Unterscheidung von statischen und dynamischen
Gegenständen erfolgt zur Laufzeit
Textadventures
Technik
„Umsehen“ Funktion
Implementierung in Javascript
Der Aufbau der Funktion look() in drei Schritten:
1.
2.
3.
Prüfen ob Gegenstände in dem aktuellen Raum vorhanden sind
Feststellen wo sich Ausgänge (Türen) befinden
Auf eventuell vorhandene NPCs prüfen
Rückgabe der Informationen
Textadventures
Technik
1.
2.
3.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
1.
2.
3.
4.
5.
Ablaufdiagramm
Erstellen einer Datenbasis
Zustandsänderungen am Beispiel der „Gehe nach“-Funktion
Let‘s play: „Verloren in der Zeit“
Fazit
Textadventures
Technik
Zustandsänderungen am Beispiel der „Gehe
nach“-Funktion
Die Funktion bekommt den Ort (bzw. Raum) übergeben, in
welchen der Spieler gehen möchte
Anforderungen:
Überprüfen, ob der gewünschte Ort vom aktuellen Standort erreichbar ist
Wenn ja
Aktualisieren des Datensatzes für den aktuellen Standort
Bestätigung bzw. neuen Standort und ggf. passende Beschreibung ausgeben
Andernfalls
Fehlermeldung ausgeben
Textadventures
Technik
„gehe nach“: Umsetzung in Prolog
„hier“-Prädikat muss als dynamisch deklariert werden, damit
es zur Laufzeit manipuliert werden kann
Benötigt:
„raum_erreichbar“-Prädikat
„standort_aendern“-Prädikat
Textadventures
Technik
„Gehe nach“-Funktion
Implementierung in Javascript
Generierung aller möglichen Orte zur Laufzeit
Zwei Funktionen:
Funktion go(input) generiert mögliche Richtungen zur Laufzeit und prüft
auf korrekte Eingabe
Funktion playerPosition(direction) prüft zuerst ob „gehen“ Bedingungen
erfüllt sind
Wenn ja, wird Position des Spielers aktualisiert und ggf. ein Hinweis auf
NPCs gegeben
Textadventures
Technik
1.
2.
3.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
1.
2.
3.
4.
4.
5.
Ablaufdiagramm
Erstellen einer Datenbasis
Zustandsänderungen am Beispiel der „Gehe nach“-Funktion
Das Inventar
Let‘s play: „Verloren in der Zeit“
Fazit
Textadventures
Technik
Inventar
Erweitert die Interaktion mit der Umgebung um die Möglichkeit,
Gegenstände aufzunehmen
Benötigt einen dynamisch veränderbaren Datensatz sowie
mindestens eine Funktion, um Gegenstände hinzuzufügen und
sinnvollerweise eine Funktion, um das Inventar aufzulisten
Je nach Anforderung und Umfang des Spiels können weitere
Funktionen wie z.B. das Ablegen von Gegenständen ergänzt
werden
Textadventures
Technik
„Nimm Gegenstand“-Funktion
Anforderungen
Überprüfen, ob der gewünschte Gegenstand sich am aktuellen
Standort befindet
Wenn ja
Dynamischen Eintrag der Datenbasis entfernen, welcher den Gegenstand mit
dem Ort verknüpft
Dynamischen Eintrag für den neuen Gegenstand im Inventar der Datenbasis
hinzufügen
Bestätigung ausgeben
Andernfalls
Fehlermeldung ausgeben
Textadventures
Technik
„Nimm Gegenstand“-Funktion
Implementierung in Prolog
„gegenstand_nehmen“-Prädikat:
Aufgenommene Gegenstände werden in „besitz/1“-Prädikaten
gespeichert, welche dynamisch zur Laufzeit hinzugefügt werden
Gleichzeitig werden die entsprechenden „enthaelt/2“-Prädikate des
Raumes entfernt
„gegenstand_aufnehmbar“-Prädikat:
Prüft, ob sich der Gegenstand im gleichen Raum wie der Spieler befindet
Textadventures
Technik
„Nimm Gegenstand“-Funktion
Implementierung in Javascript
Hier findet ebenfalls zunächst eine Prüfung statt
Fällt sie positiv aus, wird der Eintrag aus der Datenbasis
entfernt und dem Inventory Array hinzugefügt
Textadventures
Technik
1.
2.
3.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
1.
2.
3.
4.
5.
4.
5.
Ablaufdiagramm
Erstellen einer Datenbasis
Zustandsänderungen am Beispiel der „Gehe nach“-Funktion
Das Inventar
Puzzles
Let‘s play: „Verloren in der Zeit“
Fazit
Textadventures
Technik
Puzzles
Stellen Rätsel innerhalb des Spielablaufs dar.
Führen Bedingungen ein, die z.B. an das Betreten von
Räumen oder das Finden oder Benutzen von Gegenständen
geknüpft werden können
Beispiel: Eine Tür kann erst geöffnet werden, wenn sich der
entsprechende Schlüssel im Inventar befindet
Textadventures
Technik
Puzzles
Implementierung in Prolog
Ein weiterer Raum, „Keller“, wird ergänzt und über eine Tür mit dem Flur
verbunden
Soll erst dann betreten werden können, wenn der Spieler den Schlüssel aus
dem Schrank eingesammelt hat
Schreibtisch
Schrank
Tür
Flur
Zimmer
Tür
Keller
Textadventures
Technik
Puzzles
Implementierung in Javascript
Es gibt drei Arten von Puzzles:
1.
2.
3.
Bedingungen um einen Raum zu verlassen
Bedingungen um mit einer Person zu sprechen
Siegbedingung
Realisierung durch Prüffunktionen an Knotenpunkten:
removeExitCondition(), checkKeys() in playerPositon(direction)
Innerhalb der speak(input) Funktion
Siegbedingung wird in der main() Funktion geprüft
Textadventures
Technik
1.
2.
3.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
1.
2.
3.
4.
5.
6.
4.
5.
Ablaufdiagramm
Erstellen einer Datenbasis
Zustandsänderungen am Beispiel der „Gehe nach"-Funktion
Das Inventar
Puzzles
Aufbau des Parsers
Let‘s play: „Verloren in der Zeit“
Fazit
Textadventures
Technik
Parser
Nimmt Eingaben des Spielers entgegen
Versucht anhand bekannter Phrasen und Muster die
Eingabe einem bekannten Befehl zuzuordnen
Umsetzung in Prolog
Grammatik kann durch DCG-Ausdrücke definiert werden
Eingabe wird in Liste eingelesen...
...und anhand der gegebenen Grammatik auf Gültigkeit
geprüft
Anhand des vorhandenen Befehlssatzes wird versucht, die
Eingabe semantisch zu Interpretieren
Textadventures
Technik
Parser
Implementierung in Javascript
Die Auswertung der Spielereingabe wird unterteilt in
Parsen: „Regular Expressions“ initieren pattern matching
Vorgabe des Parser ist generisch, sobald ein Muster erkannt wird, ist die
Bedingung erfüllt
Dadurch wird z.B. „umgehen des Stuhls im Süden“ positiv erkannt,
obwohl semantisch etwas anderes gemeint ist
Interpretieren: Funktionsaufruf via switch
Switch/Case erkennt 10 Befehle, die entsprechende Funktionen aufrufen
Textadventures
Technik
1.
2.
3.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
1.
2.
3.
4.
5.
6.
7.
4.
5.
Ablaufdiagramm
Erstellen einer Datenbasis
Zustandsänderungen am Beispiel der "Gehe nach"-Funktion
Das Inventar
Puzzles
Aufbau des Parsers
Mainloop
Let‘s play: „Verloren in der Zeit“
Fazit
Textadventures
Technik
Mainloop
Steuert den Ablauf des Programms
Fragt Benutzereingaben ab und übergibt diese an den Parser
Prüft ob die Gewinnbedingung erfüllt wurde und beendet ggf.
die Schleife
Textadventures
Technik
Mainloop
Umsetzung in Prolog
Die Schleife wird mit dem repeat-Prädikat von Prolog realisiert
Schlägt nie fehl, sobald es einmal aufgerufen wurde
Schleife ähnelt einer „do-while“-Schleife, wie sie aus anderen
Programmiersprachen bekannt ist
-> Solange die Bedingung zum Beenden nicht erfüllt ist, werden Befehle geparst
call
exit
repeat
call
exit
call
fail
call
redo
fail
exit
exitcondition
ausfuehren
befehl_parsen
redo
exit
redo
fail
redo
Textadventures
Technik
1.
2.
3.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
1.
2.
3.
4.
5.
6.
7.
8.
4.
5.
Ablaufdiagramm
Erstellen einer Datenbasis
Zustandsänderungen am Beispiel der "Gehe nach"-Funktion
Das Inventar
Puzzles
Aufbau des Parsers
Mainloop
Crowthers Colossal Cave Adventure in Fortran für DEC PDP 10
Let‘s play: „Verloren in der Zeit“
Fazit
Textadventures
Technik
Colossal Cave Adventure
Fortran
C ADVENTURES
IMPLICIT INTEGER(A-Z)
REAL RAN
COMMON RTEXT,LLINE
DIMENSION IOBJ(300),ICHAIN(100),IPLACE(100)
1 ,IFIXED(100),COND(300),PROP(100),ABB(300),LLINE(1000,22)
2 ,LTEXT(300),STEXT(300),KEY(300),DEFAULT(300),TRAVEL(1000)
3 ,TK(25),KTAB(1000),ATAB(1000),BTEXT(200),DSEEN(10)
4 ,DLOC(10),ODLOC(10),DTRAV(20),RTEXT(100),JSPKT(100)
5 ,IPLT(100),IFIXT(100)
C READ THE PARAMETERS
Textadventures
Fazit
1.
2.
3.
4.
5.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
Let‘s play: „Verloren in der Zeit“
Fazit
1.
Künstliche Intelligenz
Textadventures
Fazit
Bezug zur künstlichen Intelligenz
Textadventures können als einfache modellbasierte ReflexAgenten angesehen werden
Datenbasis repräsentiert Modell der Welt
Aktionen und Eingaben des Spielers führen zur Aktualisierung des Modells
Textadventures
Fazit
1.
2.
3.
4.
5.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
Let‘s play: „Verloren in der Zeit“
Fazit
1.
2.
Künstliche Intelligenz
Textadventures Heute
Textadventures
Fazit
Textadventures heute
Popularität von Textadventures ging mit dem Aufkommen von
Grafikbasierten Computersystemen stark zurück
Dennoch hielt sich eine Nische von Interactive FictionBegeisterten
Textadventures
Fazit
1.
2.
3.
4.
5.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
Let‘s play: „Verloren in der Zeit“
Fazit
1.
2.
3.
Künstliche Intelligenz
Textadventures Heute
Onlineresourcen
Textadventures
Geschichte
Inform
Inform 7 vewendet natürliche Sprache zum erstellen von
Textadventures.
Textadventures
Fazit
Textadventures heute
Popularität von Textadventures ging mit dem Aufkommen von
Grafikbasierten Computersystemen stark zurück
Dennoch hielt sich eine Nische von Interactive FictionBegeisterten
Textadventures gehören zu den wenigen Computerspielen, die
von Blinden gespielt werden können
Ausblick: Mögliche Renaissance auf Plattformen wie iPad oder
Kindle
Textadventures
Fazit
1.
2.
3.
4.
5.
Einführung in Textadventures/Interactive Fiction
Geschichte: Meilensteine der Entwicklung
Technik: Implementierung in Prolog und Javascript
Let‘s play: „Verloren in der Zeit“
Fazit
1.
2.
3.
Künstliche Intelligenz
Textadventures Heute
Onlineresourcen
Textadventures
Fazit
Links
Colossal Cave Adventure: http://www.rickadams.org/adventure
http://www.digitalhumanities.org/dhq/vol/001/2/000009/000009.html
Infocom Adventures:
http://pot.home.xs4all.nl/infocom/
GetLamp Doku: http://www.youtube.com/watch?v=LRhbcDzbGSU
Informationen zu Adventuren http://brasslantern.org/
Großes Archiv: http://www.ifarchive.org/
Inform7: http://inform7.com
Hitchhikers Guide through the Galaxy enhanced:
http://www.bbc.co.uk/radio4/hitchhikers/game.shtml

Similar documents