Bermuda GameEngine Startseite

Allgemeine Informationen Einführung Bermuda GameEngine - Dokumentation

Mit der Bermuda GameEngine ist es möglich Adventuregames anhand einer XML-Struktur zu Erstellen. Mittels der integrierten Scriptsprache kann die nötige Dynamik eingebracht werden.

Diese Referenz umfasst alle XML- und Script-Definitionen, die zur Programmierung der Bermuda Engine nötig sind.

Bermuda XML -Referenz
Enthält eine Beschreibung aller XML-Tags und derer Attribute.

Bermuda Script -Referenz
Enthält eine Beschreibung aller Befehle der Scriptsprache.

Dokumentation zu
Engine-Version: 1.67E2

Projekt Bermuda
Fachhochschule Augsburg WS 2002/03
Homepage zum Projekt

Dieses Dokument und seine Inhalte sind urheberrechtlich geschützt.
Copyright © 2003 Projekt Bermuda / René Bühling

Bermuda GameEngine
Copyright © 2003 Projekt Bermuda
Entwickelt von: Philipp Berger, René Bühling, Holger Göbber


XML - Übersicht

Bermuda XML Bermuda XML

Mit Bermuda XML können adventuregames für die Bermuda-Engine beschrieben werden. Das auf Standart-XML basierende Datenformat kann in Dateien mit der Dateiendung *.bxml per Text-Editor bearbeitet werden.

Richtlinien für die Erstellung von BXML-Dokumenten:

  • Die Groß/Kleinschreibung von Tags und Attributnamen muß beachtet werden!

  • Einelementige Tags ( Tags, die nur aus sich selbst bestehen, wie <Beispiel /> ) sollten vor dem abschließenden "/>" einen Leerschritt enthalten.
    Falsch: <Beispiel/> Richtig: <Beispiel />

  • Sofern nicht (hier) anders angegeben kann das Attribut id eine beliebige Zeichenkette sein.

  • Player ist das Sprite mit id="ID_PLAYER"

  • Für das Playersprite werden die Animationen für den Walkcycle
    automatisch zugeordnet.
Animation.id=1 Laufbewegung nach links
Animation.id=2 Laufbewegung nach rechts
Animation.id=3 Laufbewegung nach hinten
Animation.id=4 Laufbewegung nach vorne
  • Über die id ID_CURSOR kann ein Sprite als Mauszeiger definiert werden. Wird kein Mauszeiger angegeben, wird der Standart-Windows-Cursor verwendet.

  • Jedes sprite darf nur einen Animation-Tag (mit den Sequenzdefinitionen) haben.

  • Der Wert des Attributs Sequence.id muß rein numerisch sein.

  • Jeder Tag muß eine eindeutige ID im Attribut "id" haben!!!

  • <screen>s können keine Aktionen haben. Falls eine benötigt wird, muß ein transparentes Sprite mit den benötigten Aktionen angelegt werden.

  • Animierte Objekte werden defaultmäßig sofort abgespielt.

  • Kommentare in Form von <!-- Kommentar --> oder <comment>Kommentar, auch mehrzeilig</comment> sind erlaubt

  • Wenn mindestens ein Objekt ein menüabhängiges Script (<onLookAt>...) enthält, muß in der Szene auch ein Menü definiert sein!

  • Wenn ein Inventar definiert ist, muß auch ein Menü definiert sein.


XML - Was ist neu?

Bermuda XML Was ist neu?

Neu in Version 1.63f2

  • set: opx, opy
  • ID_PLAYER-Koordinaten werden nur im ID_START-Screen ausgewertet

Anmerkung: Ab sofort erfolgen keine BXML/BScript-Versionsnummer mehr.
Die Versionsangabe richtet sich nun nach der Engine-Version, in der die neuen Features verfügbar sind.
(Eingeführt mit Engine-Version 1.63c )

Neu in Version 1.f:

  • Der z-Index des Inventars ist jetzt auch völlig unabhängig
  • Sprite.scale

Neu in Version 1.e:

  • Neue sprite-Attribute: loop und random
  • Player-waitCycles

Neu in Version 1.d:

  • screen.wave
  • onDrop
  • sprite.z wird bei der Spielfigur vom Map-Tiefenindex überschrieben
  • Erweiterte Informationen zu screen und SET

Neu in Version 1.c:

  • <onEnter>-Implementierung
  • <adventure> muß fortan - wie alle anderen Tags auch - mit kleinen Anfangsbuchstaben geschrieben werden
  • adventure.colorkey
  • <cast>


XML - Verschachtelung

Bermuda XML Verschachtelung

Ebenen-Verhältnisse der BXML-Tags:


XML - Variablen

Bermuda XML Variablen

Einige BXML-Attribute können mit Systemvariablen belegt werden. Diese Variablen funktionieren allerdings nur an den dafür vorgesehenen Positionen.

Belegungen für das Attribut id der Klasse sprite:

ID_PLAYER

Macht das Sprite zur Spielfigur

ID_CURSOR

Macht das Sprite zum Mauszeiger

ID_HELP

Definiert dieses Sprite als Hilfebildschirm.

Belegungen für das Attribut id der Klasse screen:

ID_START

Dieser Screen wird als erstes angezeigt

Belegungen für das Attribut id der Klasse invitem:

I_FRAME

Dieses invitem beschreibt die Hintergrundgrafik für das Inventarpanel.

I_MASK

Dieses invitem beschreibt die Maske für das Inventarpanel. (?)

I_ARROW_L

Dieses invitem beschreibt die Schaltfläche, mit der nach links gescrollt werden kann.

I_ARROW_R

Dieses invitem beschreibt die Schaltfläche, mit der nach rechts gescrollt werden kann.


XML - Kopfzeile

Bermuda XML Fileheader

Pfad: ?xml?

<?xml version="1.0" standalone="no"?>

Jede BXML-Datei muß mit dieser Zeile beginnen.


XML - adventure

Bermuda XML adventure

Pfad: ?xml? /adventure

Beschreibt das gesamte Spiel. Dieser Tag folgt direkt der BXML-Kopfzeile und umschließt sämtliche weiteren Tags.

Attribute:

id

Optional. Textueller Titel des Spiels.

colorkey

Optional. Definiert die Farbe, die bei Sprites transparent dargestellt wird. Default ist 65280 = RGB(0,255,0). Bei der Ermittlung des Farbwerts ist darauf zu achten, daß die Farbe im Hexadezimalen Rechenverfahren ermittelt werden muß.

Bsp.: Rot RGB(255,0,0) ist nicht 255, sondern 16711680 (FF0000). Im RGB-Rechenverfahren läßt sich der Effekt leicht erzielen, indem Rot und Blau vertauscht werden (z.B. RGB(0,0,255) = 16711680 = FF0000)


XML - animation

Bermuda XML

animation

Pfad: ?xml? / adventure / screens / screen / sprite /animation

Nur falls das übergeordnete Sprite animiert werden soll. Umschließt einen Block mit Bildsequenzen für das Sprite.

Attribute:

- keine -


XML - sequence

Bermuda XML

sequence

Pfad: ?xml? / adventure / screens / screen / sprite / animation /sequence

Beschreibt eine Animation durch Angabe von Start- und End-Bildern in einer Filmstreifengrafik. Das letzte Bild jeder Sequenz wird nicht mehr dargestellt. Das letzte Bild liegt also immer außerhalb der eigentlichen Bildsequenz.

Attribute:

id

Weist der Sequenz eine innerhalb des übergeordneten <animation>-Tags eindeutige numerische ID zu.

Info: Das Playersprite (<sprite id="player">) muß 6 Sequences definiert haben:

sequence id
Bedeutung der Animation
1
Player läuft nach links
2
Player läuft nach rechts
3
Player läuft nach vorne
4
Player läuft nach hinten
5
Player steht und wartet Variante 1
6
Player steht und wartet Variante 2

startX

