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