Eigene Soloabenteuere für Alexa erstellen

Der Alexa "Rollenspiel" Skill erlaubt es eigene Soloabenteuer zu erstellen und zu veröffentlichen. Die Abenteuer werden dabei als Textdatei erstellt. Das Format ist vorgegeben und wird in dieser Anleitung erläutert.

Im Browser kannst du unter https://calcbox.de/solo/solo/generator.jsp zunächst ein Testspiel im Textmodus eingeben. Mit einem Klick auf den Button "Prüfen" wird die Syntax des eingegebenen Abenteuers überpüft. Ist alles Korrekt, dann erscheint ein Link um ein Testspiel im Text-Simulator zu machen. Die Validierung ist noch nicht sehr gut. So werden z.B. Referenzen auf nicht existierende Kapitel erst während des Spiels erkannt und dann erscheint eine Exception. Der Text der Exception sollte allerdings helfen, den Fehler zu finden.

Wenn im Textsimulator alles zu Deiner Zufriedenheit funktioniert, dann kannst Du das Soloabenteuer mit dem Link "Upload zu Alexa" auf deine Alexa hochladen. Das Spiel ist dann zunächst nur auf deiner Alexa sichtbar und kann von dir mit Sprachsteuerung getestet werden.

WICHTIG: Die Alexa Sprachsteuerung erlaubt es nicht mehr beliebige Wörter zu erkennen. D.h., alle zu erwartenden Wörter müssen vorher als Liste hinterlegt werden. Wenn Du bei einer Entscheidung oder einem Rätsel ein neues Wort verwendest, dann kann es sein, dass Alexa dieses Wort nicht erkennt. Verwende deshalb immer auch die A/B/C Varianten als alternative Spracheingabe.

Wenn Dein Soloabenteuer fertig ist, dann sende eine Mail an ferenc.hechler(AT)gmail.com, ich werde es dann freischalten und die neuen Entscheidungs-/Rätsel-Wörter mit aufnehmen.

Wenn Du Hilfe brauchst, bitte ebenfalls einfach per Mail kontaktieren.

Wenn Dein Abenteuer bereits als PDF vorhanden ist, Du aber keine Lust hast, dass selbst in das Textformat umzuwandeln, dann kontaktiere mich ebenfalls per EMail, vielleicht findet sich ein Freiwilliger, der das übernimmt. :-)
Voraussetzung ist natürlich, dass Du alle Rechte an dem Soloabentuere besitzt!

Nun aber zur eigentlichen Anleitung.

Inhaltsverzeichnis

Die folgenden Sprachelemente können in Soloabenteuern verwendet werden.

Beispiel Quelltext "Das Kennenlernabenteuer"

Hier der Quelltext des "Kennenlernabenteuers", wie es bereits veröffentlicht wurde. Dieses Abenteuer dient in erster Linie dazu, alle Sprachelemente kennen zu lernen. Dieses Abenteuer kann gerne als Muster für eigene Entwicklungen verwendet werden.

Beschreibung der Sprachelemente:

Aufbau der Textdatei:

Kopfzeilen: Titel, Autor, und sonstige Infos
Kurzbeschreibung: Der Text, den Alexa vorliest, wenn das Soloabenteuer ausgewählt wird. 
[BEGINN]
 <Text>
 <Schlüsselwörter>
[<Kapitel>]
 <Text>
 <Schlüsselwörter>
[<Kapitel>]
...
[ENDE]
 <Text>


Die Kapitel sind jeweils in eckigen Klammern gesetzt, z.B.: "[1]"
Es gibt zwei ausgezeichnete Kapitel: "[BEGINN]" und "[ENDE]"

Es gibt mehrere Schlüsselwörter, die in einem Kapitel verwendet werden können.
Schlüsselwörter sind Großgeschrieben und stehen jeweils am Anfang einer Zeile und werden mit einem Doppelpunkt (":") abgeschlossen.

Aktuell gibt es die folgenden Schlüsselwörter:
"JANEINENTSCHEIDUNG", "ENTSCHEIDUNG", "AKTION", "PROBE", "KAMPF", "REGEL", "WEITER", "RÄTSEL"