Bezeichnet die horizontale Position des ersten Bildes auf der Filmstreifenmatrix in Bildern (nicht Pixeln).

startY

Bezeichnet die vertikale Position des ersten Bildes auf der Filmstreifenmatrix in Bildern.

endX

Bezeichnet die horizontale Position des letzten Bildes auf der Filmstreifenmatrix in Bildern.

endY

Bezeichnet die vertikale Position des letzten Bildes auf der Filmstreifenmatrix in Bildern.


XML - cast

Bermuda XML

cast

Pfad: ?xml? / adventure / screens / screen /cast

Mittels des <cast>-Tags können Kopien anderer Objekte angelegt werden. Der Tag hat keine untergeordneten Elemente.

Beispiel:

Statt die Spielfigur in jedem Screen mit <sprite ...> inklusive aller Animationsdefinitionen neu angeben zu müssen, genügt es, die Figur einmal zu definieren und dann mittels <cast> zu duplizieren.

<screen>
<sprite img="walk4sides.bmp" id="playervorlage" x="500" y="280" z="3" width="2160" height="800" ...>
<animation>
<sequence id="1" startX="0" startY="3" endX="17" endY="3" comment="links"/>
...
</animation>
<onLoad>
...
</onLoad>
</sprite>
</screen>

<screen id="szene2" ...>
<cast id="ID_PLAYER" oid="playervorlage" />
</screen>

Attribute:

id

id, die dem neu erzeugten Objekt zugeordnet wird.

oid

id des Objekts, von dem eine Kopie erzeugt werden soll.


XML - INTERNAL

Bermuda XML INTERNAL

Pfad: ?xml? /INTERNAL

Enthält Daten des Script-Arbeitsspeichers und wird nur beim Speichern eines Spiels benötigt.

Attribute:

- keine -


XML - SET

Bermuda XML INTERNAL

Pfad: ?xml? / INTERNAL /SET

Enthält Daten des Script-Arbeitsspeichers und wird nur beim Speichern eines Spiels benötigt.

Attribute:

id

ID definiert, um was für Daten es sich handelt und kann die Werte counter, flag, activeCounter, currentScreen, ielement und opx/opy annehmen

key

Optional. Legt den Schlüssel für Wertpaare fest.

val

Enthält den zu speichernden Wert.


XML - inventory

Bermuda XML

inventory

Pfad: ?xml? / adventure / screens / screen /inventory

Definiert ein Inventarfeld, in dem mitgeführte Objekte aufgenommen und verwendet werden können.

Attribute:

id

Definiert eine ID, über die das Inventar angesprochen werden kann.

img

Gibt den Dateinamen der BMP-Datei an, die das Objekt in der Szene darstellt. Um ein unsichtbares Sprite zu verwenden, muß ein vollständig transparentes Dummy-Bild angegeben werden.

x

Gibt die X-Koordinate des Inventars auf dem Bildschirm an.

y

Gibt die Y-Koordinate des Inventars auf dem Bildschirm an.

z

Gibt die Z-Koordinate des Inventars auf dem Bildschirm an. Anhand dieses Wertes wird die Zeichenreihenfolge und somit die Überlappungen des Inventars festgelegt.

width

Gibt die Breite der in img festgelegten Grafik an.

height

Gibt die Höhe der in img festgelegten Grafik an.

iconWidth

Definiert die Breite eines Objektsymbols auf der in img festgelegten Grafik.

iconHeight

Definiert die Höhe eines Objektsymbols auf der in img festgelegten Grafik.

border

Legt den Abstand zwischen den Icons auf der in img festgelegten Grafik fest.

count

Gibt die Anzahl der Objekte, die das Inventar umfassen soll an.


XML - invitem

Bermuda XML

invitem

Pfad: ?xml? / adventure / screens / screen / inventory /invitem

Definiert weitere Optionen zur Darstellung des Inventars.

Attribute:

id

Entscheidet über die Auswertung der nachfolgenden Attribute. Dieser Wert muß mit einem der folgenden Begriffen gefüllt werden:

I_FRAME Dieses invitem beschreibt die Hintergrundgrafik für das Inventarpanel.
I_MASK Dieses invitem beschreibt die Maske für das Inventarpanel. (?)
I_ARROW_L Dieses invitem beschreibt die Schaltfläche, mit der nach links gescrollt werden kann.
I_ARROW_R Dieses invitem beschreibt die Schaltfläche, mit der nach rechts gescrollt werden kann.

x

Ziel-X-Koordinate des Grafikausschnitts auf dem Bildschirm.

y

Ziel-Y-Koordinate des Grafikausschnitts auf dem Bildschirm.

mapX

Quell-X-Koordinate des Grafikausschnitts auf der invitem.img Grafik.

mapY

Quell-Y-Koordinate des Grafikausschnitts auf der invitem.img Grafik.

width

Breite des Grafikausschnitts.

height

Höhe des Grafikausschnitts.


XML - isprite

Bermuda XML

isprite

Pfad: ?xml? / adventure / screens / screen /isprite

Beschreibt ein Inventarobjekt im Inventar. Die Menüreaktionen können mittels <on...>-Befehlen definiert werden. isprites erfordern immer ein vorhergehendes <inventory>!

Attribute:

id

Bezeichnung zur eindeutigen Identifiziert des Objekts. Diese ID darf keine System-ID (ID_PLAYER, ID_...) sein.

mapX

Bezeichnet die Spaltennummer auf der Grafik inventory.img. Die Position wird anhand von inventory.iconWidth zeilenweise von der linken oberen Ecke in der Grafik errechnet. Das erste Icon hat den mapX-Wert 0, das zweite den mapX-Wert 1, usw.

mapY

Bezeichnet die Zeilennummer auf der Grafik inventory.img. Die Position wird anhand von inventory.iconHeight zeilenweise von der linken oberen Ecke in der Grafik errechnet. Das erste Icon hat den mapY-Wert 0, das erste Icon in der zweiten Zeile hat den mapY-Wert 1, usw.


XML - menu

Bermuda XML

menu

Pfad: ?xml? / adventure / screens / screen /menu

Definiert ein Objekt-Menü, das bei Klick auf ein Objekt mit "MenüAction"-Scripts (<onLookAt>, <onTake>, ...) erscheint.

Attribute:

id

Identifiziert das Menü eindeutig.

img

Dateiname der Grafikdatei für das Menü.

width

Breite der gesamten Grafik, die in img angegeben wurde.

height

Höhe der gesamten Grafik, die in img angegeben wurde.

frameX

X-Koordinate des Ausschnitts auf der Grafik, das die Hintergrundgrafik des Menüs darstellt.

frameY

Y-Koordinate des Ausschnitts auf der Grafik, das die Hintergrundgrafik des Menüs darstellt.

frameWidth

Breite des Ausschnitts auf der Grafik, das die Hintergrundgrafik des Menüs darstellt.

frameHeight

Höhe des Ausschnitts auf der Grafik, das die Hintergrundgrafik des Menüs darstellt.


XML - menuitem

Bermuda XML

menuitem

Pfad: ?xml? / adventure / screens / screen / menu /menuitem

Beschreibt ein Rechteck auf der Menügrafik, das durch Anklicken einen Menübefehl auslöst.

Attribute:

id

Identifiziert den Menüeintrag und definiert die ausgelöste Aktion. Dieses Attribut kann die Werte "nimm", "schau", "rede", "benutze", "druecke", "oeffne" annehmen.

x

Ziel-X-Koordinate des Mausover-Grafikausschnitts auf der Menügrafik.

y

Ziel-Y-Koordinate des Mausover-Grafikausschnitts auf der Menügrafik.

mapX

Quell-X-Koordinate des Mausover-Grafikausschnitts auf der menu.img Menügrafik.

mapY

Quell-Y-Koordinate des Mausover-Grafikausschnitts auf der menu.img Menügrafik.

width

Breite des Mausover-Grafikausschnitts.

