Home
Creatures 1
Creatures 2
Creatures 3
* Agenten
* Breed List
* Breeds
* Docking Station
* Ettins
* Forschung
*
Grafiken
* Grendels
* Hilfe
* Namen
* Norns
* Specials
* Sprites
* Tipps & Cheats
* Tutorials
* Utilities
* Welten
Community
Website
|
Das
zweite Agenten-Tutorial beschäftigt sich mit einem Nahrungsmittel, das im Norn-Terrarium
erscheint und mehrfach eingefügt wird. Dafür habe ich einen neuen Agenten, die
Kokosnüsse, erstellt. Einige Passagen im Text sind die gleichen wie beim
Spielzeug-Tutorial. Sie sind trotzdem noch einmal enthalten, damit dieser Agent unabhängig von der ersten Anleitung nachvollzogen
werden kann. 1. Grundlagen
2. Das Skript (COS)
3. Die Sprite-Datei (c16)
4. Die Hilfe-Datei (catalogue)
5. Kompilieren des Agenten
Alle Skripte für Creatures 3
sind in der Programmiersprache CAOS geschrieben, vielen sicherlich schon ein Begriff durch
die Cheats, die über die CAOS-Befehlszeile eingegeben werden können. CAOS-Befehle
bestehen immer aus vier Buchstaben oder Zeichen, z. B. attr, endm, kill,
perm, wait usw.,
bei Bedarf kann dahinter eine Zahl stehen. Das Skript selbst wird als COS-Datei
abgespeichert, wobei COS "Creatures Object Script" bedeutet. Jedes Skript hat eine Nummer; C3
kann Skriptnummern von 1 - 65.000 verwalten, wobei die ersten 10.000 für Creatures Labs
und die Originalskripte reserviert sind. Es ist sinnvoll, sich zu informieren, welche der
restlichen Nummern bereits vergeben sind, denn es sollte vermieden werden, Nummern doppelt
zu verwenden, da sonst ein Skript das andere überschreibt. Listen der reservierten
Skriptnummern können bei Bibble World und
beim CDN eingesehen werden, dort
kann man sich auch eintragen lassen.
Außer
dem Skript benötigen die meisten Agenten eine Bilddatei, die im
Format "c16" stehen muss. Solche Dateien nennt man
Sprites. Möchte man dem Agenten auch ein Geräusch oder eine
Melodie zuordnen, braucht man eine Sound-Datei im Format
"wav". Wenn auch ein Hilfetext integriert werden soll,
ist eine Catalogue-Datei erforderlich.
Das Skript für die Kokosnüsse
ist ziemlich einfach, deshalb ist es auch für Anfänger gut geeignet. Es besteht aus vier
Teilen, dem Install-Skript, dem Eat-Skript, dem Drop-Skript und dem Entfern-Skript. Man
öffnet bei Agent Works eine neue Datei und gibt dort den Text ein. Das gesamte COS sieht
so aus:

|
inst
reps 7
new: simp 2 8 25502 "coconut" 1 0 4000
attr 195
bhvr 48
elas 40
fric 50
accg 3
aero 5
mvto rand 1100 980 900
cmrt 0
repe
scrp 2 8 25502 12
lock
sndc "eat1"
stim writ from 79 1
wait 10
kill ownr
endm
scrp 2 8 25502 6
doif wall = down
snde "rok2"
endi
endm
rscr
enum 2 8 25502
kill targ
next
scrx 2 8 25502 12
scrx 2 8 25502 6 |
|
| Install-Skript |
| inst
- installiert das Objekt, sämtliche Folgebefehle werden sofort ausgeführt |
| reps 7 - Anzahl der Wiederholungen (hier 7), das Objekt soll sieben Mal
eingefügt werden (dieser Befehl macht den Befehl "repe" am Schluss des Skripts
erforderlich) |
new:
simp 2 8 25502 "coconut" 1 0 4000
* new: simp
- ein neues einfaches Objekt (simple object) soll hergestellt werden
* 2 8 - 2 = family (gilt für die meisten Objekte),
8 = Genus Obst
* 25502 - eigene (reservierte) Skriptnummer (bitte
nicht die gleiche verwenden, siehe Grundlagen!)
* "coconut" - Name der benötigten
Sprite-Datei
* 1 0 - ein Bild der Sprite-Datei wird benötigt, es
hat die Nummer 0
* 4000 - bestimmt die Tiefe des Objekts, wie weit der
Agent im Vordergrund stehen soll (4000 = weit vorn) |
attr 195
* attr -
attributes (Eigenschaften) des Objekts
* 195 - die Werte für die verschiedenen Eigenschaften werden
addiert (1 = tragbar für die Creatures, 2 = tragbar für die Hand, 128 = Schwerkraft, 64
= erkennt Wände als Grenze) |
bhvr 48
* bhvr
- behaviour (Verhalten) des Objekts
* 48
- die Werte für die verschiedenen Verhaltensweisen werden addiert
(Norns können
das Objekt aufheben (32) und essen (16)) |
| elas 40 - elasticity (Elastizität) beim Aufprall in
Prozent (0 = bleibt sofort liegen, 100 = springt hoch) |
| fric 50 - friction (Reibung), je höher der Wert, desto weniger
gleitet das Objekt einen Abhang hinunter |
| accg 3 - acceleration (Beschleunigung), der Schwerkraft
angemessen, Wert meistens 3 |
| aero 5 - definiert den Lufwiderstand (Wert in Prozent in
Relation zur Geschwindigkeit), der Agent verliert 5 Prozent seiner Geschwindigkeit und
fällt etwas langsamer auf den Boden |
mvto rand
1100 980 900
* mvto -
move to (füge an dieser Stelle ein)
* rand -
random (zufällig, willkürlich), wähle einen zufälligen Wert in diesem Bereich
* 1100 980 - die ersten beiden Zahlen geben die Koordinaten an, dieser Agent soll im
Norn-Terrarium unten in der Nähe der Eierlege-Maschine eingefügt werden (mit Strg +
Shift + X können die Koordinaten aufgerufen werden)
* 900 - diese Zahl
bewirkt, dass der Agent wirklich ganz unten landet, ein geringerer Wert fügt den Agenten
in einer oberen Etage ein |
| cmrt 0 - centre current camera on target (richte die Kamera auf das
Objekt), der Wert 0 bewirkt die direkte Bewegung des Bildes zu der Stelle, an der der
Agent eingefügt wird |
| repe - repeat (wiederhole) schließt die Wiederholungsschleife ab, die
mit "reps" begonnen wurde |
|
| Eat-Skript |
scrp 2 8 25502
12
* scrp - script, hier beginnt ein neues Skript, in diesem Fall ein Eat-Skript (definiert
das Ergeignis "Essen")
* 2 8 25502 - "family" und "genus"
und die spezielle Nummer für diesen Agenten (siehe Install-Skript)
* 12 - dieses Skript ist ein "eat
event" |
| lock
- lock (schließe), verhindert, dass
das Skript durch andere unterbrochen werden kann |
sndc
"eat1"
* sndc - sound file (spiele ein Geräusch ab), ordnet dem Objekt während des Essens ein
Geräusch zu
* "eat1" - Name der Sound-Datei, in diesem Fall ein
Essgeräusch aus dem Verzeichnis "Sounds" |
stim writ from
79 1
* stim writ from - stimulus (Reiz), sendet einen Stimulus an das Wesen, etwas zu lernen
oder zu erfahren
* 79 1 - diese Nummer sagt dem Wesen, dass es sich
um Nahrung handelt, dabei werden meistens Fett und Protein produziert |
| wait 10
- warte eine kleine Weile bis zum
nächsten Befehl (etwa eine halbe Sekunde) |
| kill ownr
- kill the owning object (zerstöre
das Objekt), die betreffende Kokosnuss verschwindet |
| endm
- Ende des Eat-Event-Skripts |
|
| Drop-Skript
(nicht unbedingt erforderlich) |
scrp 2 8 25502 6
* scrp - script, hier beginnt ein neues Skript, in diesem Fall ein Drop-Skript (definiert
das Ereignis "Herunterfallen")
* 2 8 25502 - "family" und "genus"
und die spezielle Nummer für diesen Agenten (siehe Install-Skript)
* 6 - dieses Skript ist ein "drop
event" |
doif wall = down
* doif -
do if (führe aus, wenn...), führt einen Befehl aus, wenn die Bedingung erfüllt ist
(dieser Befehl hat zwingend weitere Befehle zur Folge: "else", "elif"
oder "endi")
* wall - wall (Wand), wenn das Objekt mit der Wand
kollidiert wird es in eine bestimmte Richtung gelenkt
* down - down (herab, hinunter) bestimmt die Richtung, in diesem Fall fällt das Objekt
nach unten
* wall = down - wenn die Bedingung erfüllt ist, folgt die Ausführung
des nächsten Befehls, in diesem Fall ertönt das Geräusch |
snde
"rok2"
* snde - sound file (spiele ein Geräusch ab), ordnet dem Ort, an dem sich das Objekt
befindet, ein Geräusch zu
* "rok2" - Name der Sound-Datei, in diesem Fall ein
Geräusch aus dem Verzeichnis "Sounds" |
| endi - schließt den doif-Befehl ab |
| endm
- Ende des Drop-Event-Skripts |
|
| Entfern-Skript
(Removal) * |
| rscr - kennzeichnet das kommende Skript als
Entfern-Skript |
| enum 2 8 25502 - enumerate (aufzählen), alle Objekte mit dieser
Skriptnummer sollen entfernt werden |
| kill targ - kill (zerstöre) target (Zielgruppe), entfernt
das Objekt |
| next - wählt das nächste Spielzeug mit dieser Nummer
aus |
| scrx 2 8 25502
12 - entfernt das Event-Skript (eat) mit dieser Skriptnummer |
| scrx 2 8 25502 6 - entfernt das Event-Skript (drop) mit dieser
Skriptnummer |
| * Das
Entfernskript ist nicht unbedingt nötig, wenn man Agent Works verwendet, da dieser Befehl
beim Kompilieren eingegeben werden kann. Der Vollständigkeit halber habe ich es jedoch
mit in die COS-Datei aufgenommen. |
|
| 3.
Die Sprite-Datei (c16) |
Alle in Creatures
3 verwendeten Bilder haben das Format "c16", sie sind im Ordner
"Images" zu finden. Mit dem SpriteBuilder kann man Bitmaps (bmp) in dieses
Format umwandeln.
Die Kokosnuss
stammt aus Creatures 2, deshalb muss kein eigenes Bild erstellt werden. Man öffnet mit
dem SpriteBuilder die s16-Datei "bery.s16" aus dem C2-Images-Ordner, markiert
die Kokosnuss und exportiert sie als Bitmap. Dann öffnet man mit dem SpriteBuilder eine
neue, leere Datei und importiert das Bild der Kokosnuss mit File/Import All... Nun kann
man die Datei unter dem gewünschten Namen im c16-Format abspeichern: File/Save As...
"coconut.c16".
Bilder für
Agenten kann man natürlich auch selbst erstellen, dazu benötigt man ein
Bildbearbeitungsprogramm. Wie dabei vorzugehen ist, könnt ihr beim Tutorial für ein Spielzeug nachlesen.
| 4.
Die Hilfe-Datei
(catalogue) |
Für die meisten
Objekte in Creatures 3 gibt es einen Hilfetext, der nach Drücken der F1-Taste mit der
rechten Maustaste aufgerufen werden kann. Diese Dateien sind im Format
"cataologue" abgelegt und können auch mit Agent Works erstellt werden, sind
aber nicht unbedingt nötig. Wer seinem Agenten keine Hilfe-Datei mitgeben möchte, kann
dieses Kapitel überspringen.
Man öffnet das
Fenster für den Agent Help Editor, gibt dort den Namen, die Klassifizierung und den Text
ein. Dann speichert man unter dem gewünschten Dateinamen ab - fertig!