Ich erspare mir jetzt eine formale Beschreibung der Syntax, sondern mache jeweils ein Beispiel:

[zum Inhaltsverzeichnis]

JANEINENTSCHEIDUNGEN

Als erstes gibt es die Ja-/Nein-Entscheidung [---------------] JANEINENTSCHEIDUNG: <Ja-Nein-Frage> JA: [<Ja-Kapitel>] NEIN: [<Nein-Kapitel>] [---------------] Beispiel aus dem Kapitel BEGINN: [---------------] JANEINENTSCHEIDUNG: Möchtest du den Fremden fragen was los ist? JA: [1] NEIN: [3] [---------------] Bei einer Ja-Nein Entscheidung wird die Frage, so wie angegeben vorgelesen und auf eine Ja-Nein-Antwort gewartet. Danach wird mit dem entsprechenden Kapitel weiter gemacht. [zum Inhaltsverzeichnis]

ENTSCHEIDUNG

Für komplexeren Fragestellung gibt es die Auswahl-Entscheidung mit dem Schlüsselwort ENTSCHEIDUNG: [---------------] ENTSCHEIDUNG: <Alternativen-Frage> A: [<Kapitel>] = <Spracherkennungsfloskel1> | <Spracherkennungsfloskel2> | ... B: [<Kapitel>] = ... C: ... ... [---------------] Beispiel [---------------] ENTSCHEIDUNG: Möchtest du (A) die Spuren genauer untersuchen oder (B) das umliegende Gebiet genauer in Augenschein nehmen? Natürlich steht dir (C) auch frei wieder umzukehren. A: [14] = Spuren B: [15] = Gebiet C: [9] = Umkehren [---------------] [zum Inhaltsverzeichnis]

AUSWAHLMITRÜCKSPRUNG

Auswahl mit Rücksprung erlaubt es ein Kapitel von verschiedenen Stellen aus aufzurufen und dann zur Auswahl zurück zu springen. Es kann beliebig oft zu einem ausgewählten Kapitel verzweigt werden. Sobald im Unterkapitel auf einen RÜCKSPRUNG gestossen wird, wird zurück zur Auswahl gesprungen. Die Auswahl wird mit "Fertig" beendet und das aktuelle Kapitel wird fortgesetzt. [---------------] AUSWAHLMITRÜCKSPRUNG: <Auswahlmöglichkeiten> A: [<Kapitel>] = <Spracherkennungsfloskel1> | <Spracherkennungsfloskel2> | ... B: [<Kapitel>] = ... C: ... ... [---------------] Beispiel [---------------] [1] AUSWAHLMITRÜCKSPRUNG: Du kannst dem Wächter fragen stellen: (A) Wie ist das Wetter? (B) Wo bin ich? (C) Wie viel Uhr ist es? A: [101] = Wetter B: [102] = Ort C: [103] = Uhrzeit Jetzt bist du Schlauer. WEITER: [200] [101] Es regnet. RÜCKSPRUNG: [102] In London. RÜCKSPRUNG: [---------------] [zum Inhaltsverzeichnis]

RÜCKSPRUNG

Endet ein Kapitel RÜCKSPRUNG, dann wird zurück zur AUSWAHLMITRÜCKSPRUNG gesprungen, von der aus zuletzt verzweigt wurde. [---------------] RÜCKSPRUNG: [---------------] [zum Inhaltsverzeichnis]

ZUFALLSENTSCHEIDUNG

Verzweigt zufällig zu einem der aufgeführten Kapitel. Die Wahrscheinlichkeit ist für jedes Kapitel gleich groß. [---------------] ZUFALLSENTSCHEIDUNG: A: [<Kapitel>] B: [<Kapitel>] C: ... ... [---------------] Beispiel [---------------] ZUFALLSENTSCHEIDUNG: A: [110] B: [120] C: [130] [---------------] [zum Inhaltsverzeichnis]

AKTION