height

Höhe des Mausover-Grafikausschnitts.


XML - screens

Bermuda XML screens

Pfad: ?xml? / adventure /screens

Umschließt alle Szenen des Spiels.

Attribute:

- keine -


XML - screen

Bermuda XML screen

Pfad: ?xml? / adventure / screens /screen

Beschreibt eine komplette Szene/Bühne. Dieser Tag ist dem <screens>-Tag untergeordnet und umschließt alle Objekte des Bildschirms. Screens können keine Ereignisscripte (<onLoad> usw.) haben!

Attribute:

id

Identifiziert einen Bildschirm eindeutig. Diese id muß im ganzen Spiel eindeutig sein. Jede BXML-Datei muß einen Screen mit der id ID_START enthalten, der standardmäßig als erstes aufgerufen wird.

bgimg

Gibt den Dateinamen der BMP-Datei an, die als Hintergrund für die Szene angezeigt wird.
Bsp.: bgimg="insel.bmp"

mapimg

Gibt den Dateinamen der BMP-Datei an, die als Tiefen-Map für die Szene verwendet wird.

width

Gibt die Breite der Hintergrundgrafik bgimg an.

height

Gibt die Höhe der Hintergrundgrafik bgimg an.

name

Optional. Textuelle Bezeichnung für den Bildschirm.

wave

Optional. TRUE oder FALSE. Ist dieses Attribut TRUE, schwankt die Szene wie auf einem Schiff.


XML - sprite

Bermuda XML

sprite

Pfad: ?xml? / adventure / screens / screen /sprite

Beschreibt ein Objekt in einer Szene. Dieser Tag muß innerhalb eines <screen>-Tags liegen. Wenn das Sprite animiert werden soll, muß ein Untertag <animation> eingeschlossen werden.
Wenn das Sprite animiert ist, wird das 1. Bild als Standart-Animation eingestellt. Soll das nicht der Fall sein, muß ein <onLoad> sprite.setAnimation(x); </onLoad> - Ereignis angelegt werden.

Die Spielfigur, die in jedem Screen vorkommen muß, wird mit id="ID_PLAYER" definiert.

Attribute:

id

Beschreibt das Objekt. Die ID sollte idealer Weise im ganzen Spiel - muß aber zumindest innerhalb des übergeordneten <screen>-Tags - einmalig sein, um das Objekt eindeutig ansprechen zu können.
ID_PLAYER definiert dieses Sprite als Spielfigur.
ID_CURSOR definiert dieses Sprite als Mauszeiger.
ID_HELP definiert dieses Sprite als Hilfebildschirm. Das Sprite wird angezeigt, wenn F1 gedrückt wird.

img

Gibt den Dateinamen der BMP-Datei an, die das Objekt in der Szene darstellt. Um ein unsichtbares Sprite zu verwenden, muß ein vollständig transparentes Dummy-Bild angegeben werden.

x

Gibt die X-Koordinate des Objekts auf dem Bildschirm an.

Wenn das Sprite ID_PLAYER ist, wird dieser Wert nur im Startscreen ausgewertet. Ansonsten werden die Koordinaten des Players vor dem Bildschirmwechsel angewendet.

y

Gibt die Y-Koordinate des Objekts auf dem Bildschirm an.

Wenn das Sprite ID_PLAYER ist, wird dieser Wert nur im Startscreen ausgewertet. Ansonsten werden die Koordinaten des Players vor dem Bildschirmwechsel angewendet.

z

Gibt die Z-Koordinate des Objekts auf dem Bildschirm an. Anhand dieses Wertes wird die Zeichenreihenfolge und somit die Überlappungen der Objekte festgelegt.

Wenn das Sprite ID_PLAYER ist, muß der z-Wert zwar angegeben werden, wird aber anhand der Werte in der Tiefenmap überschrieben.

width

Gibt die Breite der in img festgelegten Grafik an.

height

Gibt die Höhe der in img festgelegten Grafik an.

spriteWidth

Nur bei Animation. Gibt die Breite eines Frames an, wenn img Animationsbilder enthält.

spriteHeight

Nur bei Animation. Gibt die Höhe eines Frames an, wenn img Animationsbilder enthält.

bindToY

Optional. Das Sprite wird nur gezeichnet, wenn die Y-Position des Mauszeigers <= diesem Wert ist. Funktioniert nicht, wenn die id des Sprites ID_CURSOR oder ID_HELP ist.

loop

Optional. "TRUE" | "FALSE". Gibt an, ob die Spriteanimation endlos abgespielt werden soll.

random

Optional. Wenn random!=0 ist, spielt die Animation zufallsgesteuert ab. (Zeigt das erste Bild, wartet eine Zufallszeit und spielt dann die animation ab. Dann gehts in gewohnter Weise wieder von vorne los (wenn loop=true))
Richtwerte: random=14 -> Wartezeit 1-3 Sekunden
radom=50 -> Wartezeit ~ 10 Sekunden

scale

Optional. Gibt einen Skalierungsfaktor in Prozent zur Darstellung des Sprites an. Um ein Sprite z.B. mit etwa einem Drittel der Originalgröße (33%) darzustellen: <sprite scale="33" ...>

DESTROYED = "true"

Das Objekt wird als zerstört markiert und nicht geladen. Dieses Attribut wird nur intern von der Scriptengine verwendet.


XML - onDrop

Bermuda XML Ereignis-Scripte

Pfad: ?xml? / adventure / screens / screen / sprite /onDrop_*
?xml? / adventure / screens / screen / isprite /onDrop_*

Umschließt das Script, das ausgeführt wird, wenn ein anderes Objekt per Drag'n'Drop auf dieses Objekt abgelegt wird. * muß dabei durch die id des Objektes, das gedropped wird, ersetzt werden.

Beispiel:

Wenn das Objekt Fisch auf das Objekt Katze gezogen wird, soll der Fisch aus dem Inventar verschwinden und die Katze "miau" sagen:

<sprite id="Katze"...>
<onDrop_Fisch>
looseItem("Fisch");
say("miau!");
</onDrop>
</sprite>

<isprite id="Fisch"...>
</isprite>

Attribute:

- keine -


XML - onClick

Bermuda XML Ereignis-Scripte

Pfad: ?xml? / adventure / screens / screen / sprite /onClick

Umschließt das Script, das ausgeführt wird, wenn das Objekt mit der Maus angeklickt wurde.

Attribute:

- keine -


XML - onEnter

Bermuda XML Ereignis-Scripte

Pfad: ?xml? / adventure / screens / screen / sprite /onEnter*

Umschließt das Script, das ausgeführt wird, wenn der Player ein neues Feld im Grünkanal des screen.mapimg betritt. Anstelle des Asterisk * muß ein Wert zwischen 0 und 255 angegeben werden, der den Grünwert auf der Map repräsentiert, der das Ereignis auslöst.

Beispiel:

onEnter-Tag für ein Ereignisscript, das ausgeführt wird, wenn der Player einen Punkt erreicht, der auf der Tiefenmap den Grünwert 128 hat: <onEnter128>
...
</onEnter>

Der Tag muß nicht mit </onEnter*> bzw. </onEnter128> geschlossen werden. Es genügt den Tag mit </onEnter> abzuschließen.

Attribute:

- keine -


XML - onLoad

Bermuda XML Ereignis-Scripte

Pfad: ?xml? / adventure / screens / screen / sprite /onLoad
?xml? / adventure / screens / screen / isprite /onLoad

Umschließt das Script, das ausgeführt wird, wenn die Szene geladen wurde.

Attribute:

- keine -


XML - onLookAt

Bermuda XML Ereignis-Scripte

Pfad: ?xml? / adventure / screens / screen / sprite /onLookAt
?xml? / adventure / screens / screen / isprite /onLookAt

Umschließt das Script, das ausgeführt wird, wenn der Schaue-An-Menübefehl auf das Objekt angewendet wird.