| 5.
Kompilieren des Agenten |
Der letzte
Schritt ist die Zusammenstellung des Agenten, alle bisher erstellen Files müssen zu einer
einzigen agent-Datei kompiliert werden. Agent Works bietet auch diese Funktion an. Man
öffnet das entsprechende Fenster und trägt die notwendigen Daten ein.
Der Name des
Agenten muss der Name des Verzeichnisses sein, in dem sich alle Dateien für diesen
Agenten befinden. Die Dateien, die für den Agenten (cos, c16 und
catologue) erstellt
wurden, müssen eingetragen werden, auf korrekte Schreibweise ist unbedingt zu achten. Die
Sound-Datei muss in diesem Fall nicht angegeben werden, da sie sich schon im
Sound-Verzeichnis befindet. Weiter unten, unter Creator Info, muss noch einmal der Name
der Sprite-Datei eingetippt werden, denn das erste Bild davon wird im Erzeuger angezeigt.
In die letzte Zeile gehört das Entfern-Skript mit der bekannten
Skript-Klassifizierungsnummer.
Jetzt
muss nur noch "Compile Agent" gedrückt werden, und wenn
alles korrekt eingegeben wurde, erscheint eine Erfolgsmeldung.
Der neue Agent ist fertig, kann ins Verzeichnis "Meine
Agenten" kopiert und mit dem Erzeuger ins Spiel eingefügt
werden. Sollte sich ein Fehler eingeschlichen haben, kann man
anhand der Fehlermeldung und dem creatures_engine_logfile
herausfinden, was zu ändern ist.
|