AXAGE – Die ABAP Text Adventure Game Engine

AXAGE – Die ABAP Text Adventure Game Engine

Lernprojekte müssen Spaß machen und brauchen einen Namen. Die neueste Fingerübung ist AXAGE, eine ABAP teXt Adventure Game Engine. Mit diesem Framework soll es möglich sein, einfache Text-Adventures selbst zu schreiben. Die Game Engine selbst soll bzw. kann auch noch weiterentwickelt werden.

AXAGE – Eine ABAP teXt Adventure Game Engine

Ich wollte herausfinden, wie schwer es ist, einen einfachen Parser zu schreiben und typische Elemente eines Adventures zu verwalten. Aufgrund der grafischen Unzulänglichkeiten des SAP-Systems konnte leider nur ein Text Adventure daraus werden.

Befehle

Es ist zur Zeit möglich, mit den folgenden Befehlen zu interagieren:

N or NORTH        Go to the room on the north side
E or EAST         Go to the room on the east side
S or SOUTH        Go to the room on the south side
W or WEST         Go to the room on the west side
MAP               show floor plan/ world

INV or INVENTARY  Show everything you carry
LOOK              Look what''s in the room
LOOK <object>     Have a closer look at the object in the room or in your inventory
TAKE <object>     Take object in the room
DROP <object>     Drop an object that you carry
OPEN <object>     Open something that is in the room

ASK <person>      Ask a person to talk to you

Einige Befehle können einzeln angewendet werden (LOOK, INV, MAP sowie Richtungsangaben), andere Befehle müssen in Zwei-Wort-Sätzen gegeben werden:

  • TAKE BOOK
  • OPEN BOX
  • LOOK CHEST

Avanti, Avanti! Beweg dich!

Im Coding sind die Räume definiert, die in dem Spiel existieren. Zu jedem Raum wird festgelegt, in welcher Richtung Durchgänge zu anderen Räumen sind und welche Gegenstände und Personen sich in dem Raum befinden.

Der Befehl MAP zeichnet eine statische Landkarte, mit der sich die spielende Person orientieren kann. Ich hätte gerne eine dynamische Karte erstellt, die sich aus der Definition der Räume ergibt, aber das ist leider nicht so ohne weiteres möglich, denn es ist nicht definiert, wie groß die einzelnen Räume sind.

MAP

Mit dem Befehl LOOK kann man sich umsehen und so Sachen entdecken, die man vielleicht näher untersuchen sollte…

Dinge

In dem Spiel sind Dinge vorhanden. Bisher kann man alle Dinge auch nehmen, einstecken und woanders wieder ablegen. Es soll aber in einer der nächsten Versionen auch möglich sein, dass Dinge nicht getragen werden können. Stattdessen können sie aber vielleicht bewegt, geschoben oder gekippt werden. Die Definition, welche Aktion mit einem Möbel-Ding möglich ist, sollte nicht so schwer sein. Schwieriger wird die Definition des Resultats, also was soll passieren, wenn die richtige Aktion auf das Ding angewendet wurde.

Interaktion

Dinge können bisher getragen (TAKE), weggeworfen (DROP) oder betrachtet werden (LOOK DING). Einige Dinge können auch geöffnet werden. Wenn ein Objekt geöffnet wird, können sich andere Dinge darin befinden.

Objekte, die man findet, werden automatisch genommen und ins Inventar gepackt (Befehl INV). So kann man immer sehen, welche Dinge man mit sich herum trägt. Das Adventure besteht dann darin, alle möglichen Objekte zu finden und sie richtig anzuwenden.

Akteure

Aktuell können Akteure (Personen, Monster, Gegner, usw) definiert werden. Sie können aber nur eine Antwort geben, wenn sie gefragt werden (Befehl ASK). Sie können also bereits Tipps geben. Sinnvoll wäre es jedoch, wenn man Akteuren auch etwas geben oder etwas von ihnen erhalten könnte.

Game Play – It’s your turn

Die Grundlagen für das Framework sind also einerseits geschaffen, so dass kleinere Adventures programmiert werden können. Andererseits kann die Game Engine noch um viele Dinge erweitert werden:

  • Interaktion mit Akteuren
    • Dinge geben
    • Dinge erhalten
  • Erweiterung des Parsers, so dass dieser auch Sätze mit mehr als zwei Wörtern versteht und eventuell sogar mehrere Kommandos aneinander gekettet werden können:
    • TAKE BOX AND OPEN BOX AND THEN TAKE RING AND GIVE RING TO GANDALF

Des Weiteren sind auch technische Anpassungen möglich, an denen man sich versuchen kann:

  • Erstellen einer SAPUI5-Anwendung
  • Absicherung der Funktionen durch Unit Tests

Je mehr man sich im Detail damit beschäftigt, desto mehr Dinge fallen einem wahrscheinlich auf.

Aufgabe

An dieser Stelle gibt es keine klare Aufgabe. Du musst dir selbst aussuchen, womit du beginnen möchtest.

Coding

Das Coding liegt in Github. Du kannst es dir mit AbapGit in dein SAP-System herunterladen:

ennoadm

Verwandte Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Read also x