Attribute:

- keine -


XML - onMouseOver

Bermuda XML Ereignis-Scripte

Pfad: ?xml? / adventure / screens / screen / sprite /onMouseOver
?xml? / adventure / screens / screen / isprite /onMouseOver

Umschließt das Script, das ausgeführt wird, wenn mit der Maus auf das Objekt gezeigt wird. Diese Scripte müssen sollten sparsam verwendet werden, da sie in jedem Step (frame per second) ausgeführt werden und somit entsprechend die Performance des Programms belasten können.

Attribute:

- keine -


XML - onOpen

Bermuda XML Ereignis-Scripte

Pfad: ?xml? / adventure / screens / screen / sprite /onOpen
?xml? / adventure / screens / screen / isprite /onOpen

Umschließt das Script, das ausgeführt wird, wenn der Öffne-Menübefehl auf das Objekt angewendet wird.

Attribute:

- keine -


XML - onPush

Bermuda XML Ereignis-Scripte

Pfad: ?xml? / adventure / screens / screen / sprite /onPush
 ?xml? / adventure / screens / screen / isprite /onPush

Umschließt das Script, das ausgeführt wird, wenn der Drücke-Menübefehl auf das Objekt angewendet wird.

Attribute:

- keine -


XML - onTake

Bermuda XML Ereignis-Scripte

Pfad: ?xml? / adventure / screens / screen / sprite /onTake
?xml? / adventure / screens / screen / isprite /onTake

Umschließt das Script, das ausgeführt wird, wenn der Nimm-Menübefehl auf das Objekt angewendet wird.

Attribute:

- keine -


XML - onTalkTo

Bermuda XML Ereignis-Scripte

Pfad: ?xml? / adventure / screens / screen / sprite /onTalkTo
?xml? / adventure / screens / screen / isprite /onTalkTo

Umschließt das Script, das ausgeführt wird, wenn der SprichMit-Menübefehl auf das Objekt angewendet wird.

Attribute:

- keine -


XML - onUse

Bermuda XML Ereignis-Scripte

Pfad: ?xml? / adventure / screens / screen / sprite /onUse
?xml? / adventure / screens / screen / isprite /onUse

Umschließt das Script, das ausgeführt wird, wenn der Benutze-Menübefehl auf das Objekt angewendet wird.

Attribute:

- keine -


Script - Übersicht

Bermuda Script Einführung Bermuda GameEngine - References

Bermuda Script ist eine eigenständige einfache Scriptsprache. Der Code liegt in der Regel innerhalb von Action-Tags wie <onLookAt>, <onTake>, <onDragOn>, ...

Richtlinien für die Erstellung von BScripts:

  • Wie bei den XML-Tags spielt die Groß/Kleinschreibung auch bei Bermuda Script eine Rolle!

  • IDs sollten möglichst unkompliziert und ohne Leerschritt oder Sonderzeichen sein, um die vollständige Kompatibilität in allen Engine-Teilen zu gewährleisten.
    z.B.:
    Gut: id="gelber_eimer" (Einheitliche Kleinschreibung; keine Leerschritte oder Sonderzeichen)
    Schlecht: id="Viele tausend Goldstücke" (Großkleinschreibung, die überall im Code beachtet werden muß; Leerzeichen; Umlaute)

  • Dagegen ist es egal, ob zwischen Befehl und Parameter-Klammer ein Leerschritt ist oder nicht. Es ist beides gültig: say("Hallo Welt"); und say ("Hallo Welt");

  • Simulieren von setVisibility(): Sprites können (un)sichtbar gemacht werden, indem sie als Animation definiert werden. Dabei ist das erste Frame einfach ein leeres (transparentes) Frame. Animation 1 definiert dann das sichtbare Bild bzw. die Animation. SetVisibility(true) kann man dann durch startAnimation(oid,1), setVisibility(false) durch stopAnimation(oid) oder startAnimation(0) simulieren.

  • Primitiver mathematischer Parser (nur + - * / ; Division durch 0 ergibt 0;keine Klammern oder Punkt vor Strich, ): wenn ein Parameter mit $ beginnt, wird der Ausdruck vor der Auswertung durch die Script-Engine an den math. Parser geschickt.

    Beispiel:
    configSpeech (PLAYERX, $PLAYERY-20, ZERO, ZERO, ZERO);

    Setzt die Koordinaten für den nächsten auszugebenden Text über den Player. Das zweite Argument rechnet die Playerkoordinate-20 aus. Als Farbe bleibt die aktuelle Einstellung beibehalten.

    Vorsicht: Der Parser enthält noch einige Bugs, vor allem bei Buchstabenketten, die nicht verrechnet werden können. (z.B. a+b)

  • Befehle dürfen nicht verschachtelt werden ( auch keine if-kaskaden )
    z.B. Verboten ist:
    if ...
    if ...
    endif
    endif


Script - Was ist neu?

Bermuda Script Was ist neu?

Neu in Version 1.67a:

  • sleep()

Neu in Version 1.64:

  • stopSound, stopMusic, shutUp
  • playTransition(T_FADE)
  • else muß else () heißen

Neu in Version 1.63f:

  • set("LOOP"), set("RANDOM")
  • tendTo

Neu in Version 1.63c:

  • set()
  • status()

Anmerkung: Ab sofort erfolgen keine BXML/BScript-Versionsnummer mehr.
Die Versionsangabe richtet sich nun nach der Engine-Version, in der die neuen Features verfügbar sind.
(Eingeführt mit Engine-Version 1.63c)

Neu in Version 1.3h:

  • show
  • P_HOTX, P_HOTY, P_HOTW, P_HOTH

Neu in Version 1.3g:

  • playTransition

Neu in Version 1.3f:

  • else
  • getItem, looseItem und if hasItem
  • playSound und playMusic


Script - Systemvariablen

Bermuda Script Systemvariablen

Die hier aufgelisteten Variablen können in BScript-Befehlen anstelle von Argumenten übergeben werden.

PLAYERX , PLAYERY

Aktuelle Position der Spielfigur.

P_HOTX, P_HOTY

Koordinaten des "Hotspots" der Spielfigur. Der Hotspot ist der Punkt, auf dem die Spielfigur steht. Er auf den Koordinaten (PlayerBreite/2 , PlayerHöhe)

P_HOTW, P_HOTH

Abstand (Width & Height) des Hotspots zum Ursprung des Players. Diese Variablen errechnen sich wie folgt: P_HOTW=P_HOTX-PLAYERX und P_HOTW=P_HOTX-PLAYERX

Um die Spielfigur mit den Füßen an die Position (100,200) zu setzen, kann ausgeführt werden:
jumpTo("ID_PLAYER",$100-P_HOTW, $200-P_HOTH);

MOUSEX, MOUSEY

Position des Mauszeigers auf dem Bildschirm.

OFFSETX, OFFSETY

Offset-Koordinaten des aktuellen Bildschirmausschnitts auf der Hintergrundgrafik.

ZERO

"Null"-Parameter. (Evtl. zu kompliziert zu realisieren)
Bsp.: configSpeech soll color und y, definieren, x soll der aktuellen Einstellung entsprechen:
configSpeech ( 321192, ZERO, 30);


Script - if choose

Bermuda Script Diverses

(else) if choose (int step) : bool

Der nachfolgende Befehl wird nur ausgeführt, wenn der interne Zähler auf step steht.

Bsp. für OnClick-Script:
setActiveCounter ("test");
if choose (0)
say("Hallo");
else if choose (1)
say("Welt");
else if choose (2)
say("!");
resetCounter();
endif

Beim ersten Klick auf das Objekt wird "Hallo" ausgegeben. Beim nächsten Klick "Welt", beim nächsten Klick "!", beim nächsten Klick wieder "Hallo" usw.


Script - if hasFlag

Bermuda Script Diverses

(else) if hasFlag (String id) : bool