Muss der Solo-Spieler eine Aktion machen, wie, z.B. einen Schaden eintragen, dann wird das mit dem Schlüsselwort "AKTION" gemacht. [---------------] AKTION: <Anweisungstext> WEITER: [---------------] Beispiel [---------------] AKTION: Du darfst je 1W6 Lebenspunkte und Astralpunkte regenerieren. WEITER: [---------------] Im Spiel wird der Anwesiungstext vorgelesen und eine Pause eingelegt, bis der Solo-Spieler die Aktion ausgeführt hat. Der Spieler kann sich den Anweisungstext auch wiederholen lassen. Wurde die Aktion ausgeführt, dann wird das aktuelle Kapitel an der Stelle "WEITER:" fortgesetzt. Eine Aktion ist lediglich eine Pause und hat keinen Einfluss auf den Spielverlauf. [zum Inhaltsverzeichnis]

PROBE

Proben: Eine Probe hat zwei mögliche Ausgänge: Bestanden oder Fehlgeschlagen [---------------] PROBE: <Eigenschaft> BESTANDEN: <optionaler-Kommentar> [<Kapitel>] FEHLGESCHLAGEN:<optionaler-Kommentar> [<Kapitel>] [---------------] Beispiel [---------------] PROBE: Sinnenschärfe BESTANDEN: Du Bist scharfsinnig wie eine Katze [24] FEHLGESCHLAGEN: Du bist blind wie ein Maulwurf [28] [---------------] Wie bei der Ja-/Nein-Entscheidung wird das Spiel im entsprechenden Kapitel fortgesetzt. Optional kann ein Kommentar zum Ausgang der Probe gegeben werden. [zum Inhaltsverzeichnis]

KAMPF

In einem Kampf werden die Gegener mit Ihren Werten gelistet [---------------] KAMPF: GEGNER: <Gegner-name-1> WAFFE: <waffenname> INI <initiativenwert> AT: <wert> PA: <wert> TP: ... ... MR: <wert> GEGNER: <Gegner-name-2> WAFFE: ... GEWONNEN: <optionaler-Kommentar> [<Kapitel>] VERLOREN: <optionaler-Kommentar> [<Kapitel>] [---------------] Beispiel [---------------] KAMPF: GEGNER: Goblin WAFFE: Ast; Initiative 4+1W6 AT: 7 PA: 6 TP: 1W6-1 DK: H LeP: 15 RS: 1 AuP: 15 WS: 3 GS: 5 MR: 0 GEWONNEN: [43] VERLOREN: Du trittst die lange Reise zu Boron an [31] [---------------] [zum Inhaltsverzeichnis]

REGEL

Es kann spezielle Regeln geben, die den Spielfluß beeinflussen. Die einzige bisher verwendete Regel ist "BESUCHT(<Kapitel>)". Diese ist erfüllt, wenn ein Kapitel im bisherigen Spielverlauf schon mal besucht wurde. Von oben nach unten werden alle Regeln geprüft und zum Kapitel der ersten passende Regel weitergeleitet. Die Regel SONST greift immer dann, wenn keine andere Regel passt. [---------------] REGEL: <Bedingung-1>: [<Kapitel>] <Bedingung-2>: ... ... [---------------] Beispiel [---------------] REGEL: BESUCHT(29): [33] SONST: [36] [---------------] Wurde Kapitel 29 bereits besucht, dann wird mit Kapitel 33 weitergemacht, ansonsten mit Kapitel 36. [zum Inhaltsverzeichnis]

WEITER

Mit dem Schlüsselwort "WEITER" wird der Spielfluss in einem anderen Kapitel fortgesetzt werden. [---------------] WEITER: [<Kapitel>] [---------------] Beispiel [---------------] Du führst einen letzten Hieb aus, woraufhin der Rotpelz leblos zu Boden sinkt. Du wendest dich nun der Kiste zu. WEITER: [44] [---------------] [zum Inhaltsverzeichnis]

RÄTSEL

Ein neues Element auf Anregung von Franziska Hechler sind Rätsel. Bei normalen Entscheidungen werden die Auswahlmöglichkeiten aufgezählt. Im Gegensatz dazu werden die Auswahlmöglichkeiten eines Rätsels nicht verraten. [---------------] RÄTSEL: Atemlos lebt es, kalt wie der Tod schwebt es, fühlt keinen Durst und doch trinkt es, trägt ein Kettenhemd und nie klingt es. ANTWORT(Fisch): Sehr gut [72] ANTWORT(Gollum): [73] ANTWORT(Tolkien): [73] FEHLVERSUCHE(2): Denk an Wasser FEHLVERSUCHE(4): Noch ein Versuch FEHLVERSUCHE(5): [71] AUFGEBEN: [74] [---------------] [zum Inhaltsverzeichnis]

