Einstieg

Aus EnigmaWiki

Wechseln zu: Navigation, Suche
Verfügbare Sprachen: Deutsch, English, Русский

Enigma-Levels schreiben ist nicht schwer. Alles, was du brauchst, ist ein Texteditor und ein bisschen Lernwille. Auf dieser Seite lernst du, wie man ein eigenes Level speichert und spielt.

Das erste Level

 
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<el:level xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://enigma-game.org/schema/level/1 level.xsd" xmlns:el="http://enigma-game.org/schema/level/1">
  <el:protected>
     <el:info el:type="level">
       <el:identity el:title="Hello world" el:subtitle="My first level" el:id="20061215weihnachtsmann523"/>
       <el:version el:score="1" el:release="1" el:revision="0" el:status="experimental"/>
       <el:author el:name="Sankt Nikolaus" el:email="weihn@chtsma.nn" el:homepage="http://enigma.mal2.ch"/>
       <el:copyright>Copyright c 2006 Sankt Nikolaus </el:copyright>
       <el:license el:type="GPL v2.0 or above" el:open="true"/>
       <el:compatibility el:enigma="1.00"/>
       <el:modes el:easy="false" el:single="true" el:network="false"/>
       <el:score el:easy="-" el:difficult="-"/>
     </el:info>
     <el:luamain><![CDATA[
 
create_world(20, 13)
 
fill_floor("fl-hay", 0, 0, 20, 13)
draw_border("st-greenbrown")
 
oxyd(3, 3)
oxyd(3, 9)
oxyd(16, 3)
oxyd(16, 9)
 
oxyd_shuffle()
 
set_actor("ac-blackball", 10, 6.5)
 
     ]]></el:luamain>
     <el:i18n/>
  </el:protected>
</el:level>
 

Dies ist ein einfaches Level. Es enthält einen Boden, Einen Rand aus Steinen, zwei Oxyd-Steine und eine schwarze Kugel. Kopiere den Code in einen Texteditor und speichere das Dokument als hallowelt.xml. Achtung: Manche Editoren speichern die Datei per Voreinstellung als hallowelt.xml.txt. Achte darauf, dass dies Dein Editor nicht tut.

Jetzt, wo das Level gespeichert ist, kannst du es mit Enigma öffnen. Unter Linux oder Mac geschieht dies mit dem Konsolen-Befehl

enigma /Pfad-zum-Level/hallowelt.xml

Windows-User öffnen die Eingabeaufforderung (Start → Ausführen → «cmd.exe» eintippen) und geben das Folgende ein:

C:\Programme\Enigma\Enigma.exe C:\pfad-zum-Level\hallowelt.xml

Hinweis: Der Pfad C:\Programme\Enigma\Enigma.exe muss unter Umständen angepasst werden. Der Pfad-zum-Level ebenfalls.

Nach einem Klick auf «Spiel starten» sollte das Level nun angezeigt werden.


Level in den Autofolder verschieben

Natürlich ist es mühsam, wenn das Level nur gespielt werden kann, wenn Enigma zuvor umständlich über die Konsole gestartet wurde. Eine einfache Methode, das Level in das Levelmenü einzubinden, ist der «Auto-Folder». Alle Levels, die sich in diesem Ordner befinden, werden automatisch geladen.

Der Auto-Folder befindet sich im Verzeichnis

USERPFAD/auto

Der USERPFAD Kann in den Optionen von Enigma eingestellt werden.

Bei Linux und Mac befindet sich der Auto-Folder per Default unter

~/.enigma/levels/auto

Unter Windows:

C:\Dokumente und Einstellungen\BENUTZERNAME\Anwendungsdaten\Enigma

Verschiebe also das Level in den Auto-Folder und starte Enigma. Du findest das Level im Levelpaket «User» → «Auto-Folder».

Fortgeschrittene Levelcoder können ihre Levels auch in Levelpacks einbinden. Siehe hierzu den Artikel Levelpacks


Analyse des Levels

Genug gespielt, jetzt wird das Level Analysiert. Wie dir sicher aufgefallen ist, besteht das Level aus zwei verschachtelten Teilen. Der eine, äussere Teil ist XML. Alle Metadaten, wie z.B. Levelname, Autor, Copyrighthinweise werden in XML deklariert. Wie Du diese Metadaten änderst, ist auf der Seite XML-Metadaten beschrieben. Diese Seite hier konzentriert sich auf den inneren Teil, also auf das, was zwischen <el:luamain> und </el:luamain> steht.

Bei diesem inneren Teil handelt es sich um Lua-Code. Das Level an und für sich wird in Lua geschrieben und in den XML-Code eingebettet. <![CDATA[ und ]]> sorgen dafür, dass der XML-Parser im Lua-Code keine XML-Bestandteile sucht. Aus diesem Grund darf die Zeichenfolge ]]> im Lua-Code nicht vorkommen. Sollte sie doch gebraucht werden, ist sie so zu schreiben: ]] >.

So. Höchste Zeit, das Level Zeile für Zeile zu analysieren:

create_world(20, 13)

Ein schöpferischer Akt. Eine Welt von 20 mal 13 Feldern wird erschaffen. Dies ist genau die Grösse eines Bildschirms. Bei Levels, die sich über mehrere Bildschirme erstrecken, ist zu beachten, dass die letzte Spalte des ersten Bildschirms auch gleichzeitig die erste Spalte des zweiten Bildschirms ist. Ein Level, das zwei Bildschirme breit ist, hat daher die Breite 39 und nicht 40. Analog dazu ist die unterste Zeile auch die oberste des nächsten Bildschirms.

fill_floor("fl-hay", 0, 0, 20, 13)

Am zweiten Tag ... Der Boden wird mit dem Befehl fill_floor(...) verlegt. Wie man einen Boden setzt und welche hübschen Böden es gibt erfährst du auf der Seite Böden.

draw_border("st-greenbrown")

Ein Rahmen aus Steinen des typs st-greenbrown wird gesetzt. Auf welche Weise Steine sonst noch gesetzt werden können und welche Steine es gibt, erfährst du auf der Seite Steine.

oxyd(3, 3)
oxyd(3, 9)
oxyd(16, 3)
oxyd(16, 9)

Zu einem Enigma-Level gehören Oxyd-Steine. diese werden ganz simpel mit dem Befehl oxyd(x,y) gesetzt, wobei x und y die Koordinaten des Oxyd-Steins sind. Alternativ kann ein Oxyd-Stein auch wie ein normaler Stein gesetzt werden, z.B. set_stone("st-oxyd",5,6).

oxyd_shuffle()

Mit diesem Befehl werden alle Oxyd-Steine wild durcheinander gemischt.

set_actor("ac-blackball", 10, 6.5)

Am sechsten Tag ... Jetzt wird die schwarze Kugel gesetzt. Wie man Actors setzt und welche Actors es neben der schwarzen Kugel noch gibt, erfährst Du auf der Seite Actors.

Weil nach der Schöpfung die Erschöpfung kommt, darfst du jetzt zur Erholung mit diesem Level herumexperimentieren und enigmieren, bis die Mausmatte durchgewetzt ist.

Persönliche Werkzeuge