Gibt an, ob das Flag mit der ID id gesetzt ist .

(else) if !hasFlag (String id) : bool

Gibt an, ob das Flag mit der ID id nicht gesetzt ist.

Beispiel:

if hasFlag(sam)
print ("hallo");
else if hasFlag(max)
print ("bla, bla, bla!");
endif


Script - if hasItem

Bermuda Script Diverses

(else) if hasItem (String id) : bool

Gibt an, ob sich das Objekt mit der ID id im Inventar befindet.

(else) if !hasItem (String id) : bool

Gibt an, ob sich das Objekt mit der ID id nicht im Inventar befindet.


Script - if playerMeets

Bermuda Script Diverses

Diese Funktion muß noch realisiert werden! (2do)

(else) if playerMeets (int color)

Prüft, ob der Punkt mit den Koordinaten der Playerposition auf der GreenMap den Wert color (0-255) hat.


Script - if drop

Bermuda Script Diverses

Diese Funktion muß noch realisiert werden! (2do)

if drop (String id)

Ergibt true, wenn das per Drag'n'Drop abgelegte Objekt die ID id hat.


Script - else if

Bermuda Script Diverses

else if ...

Fügt einem if-Block eine weitere Bedingung hinzu.


Script - else

Bermuda Script Diverses

else ()

Die nachfolgenden Befehle werden ausgeführt, wenn alle vorherigen if-Abfragen false lieferten. Wichtig sind die leeren Klammern und der Leerschritt zwischen else und ().

Bsp. für OnClick-Script:
setActiveCounter ("test");
if choose(0)
say("-> 0");
else ()
say("-> 1");
endif

Nur beim ersten Klick auf das Objekt wird "-> 0" ausgegeben, sonst immer "-> 1".


Script - endif

Bermuda Script Diverses

endif

Beendet einen mit einem if - Befehl eingeleiteten Befehlsblock.


Script - break

Bermuda Script Diverses

break ()

Stoppt die Verarbeitung des Scripts.


Script - goTo

Bermuda Script Diverses

goTo (string id)

Springt zum Screen mit der ID id.


Script - Kommentar

Bermuda Script Diverses

//Text

Der Text wird bis zum Zeilenende als Kommentar angesehen und bei der Verarbeitung ignoriert.


Script - set

Bermuda Script Diverses

set (string identifier [,p1, ... pn])

Setzt einen Wert, der durch identifier definiert wird. Die Anzahl und Art der weiteren Parameter hängt von der Wahl von identifier ab.

Mögliche Belegungen für identifier:

STATUS_COLOR

Parameter:
int R
int G
int B

Stellt die Textfarbe für die Statuszeile (Standart:Weiß) ein.
Beispiel: Statustext lila (RGB(255,0,128)) färben: set(STATUS_COLOR,255,0,128);

STATUS_POS

Parameter:
int x
int y

Setzt den Punkt, an dem der Statustext zentriert ausgegeben wird. (Standart: 400,100)
Beispiel: set(STATUS_POS,200,300);

LOOP

Parameter:
string id
TRUE|FALSE

Definiert, ob die Animation des Objektes mit der ID id endlos abgespielt werden soll.
Beispiel: set(LOOP,"Vogel",TRUE);

RANDOM

Parameter:
string id
int rndVal

Setzt den Random-Wert zum zufälligen Abspielen der Animationen eines Objekts auf rndVal.
Siehe auch: sprite


Script - print

Bermuda Script Diverses

print (String txt)

Gibt den String txt auf stdout aus. (Nützlich zum Debuggen)


Script - playTransition

Bermuda Script Diverses

playTransition (string transitionID)

Spielt einen Szenenwechsel-Effekt ab. (Im Augenblick nur Iris-Blende)

Mögliche Wert für transitionID:

T_IRIS

Irisblende/kreisförmige Überblendung

T_FADE

Ausblenden, Achtung: Extrem performancelastig!


Script - status

Bermuda Script Diverses

status (string text)

Gibt text auf der Statuszeile aus.


Script - resetCounter

Bermuda Script Diverses

resetCounter()

Zurücksetzen des mit setActiveCounter eingestellten Counters. Entspricht setCounter(ZERO,0);


Script - setActiveCounter

Bermuda Script Diverses

setActiveCounter (string id)

Macht den Zähler id zum aktiven Counter für à if choose(). Somit sind beliebige Zähler definier- und realisierbar.


Script - setCounter

Bermuda Script Diverses

setCounter (string id, int val)

Setzt den Zähler id auf val. Soll geloopt werden, wie im if_choose()-Beispiel, dann muß dieser Befehl im letzten if_choose() stehen. Ist id == ZERO, wird der mit setActiveCounter() eingestellte Counter gesetzt.


Script - setFlag

Bermuda Script Diverses

setFlag (string id, TRUE|FALSE)

Setzt den Flag mit der ID id auf true oder false. Wird 0 als 2. Parameter angegeben, entspricht dies FALSE, alles andere TRUE.


Script - setOffsetX

Bermuda Script Diverses

setOffsetX (int x)

Setzt den horizontalen Offset ("Scrollposition") des angezeigten Bildschirmausschnitts bei Szenen die größer als der Screen sind.


Script - setOffsetY

Bermuda Script Diverses

setOffsetY (int y)

Setzt den vertikalen Offset ("Scrollposition") des angezeigten Bildschirmausschnitts bei Szenen die größer als der Screen sind.


Script - sleep

Bermuda Script Diverses

sleep (int frames)

Wartet frames Frames.


Script - saveGame

Bermuda Script Engine

saveGame (String filename)

Speichert das Spiel in eine BXML-Datei.


Script - loadGame

Bermuda Script Engine

loadGame (string filename)

Lädt das Spiel aus einer BXML-Datei

Tip: Um newGame zu simulieren, einfach loadGame(Name der Original-BXML-Datei) aufrufen.


Script - quitGame

Bermuda Script Engine

quitGame ()

Beendet das Spiel


Script - callEvent

Bermuda Script Engine

callEvent (string id, string e)

Ruft das Ereignisscript e des Objekts id auf. Es können nur Ereignisse auf Objekten der aktuellen Szene (<screen>) aufgerufen werden.
Bsp.: callEvent("myObj","onClick"); ruft das Ereignis "onClick" des Objekts myObj auf.

Es können auch eigene Events und Subscripte definiert werden:

<sprite id="test" ... >

<onMyEvent>
say("Hello World");
</onMyEvent>

<onClick>
callEvent( "test","onMyEvent");
</onClick>

</sprite>

Beachten Sie, daß die selbst definierten Scripte mit "on" beginnen müssen.


Script - enableInput

Bermuda Script Engine

enableInput (TRUE|FALSE)

Der Mauszeiger wird versteckt und Spielereingaben sind nicht möglich, wenn der Parameter false ist. Mit enableInput(true) werden die Eingaben wieder ausgewertet und der Mauszeiger sichtbar gemacht.


Script - show

Bermuda Script Diverses

show ("HELPSCREEN")

Zeigt den Hilfebildschirm an.


Script - showCusor

Bermuda Script Engine

showCursor (TRUE|FALSE)

Der Parameter FALSE macht den Mauszeiger unsichtbar, TRUE zeigt ihn an. (Funktioniert sowohl bei Sprite- als auch System-Cursorn und gilt nur für diese Szene (bei Szenenwechsel wird der Cursor wieder gezeigt) )


Script - playSound

Bermuda Script Sound

playSound (String filename)

Spielt die Wave-Datei filename ab.

stopSound (String filename)

Stoppt das Abspielen der Wavedatei filename.


Script - playMusic

Bermuda Script Sound

playMusic (String filename)

Spielt die MIDI-Datei filename als Hintergrundmusik in einer Endlosschleife ab. Es kann immer nur ein Hintergrundsound gleichzeitig abgespielt werden.

stopMusic ()

Stoppt den Hintergrundsound.


Script - shutUp