AUDIO

Alexa kann nicht nur Text vorlesen, sondern auch MP3 Dateien abspielen. Die MP3 Dateien müssen dafür gewisse Bedingungen erfüllen, siehe unten. In den Header-Daten muss dazu eine Basis-URL angegeben werden unter der sich die MP3-Dateien befinden. [---------------] AUDIOBASEURL: <URL> <text> AUDIO: <MP3-filename> <text> ... [---------------] Beispiel [---------------] TITEL: Audio Test AUDIOBASEURL: https://calcbox.de/audio ... Du öffnest das Tor. AUDIO: Tuerknarren.mp3 Du betritts den Garten. ... [---------------] Anforderungen an die MP3 Datei Die MP3 Datei muss als "https" erreichbar sein, nur "http" geht nicht. In einer Antwort können maximal 5 Audiodateien enthalten sein. Die Gesamtzeit der Audio-Dateien in einer Antwort darf 90 Sekunden nicht überschreiten. Die Audiodatein müssen für Alexa in ein bestimmtes Format umgewandelt werden. Details dazu befinden sich auf der Amazon Entwicklerseite

Wie dort beschrieben können beliebige MP3 Dateien mit ffmpeg auf der Komandozeile konvertiert werden: [---------------] ffmpeg -i <eingabe.mp3> -ac 2 -codec:a libmp3lame -b:a 48k -ar 16000 <ausgabe.mp3> [---------------] [zum Inhaltsverzeichnis]

PHONEM

Gerade die Rollenspiel-Namen sind für Alexa nicht immer leicht auszusprechen. Deshalb besteht die Möglichkeit nach den Header-Daten mehrere Wörter in Lautschrift zu definieren. [---------------] <header-info> PHONEM(<wort1>=<x-sampa-phonem>) PHONEM(<wort2>=<x-sampa-phonem>) ... [BEGINN] ... [---------------] Das Phonem-Format x-sampa ist hier definiert: Amazon SSML Reference Beispiel [---------------] PHONEM(Punin): "pu:nIn PHONEM(Tsa): ts"a: PHONEM(Praios): Pra:ios [---------------] Mit diesen Definitionen, werden alle Vorkommen von diesen Wörtern (Ganzes Wort, inklusive Groß-/Kleinschreibung) von Alexa entsprechend den Phonemen ausgesprochen. Ansonsten würde Punin wie "Pannin" ausgesprochen und Tsa wird als "T-S-A" buchstabiert. [zum Inhaltsverzeichnis]

VOICE

Wenn Du wörtliche Rede verwenden möchtest, dann kannst du (in Grenzen) Alexas Stimme modulieren, also sie lauter/leiser, höher/tiefer und langsamer/schneller sprechen lassen. Die Stimm-Einstellungen werden im Header definiert: [---------------] <header-info> VOICE(<name1>): volume="<+/-dezibel1>db" pitch="<+/-pitch1>%" rate="<rate1>%") VOICE(<name2>): volume="<+/-dezibel2>db" pitch="<+/-pitch2>%" rate="<rate2>%") ... [BEGINN] ... [---------------] Das Bedeutung von volume / pitch und rate ist ist hier definiert: Amazon SSML Reference Beispiel Deklaration: [---------------] VOICE(FRAU): volume="-1dB" pitch="+20%" rate="105%" VOICE(MANN): volume="+1dB" pitch="-15%" rate="97%" [---------------] Mit diesen Definitionen, werden Texte, die mit einer "V_<name>(...)" Klammer umschlossen sind, mit der entsprechenden Stimmmodulation ausgesprochen. Der Text in Klammern wird als eigener Absatz gesprochen, das bedeutet davor und danach wird eine kurze Pause gemacht. Beispiel Text: [---------------] Sie trat auf ihn zu und sprach: V_FRAU("Was suchst Du hier?") V_MANN("Den Schatz!") antwortete er. [---------------] [zum Inhaltsverzeichnis]