[ t e x t f i r e . d e - Startseite ]

Sitemap
Druckversion


Werkstatt

NPC-Bibliotheken für Inform 6

Andere Personen im Spiel (non-player characters, NPC) müssen sorgfältig implementiert werden, wenn sie nicht stereotyp sein sollen. Inform bietet einige Bibliotheken, die die Arbeit mit NPCs erleichtern.

Für Inform gibt es eine ganze Anzahl von Bibliotheken [1]. Darunter auch einige für NPCs, mit denen sich deren Bewegung oder die Konversation mit ihnen steuern lässt. Die besprochenen Bibliotheken liegen bislang nur auf Englisch vor.


NPC-Engine von Volker Lanz

Die NPC-Engine ist die größte Bibliothek für Inform mit einem umfangreichen Repertoire:

  • NPCs bewegen sich automatisch entlang vorgegebenen Pfaden (»U-Bahn-Linien«) und können so den kürzesten Weg zu einem bestimmten Raum finden.

  • NPCs merken sich, wann sie einem anderen NPC zum letzten Mal begegnet sind. Der Spielercharakter merkt sich ebenfalls, wen er wo zum letzten Mal gesehen hat.

  • NPCs sind in benachbarten Räumen oder durch Glasfenster zu sehen und man kann ihnen folgen.

Zusätzliche Funktionalität kann durch Einbinden der Bibliothek npcwait erreicht werden: Der Spieler kann auf die Aktion eines NPCs warten.

Die Bibliothek ist gut durch eine HTML-Hilfe dokumentiert und übersichtlich programmiert. Leider erfordert eine Anpassung ans Deutsche - z.B. bei Standardantworten - einen gewissen Aufwand.

Die NPC-Engine ist sicherlich das Nonplusultra unter den NPC-Biblioteken für Inform. Wer komplexe Bewegungen - etwa für Verfolgungsjagden - benötigt, dem ist die NPC-Engine durchaus zu empfehlen. Durch die Größe der Bibliothek lohnt sich ein solcher Aufwand jedoch nur bei Adventures, die entweder viele NPCs oder einige sehr komplexe besitzen. (Die NPC-Engine wurde für ein Remake des Detektivspiels Deadline geschrieben.)


Moveclass von Neil Brown und Alan Trewartha

Moveclass ist fast schon ein Klassiker unter den Bibliotheken und macht durch seine Verzahnung mit der Bibliothek follower das Verfolgen von NPCs möglich macht.

Wie der Name schon sagt, liegt der Schwerpunkt bei Moveclass auf Bewegungen von NPCs. Neben der Bewegung entlang vorgegebenen Pfaden wie bei der NPC-Engine kann man NPCs auf zufällig bestimmten Pfaden wandern lassen. Besonders interessant ist die Option, Türen von bestimmten NPCs öffnen zu lassen oder auch nicht. Eine umfangreiche Hilfe mit Beispielen erklärt die Funktionen der Klasse.

Moveclass deckt die Grundbedürfnisse der meisten Autoren vollkommen ab, wenn es um sich bewegende NPCs geht. Während die NPC-Engine sicherlich höchsten Ansprüchen genügt, so ist Moveclass in vielen Spielen wahrscheinlich die ausreichende Lösung.


converse von L. Ross Raszewski

Wer etwas mehr Konversation haben will, kann zur converse-Klasse greifen, die ein objektorientiertes Konversationssystem mit Menüs bietet. converse ist sehr elegant und bietet auch bei vielen NPCs die Möglichkeit, bestimmte Standardthemen zusammenfassend zu behandeln. Die Klasse ist dabei relativ klein, muss allerdings noch ins Deutsche umgesetzt werden, will man sie in einem deutschen Adventure verwenden.

Wer menübasierte Konversationen mag, dem sei diese Bibliothek empfohlen.


phototalk von Adam Cadre und phtalkoo von David Glasser

phototalk ist eigentlich ein Codebeispiel, das menübasierte Konversation verdeutlichen soll, während phtalkoo die daraus entstandene Bibliothek ist.

Jeder NPC wird einer Klasse zugeordnet und kann anhand eines einfachen Systems voreingestellte Fragen gestellt bekommen und diese entsprechend beantworten. Je nach Fragen können die Konversationen eine bestimmte Richtung einnehmen. Das Prinzip sollte aus verschiedenen Grafikadventures bekannt sein.

phtalkoo ist zwar leicht zu bedienen, kann allerdings ein wenig unübersichtlich sein, wenn die Frage-Antwort-Folgefragen-Blöcke komplizierter werden. Interessant ist auch die Möglichkeit, Fragen erst später im Spiel hinzuzuschalten. Schwachpunkt der Bibliothek ist die zum Teil etwas unelegante Programmierung der Library, converse liegt hier klar weiter vorn.


AskTellOrder von Irene Callaci

Diese Bibliothek formt Befehle, welche über »tell« oder »ask« zum Parser gelangen, zu Anweisungen an den NPC um. So wird »tell Hans to get up« zu »Hans, get up«. Damit wird dem Programmierer einiges an Arbeit erspart, da er Gespräche komplett im orders-Block einer Person behandeln kann. Die Umsetzbarkeit für deutsche Spiele hält sich allerdings in Grenzen.

 

Auffälligerweise fehlt eine Bibliothek, die die eingabebasierte Konversation wesentlich vereinfacht. AskTellOrder macht zwar einen Schritt in die richtige Richtung, das allerdings nur bei Befehlen. Wer etwas Besseres sucht, kann den Quellcode von Christminster einmal unter die Lupe nehmen, vor allem die Datei minster.inf ab Zeile 1127 [2]. Ein Sammelobjekt Topics enthält hier die Einzelthemen. Dieses System ließe sich leicht zu einer mächtigen NPC-Engine ausbauen, indem die description-Property für Standardantworten der NPCs verwendet wird, oder weitere Properties für schon beantwortete oder noch unbekannte Themen stehen. In meinem geplanten Adventure Das Sonnenrad werde ich ein solches System einsetzen.

Die Arbeit, gute NPCs zu erschaffen, ist mit Hilfe der Bibliotheken immer noch eine große Herausforderung, aber die Programmbibliotheken nehmen dem Autor die langweiligen Routineaufgaben ab, so dass er sich besser auf die Geschichte zu konzentrieren kann.

________
[1]Die Bibliotheken befinden sich in der IF-Library.
[2] Der Quelltext von Christminster ist hier erhältlich.

02.02.2003, Max Kalus

 
[nach oben]