Bermuda Script Sound

shutUp ()

Stoppt alle gerade abspielenden Sounds und die Hintergrundmusik.


Script - movePlayerTo

Bermuda Script Spielfigur (Player)

movePlayerTo (int x, int y)

Die Spielfigur läuft zum Punkt P(x,y).


Script - jumpTo

Bermuda Script Sprites und Objekte

jumpTo (String id, int x, int y)

Setzt das Sprite id sofort an die Stelle mit den Koordinaten x/y.


Script - setZ

Bermuda Script Sprites und Objekte

setZ (String id, int z)

Setzt den Z-Wert des Objekts mit der ID id auf z.


Script - setAttribute

Bermuda Script Sprites und Objekte

Diese Funktion muß nicht realisiert werden (Kür)

setAttribute (String id, String key, String value)

Setzt das Attribut key des Objekts id auf den Wert value.


Script - getAttribute

Bermuda Script Sprites und Objekte

Diese Funktion muß nicht realisiert werden (Kür)

getAttribute (String id, String key) : String value

Gibt den Wert des Attributs key des Objekts id zurück.


Script - deleteObject

Bermuda Script Sprites und Objekte

deleteObject (String id)

Löscht das Objekt id aus der Szene (und dem ganzen Spiel). (Nimm Fisch à Fisch-Objekt wird entfernt. )


Script - createAnimation

Bermuda Script Animation

Diese Funktion muß nicht realisiert werden (Kür)

createAnimation( parameter??? )

Erzeugt ein neues Animationsobjekt.


Script - startAnimation

Bermuda Script Animation

startAnimation (String id)

Spielt die Animation des Objekts id ab.


Script - stopAnimation

Bermuda Script Animation

stopAnimation (String id)

Hält die Animation mit des Objekts id an.


Script - stopAnimation

Bermuda Script Animation

setAnimation (String id, String aid)

Weist dem Objekt id die Animation mit der numerischen ID aid zu, spielt die Animation aber nicht ab.


Script - setAndStartAnimation

Bermuda Script Animation

setAndStartAnimation (String id, String aid)

Weist dem Objekt id die Animation mit der numerischen ID aid zu und spielt die Animation ab.


Script - setLoop

Bermuda Script Animation

setLoop (String id, TRUE|FALSE)

Gibt an, ob die Animation des Objekts mit der ID id als Endlosschleife (TRUE) abgespielt oder nur einmal durchlaufen werden soll.


Script - tendTo

Bermuda Script Animation

tendTo(String id, int x, int y, int speed, bool animated)

Läßt ein Sprite mit der Geschwindigkeit speed (pixel per frame) auf ein Ziel "zufahren". Wenn animated true ist, wird dabei die aktuell eingestellte Animation abgespielt.


Script - playMovie

Bermuda Script Animation

Mit Dummyfunktion realisiert Bisher nur mit Dummyfunktion realisiert!

play_movie (String id)

Spielt die Flash-Zwischensequenz id ab.


Script - waitForAnimation

Bermuda Script Animation

waitForAnimation (String id)

Unterbricht die Scriptabarbeitung bis das letzte Bild der aktuellen Animation erreicht ist.


Script - waitForTarget

Bermuda Script Animation

waitForTarget (String id)

Unterbricht die Scriptabarbeitung das Objekt id sein Tween-Ziel erreicht hat.

Bsp.: Warte, bis Player an Stelle x/y gelaufen ist:
movePlayerTo(x,y); waitForTarget("ID_PLAYER");


Script - waitForSpeech

Bermuda Script Animation

waitForSpeech ()

Wartet, bis der derzeit angezeigte Text erlischt. -> setSpeechDuration


Script - configSpeech

Bermuda Script Sprache

configSpeech (int posX, int posY, int red, int green, int blue)

Setzt die Textfarbe und die Position für den nächsten "gesprochenen" Kommentar. Der Punkt gibt das Zentrum an, um den der Text zentriert ausgegeben wird. PLAYERX, PLAYERY, ZERO


Script - think

Bermuda Script Sprache

Diese Funktion muß nicht realisiert werden (Kür)

think (String s)

Der Text wird als "gedachter" Kommentar ausgegeben. (Keine Sprechanimation, nur Textdarstellung)


Script - setSpeechDuration

Bermuda Script Sprache

setSpeechDuration (int f)

Setzt die Dauer auf f Frames, die jedes Text-Zeichen (say()) angezeigt wird. Anzeigedauer für einen Kommentar = Anzahl Buchstaben * ms.
Default: 5 Frames


Script - say

Bermuda Script Sprache

say (String s)

Der Text s wird als "gesprochener" Kommentar ausgegeben.

Dialoge sind durch Wiederholung dieses Befehls möglich. (In Kombination mit configSpeech)


Script - hasItem

Bermuda Script Inventar

Mit Dummyfunktion realisiert Nur mit Dummyfunktion realisiert

if hasItem (String id) : bool

Ist das Inventarobjekt mit der ID (oder Namen?) id bereits im Inventar?


Script - looseItem

Bermuda Script Inventar

looseItem (String id)

Löscht das Objekt mit der ID id aus dem Inventar.


Script - getItem

Bermuda Script Inventar

getItem (String id)

Nimmt das Objekt mit der ID id ins Inventar auf.


Bermuda GameEngine Release Notes

Allgemeine Informationen Release Notes
  • Die Bermuda Game Engine ist in zwei Versionen erhältlich:

    Public Version:

    Standart-Version, um BXML-Dateien abzuspielen.

    DeveloperEdition:

    Durch Drücken der Tasten Einf und Entf kann in dieser Version die Backgroundmap sowie Debug-Informationen ein- und ausgeblendet werden.

  • Beide Versionen der Game Engine dürfen nur für private Zwecke (kostenfrei) verwendet werden.


Beispielcode

Allgemeine Informationen Beispielcode

<?xml version="1.0" standalone="no"?>
<Adventure id="HARRY BLUM is ZAPPED!">
<screens>
 <!-- hier gehts los -->
   <screen id="ID_START" name="Nebenstrasse" bgimg="gasseumseck.bmp" mapimg="gasseumseck_map.bmp" width="800" height="600">
       <!-- Inventar -->
     <inventory id="inventar" img="inventar.bmp" z="4" x="175" y="535" width="800" height="178" border="5" iconWidth="30" iconHeight="30" count="13" >
         <invitem id="I_FRAME" mapX="0" mapY="100" width="800" height="75" x="0" y="510" />
         <invitem id="I_MASK" mapX="25" mapY="30" width="525" height="75" x="150" y="517" />
         <invitem id="I_ARROW_L" mapX="575" mapY="30" width="60" height="60" x="78" y="513" />
         <invitem id="I_ARROW_R" mapX="655" mapY="30" width="60" height="60" x="683" y="512" />
     </inventory>
     <isprite id="Eimer" mapX="0" mapY="0" >
           <onLookAt>
               say("Wow, so einen schönen Eimer hab ich noch nie gesehen!");
           </onLookAt>
     </isprite>
     <isprite id="Becher" mapX="1" mapY="0" >
           <onLookAt>
               say("Das ist der heilige Gral.");
           </onLookAt>
     </isprite>
     <isprite id="Becher" mapX="2" mapY="0" >
     </isprite>

    <!-- Menü -->
       <menu id="menu01" img="menue.bmp" width="420" height="160" frameX="5" frameY="0" frameWidth="200" frameHeight="159">
           <menuitem id="nimm"    x="40" y="14" mapX="255" mapY="14" width="120" height="20" />
           <menuitem id="schau"   x="40" y="34" mapX="255" mapY="34" width="120" height="20" />
           <menuitem id="rede"    x="40" y="54" mapX="255" mapY="54" width="120" height="20" />
           <menuitem id="benutze" x="40" y="74" mapX="255" mapY="74" width="120" height="20" />
           <menuitem id="druecke" x="40" y="94" mapX="255" mapY="94" width="120" height="20" />
           <menuitem id="oeffne"  x="40" y="114" mapX="255" mapY="114" width="120" height="20" />
       </menu>

       <!-- "Systemleiste", d.h. Laden/Speichern/usw.-Buttons -->
       <sprite img="sys1.bmp" id="newgame" x="0" y="0" z="500" width="33" height="44" bindToY="100" >
           <onClick>
               say("Neues Spiel: ...ist noch nicht implementiert!");
           </onClick>
       </sprite>
       <sprite img="sys2.bmp" id="loadgame" x="34" y="0" z="500" width="38" height="44" bindToY="100" >
           <onClick>
               //say("Spiel laden: ...ist noch nicht implementiert!");
               loadGame("scriptSavegame.bxml");
           </onClick>
       </sprite>
       <sprite img="sys3.bmp" id="savegame" x="72" y="0" z="500" width="34" height="44" bindToY="100" >
           <onClick>
               saveGame("scriptSavegame.bxml");
               say("Das Spiel wurde gespeichert.");
           </onClick>
       </sprite>
       <sprite img="sys4.bmp" id="quitgame" x="106" y="0" z="500" width="33" height="44" bindToY="100" >
           <onClick>
               quitGame();
           </onClick>
       </sprite>
       <sprite img="sys5.bmp" id="aboutgame" x="139" y="0" z="500" width="39" height="44" bindToY="100" >
           <onClick>
               say("About: ... kommt bald.");
           </onClick>
       </sprite>

       <!-- Mauszeiger -->
       <sprite img="cursor.bmp" id="ID_CURSOR" x="800" y="150" z="9999999" width="250" height="50"  spriteWidth="50" spriteHeight="50" >
           <animation>
            <sequence id="1" startX="0" startY="0" endX="4" endY="0" />
            <sequence id="2" startX="4" startY="0" endX="5" endY="0" />
        </animation>
        <onLoad>
            setAnimation("ID_CURSOR",2);
            startAnimation("ID_CURSOR");
        </onLoad>
       </sprite>

    <!-- Der eigentliche Screen -->
    <sprite img="aniding.bmp" id="aniding1" x="100" y="400" z="4" width="393" height="393" spriteWidth="98" spriteHeight="98">
        <animation>
            <sequence id="1" startX="0" startY="0" endX="3" endY="3" />
            <sequence id="2" startX="1" startY="1" endX="2" endY="2" />
        </animation>
        <onClick>
            configSpeech(PLAYERX, PLAYERY,ZERO,ZERO,ZERO);
            say("Das wurde durch onClick ohne Menü ausgelöst!");
        </onClick>
    </sprite>

    <sprite img="aniding.bmp" id="aniding" x="300" y="400" z="4" width="393" height="393" spriteWidth="98" spriteHeight="98">
        <animation>
            <sequence id="1" startX="0" startY="0" endX="3" endY="3" />
            <sequence id="2" startX="1" startY="1" endX="2" endY="2" />
        </animation>
        <onLoad>
            setAnimation("aniding",1);
            startAnimation("aniding");
        </onLoad>
        <onTake>
            configSpeech(350,400, 0,128,255);
            say("Oink!");
            //wenn hier wieder ein configSpeech kommen soll, ein waitForSpeech einfügen, sonst verwendet say sofort die neuen Einstellungen
        </onTake>
        <onLookAt>
            configSpeech(PLAYERX, PLAYERY, 255,255,0);
            say("Es ist kleines häßliches Wesen, das nervig umher hüpft.");
        </onLookAt>
        <onTalkTo>
            configSpeech(PLAYERX, PLAYERY, 255,255,0);
            say("Hallo!");
            waitForSpeech();
            say("Hallo?!");
            waitForSpeech();
            say("HAAAAAALLLO!!!");
            waitForSpeech();
            say("Das Miststück ignoriert mich einfach!");
        </onTalkTo>
        <onUse>
            configSpeech(PLAYERX, PLAYERY, 255,255,0);
            say("Hm... was soll ich damit machen?");
            waitForSpeech();
            say("Es würde sich höchstens zum Staubwischen eignen.");
        </onUse>
        <onPush>
            configSpeech(PLAYERX, PLAYERY, 255,255,0);
            say("Lieber nicht.");
        </onPush>
        <onOpen>
            configSpeech(PLAYERX, PLAYERY, 255,255,0);
            say("Das Vieh zu 'öffnen' würde eine riesen Sauerei geben. Keine Lust.");
        </onOpen>
    </sprite>

    <sprite img="helpscreen.bmp" id="ID_HELP" x="150" y="150" width="500" height="300" z="9999999" />

    <sprite img="dummy.bmp" id="F11" x="510" y="300" z="6" width="1" height="1" >
        <onLookAt>
            goTo("104");
        </onLookAt>
    </sprite>

    <sprite img="dummy.bmp" id="F12" x="510" y="300" z="6" width="1" height="1" >
        <onLoad>
            setCounter("aniding",0);
        </onLoad>
        <onLookAt>
            setActiveCounter ("aniding");
            if choose(0)
             say("-> 0");
             setLoop("aniding",FALSE);
            else if choose(1)
             say("-> 1");
             setLoop("aniding",TRUE);
             startAnimation("aniding");
             resetCounter();
            endif

        </onLookAt>
    </sprite>

    <sprite img="gasseumseck_vorne.bmp" id="vordergrund" x="502" y="0" z="5" width="298" height="500" />

    <sprite img="walk4sides.bmp" id="ID_PLAYER" x="500" y="280" z="3" width="2160" height="800" spriteWidth="120" spriteHeight="200">
        <animation>
            <sequence id="1" startX="0" startY="3" endX="17" endY="3" comment="links"/>
            <sequence id="2" startX="0" startY="2" endX="17" endY="2" comment="rechts"/>
            <sequence id="3" startX="0" startY="1" endX="17" endY="1" comment="zurück"/>
            <sequence id="4" startX="0" startY="0" endX="17" endY="0" comment="vor" />

        </animation>
        <onLoad>
            configSpeech($PLAYERX+50, $PLAYERY-20,255,255,0);
            if !hasFlag(firstcall)
                setSpeechDuration(3);
                say("Willkommen bei Bermuda! F11 geht zum anderen Screen!");
                //waitForSpeech();
                setAnimation ("ID_PLAYER", 4);
                startAnimation("ID_PLAYER");
                movePlayerTo(378,443);
                setFlag (firstcall, TRUE);
                waitForTarget("ID_PLAYER");
            else if hasFlag(firstcall)
                setAnimation ("ID_PLAYER", 1);
                stopAnimation("ID_PLAYER");
                say("Hier war ich doch schonmal!");
            endif
             setAndStartAnimation("ID_CURSOR",1);
        </onLoad>
        <onEnter>
            enableInput(false);
            movePlayerTo(378,443);
            waitForTarget("ID_PLAYER");
            enableInput(true);
        </onEnter>
    </sprite>
   </screen>

   <!-- next Screen --------------------------------------------------------------------------- -->

    <screen id="104" name="Gosse" bgimg="background_b.bmp" mapimg="background_map3_b.bmp" width="800" height="600">

     <!-- Menü -->
       <menu id="menu01" img="menue.bmp" width="420" height="160" frameX="5" frameY="0" frameWidth="200" frameHeight="159">
           <menuitem id="nimm"    x="40" y="14" mapX="255" mapY="14" width="120" height="20" />
           <menuitem id="schau"   x="40" y="34" mapX="255" mapY="34" width="120" height="20" />
           <menuitem id="rede"    x="40" y="54" mapX="255" mapY="54" width="120" height="20" />
           <menuitem id="benutze" x="40" y="74" mapX="255" mapY="74" width="120" height="20" />
           <menuitem id="druecke" x="40" y="94" mapX="255" mapY="94" width="120" height="20" />
           <menuitem id="oeffne"  x="40" y="114" mapX="255" mapY="114" width="120" height="20" />
       </menu>

       <sprite img="walk4sides.bmp" id="ID_PLAYER" x="200" y="250" z="3" width="2160" height="800" spriteWidth="120" spriteHeight="200">
        <animation>
            <sequence id="1" startX="0" startY="0" endX="17" endY="0" comment="vor" />
            <sequence id="2" startX="0" startY="1" endX="17" endY="1" comment="zurück"/>
            <sequence id="3" startX="0" startY="2" endX="17" endY="2" comment="rechts"/>
            <sequence id="4" startX="0" startY="3" endX="17" endY="3" comment="links"/>
        </animation>
        <onLoad>
            configSpeech($PLAYERX+50, $PLAYERY-20,ZERO,ZERO,ZERO);
            say("Uh... was für ein trostloser Ort.");
            setAnimation("ID_PLAYER",1);
            startAnimation("ID_PLAYER");
            movePlayerTo(378,443);
        </onLoad>
    </sprite>

    <sprite img="dummy.bmp" id="F11" x="110" y="300" z="2" width="130" height="97" >
        <onLookAt>
            goTo("ID_START");
        </onLookAt>
    </sprite>

    <sprite img="dummy.bmp" id="F12" x="110" y="300" z="2" width="130" height="97" >
        <onLookAt>
            //showCursor(FALSE);
        </onLookAt>
    </sprite>
   </screen>

   <!-- next Screen --------------------------------------------------------------------------- -->

 </screens>
</Adventure>


Bermuda DTD

Allgemeine Informationen DTD für BXML-Dokumente

<!ELEMENT Adventure (screens,INTERNAL?)>
<!ATTLIST Adventure id CDATA IMPLIED>

<!ELEMENT screens (screen+)>

<!ELEMENT screen (inventory*, menu*, sprite*, isprite*, cast*)>
<!ATTLIST screen id ID>
<!ATTLIST screen bgimg CDATA "">
<!ATTLIST screen mapimg CDATA "">
<!ATTLIST screen width CDATA "">
<!ATTLIST screen height CDATA "">
<!ATTLIST screen name IMPLIED >
<!ATTLIST screen wave IMPLIED >

<!ELEMENT inventory (invitem*)>
<!ATTLIST inventory id ID>
<!ATTLIST inventory img CDATA "">
<!ATTLIST inventory x CDATA "">
<!ATTLIST inventory y CDATA "">
<!ATTLIST inventory z CDATA "">
<!ATTLIST inventory width CDATA "">
<!ATTLIST inventory height CDATA "">
<!ATTLIST inventory iconWidth CDATA "">
<!ATTLIST inventory iconHeight CDATA "">
<!ATTLIST inventory border CDATA "">
<!ATTLIST inventory count CDATA "">

<!ELEMENT invitem EMPTY>
<!ATTLIST invitem id (I_FRAME | I_MASK | I_ARROW_L | I_ARROW_R ) >
<!ATTLIST invitem x CDATA "">
<!ATTLIST invitem y CDATA "">
<!ATTLIST invitem mapX CDATA "">
<!ATTLIST invitem mapY CDATA "">
<!ATTLIST invitem width DATA "">
<!ATTLIST invitem height CDATA "">

<!ELEMENT menu (menuitem*)>
<!ATTLIST menu id ID>
<!ATTLIST menu img CDATA "">
<!ATTLIST menu width CDATA "">
<!ATTLIST menu height CDATA "">
<!ATTLIST menu frameX CDATA "">
<!ATTLIST menu frameY CDATA "">
<!ATTLIST menu frameWidth CDATA "">
<!ATTLIST menu frameHeight CDATA "">

<!ELEMENT menuitem EMPTY>
<!ATTLIST menuitem id ID >
<!ATTLIST menuitem x CDATA "">
<!ATTLIST menuitem y CDATA "">
<!ATTLIST menuitem mapX CDATA "">
<!ATTLIST menuitem mapY CDATA "">
<!ATTLIST menuitem width CDATA "">
<!ATTLIST menuitem height CDATA "">

<!ELEMENT sprite (animation*, onLoad*, onClick*, onEnter*, onDrop*, onLookAt*, onMouseOver*, onOpen*, onPush*, onTake*, onTalkTo*, onUse*)>
<!ATTLIST sprite id ID >
<!ATTLIST sprite img CDATA "">
<!ATTLIST sprite x CDATA "">
<!ATTLIST sprite y CDATA "">
<!ATTLIST sprite z CDATA "">
<!ATTLIST sprite width CDATA "">
<!ATTLIST sprite height CDATA "">
<!ATTLIST sprite spriteWidth CDATA "">
<!ATTLIST sprite spriteHeight CDATA "">
<!ATTLIST sprite bindToY CDATA "" #IMPLIED>
<!ATTLIST sprite loop CDATA "" #IMPLIED>
<!ATTLIST sprite random CDATA "" #IMPLIED>
<!ATTLIST sprite scale CDATA "" #IMPLIED>
<!ATTLIST sprite DESTROYED CDATA #FIXED "true" #IMPLIED>

<!ELEMENT animation (sequence*)>

<!ELEMENT sequence EMPTY>
<!ATTLIST sequence id ID >
<!ATTLIST sequence startX CDATA "">
<!ATTLIST sequence startY CDATA "">
<!ATTLIST sequence endX CDATA "">
<!ATTLIST sequence endY CDATA "">

<!ELEMENT isprite ( onLoad*, onDrop_*, onLookAt*, onMouseOver*, onOpen*, onPush*, onTake*, onTalkTo*, onUse*)>
<!ATTLIST isprite id ID "">
<!ATTLIST isprite mapX CDATA "">
<!ATTLIST isprite mapY CDATA "">

<!ELEMENT onLoad (#CDATA)>

<!ELEMENT onClick (#CDATA)>

<!ELEMENT onEnter (#CDATA)>

<!ELEMENT onDrop_ (#CDATA)> (Anm.: onDrop selbst gibt es nicht; DropEvents sind immer der Form <onDrop_DropPartnerID> )

<!ELEMENT onLookAt (#CDATA)>

<!ELEMENT onMouseOver (#CDATA)>

<!ELEMENT onOpen (#CDATA)>

<!ELEMENT onPush (#CDATA)>

<!ELEMENT onTake (#CDATA)>

<!ELEMENT onTalkTo (#CDATA)>

<!ELEMENT onUse (#CDATA)>

<!ELEMENT cast EMPTY>
<!ATTLIST cast id ID >
<!ATTLIST cast oid IDREF >

<!ELEMENT INTERNAL (SET)>

<!ELEMENT SET EMPTY >
<!ATTLIST SET id (counter | flag | activeCounter | currentScreen | ielement | opx | opy) "">
<!ATTLIST SET key CDATA "" #IMPLIED>
<!ATTLIST SET val CDATA "" >


Bermuda GameEngine Startseite

Allgemeine Informationen Einführung Bermuda GameEngine - Dokumentation

Mit der Bermuda GameEngine ist es möglich Adventuregames anhand einer XML-Struktur zu Erstellen. Mittels der integrierten Scriptsprache kann die nötige Dynamik eingebracht werden.

Diese Referenz umfasst alle XML- und Script-Definitionen, die zur Programmierung der Bermuda Engine nötig sind.

Bermuda XML -Referenz
Enthält eine Beschreibung aller XML-Tags und derer Attribute.

Bermuda Script -Referenz
Enthält eine Beschreibung aller Befehle der Scriptsprache.

Stand: 13.01.2003 01:48:29
BXML-Version: 1.e
BScript-Version: 3.h

Autor: René Bühling
Projekt Bermuda
Fachhochschule Augsburg WS 2002
Homepage zum Projekt

Dieses Dokument und seine Inhalte sind urheberrechtlich geschützt.
Copyright © 2003 Projekt Bermuda / René Bühling