White World

Readme

  1. Kurzübersicht
  2. Steuerung & Optionen
  3. Eigene Level und Welten erstellen
  4. Credits

Kurzübersicht

"WhiteWorld" besteht aus kleinen 3D Labyrinthen. Die Spielidee stammt nicht von mir, ich habe nur mal ein Video von "The Unfinished Swan" gesehen. (Siehe Credits)
Ziel des Spiels ist es, vom Start zum Ende eines Labyrinths zu kommen. Besonders steht die räumliche Orientierung im Vordergrund: Die Umgebung ist einfarbig, man kann allerdings kleine Farbbälle werfen um Wände, Boden und Decken erkennen zu können.
Zusätzlich muss man u.U. Eine Wand mittels Schalter bewegen oder alle Sterne eingesammelt haben, bevor man das Level abschließen kann.
Wer am Ende einer Levelsammlung (Welt) die wenigste Farbe oder die wenigste Zeit gebraucht hat, darf sich als Rekordhalter eintragen.

Steuerung & Optionen

Gesteuert wird mit der Tastatur (WASD oder Pfeiltasten zum Bewegen) und der Maus (umsehen und Farbbälle werfen).

Mit M wird die Hintergrundmusik gewechselt.

Sollte das letzte Level aus irgendeinem Grund Farben verwendet haben, die Sie nicht oder nur schwer erkennen, können Sie die Farben im Hauptmenü durch einen Druck auf Backspace auf Schwarz/Weiß zurück stellen.
Um ein laufendes Spiel zu beenden reicht ein Druck auf Escape. keyboard
Im Optionsmenü kann das Spiel angepasst werden:
- Die Lautstärke für Effekte und Musik lassen sich separat regulieren.
- Die Stärke des Blurs kann verändert werden. Sollte sich Unwohlsein, Kopfschmerzen o.ä. beim Spielen einstellen, stellen Sie den Blur herunter bzw. schalten Sie ihn ganz ab.
- Die Drehgeschwindigkeit bestimmt, wie schnell Sie sich im Spiel um die eigene Achse drehen, wenn Sie die Maus bewegen.
- Withe World lässt sich sowohl im Fenster, als auch im Vollbild Spielen.

Warum nur ein Musikstück? Das ist verdammt eintönig!
Musik ist groß - und es macht wenig Sinn, ein kleines Spiel mit Musik auf zu blasen, die den Leuten womöglich gar nicht gefällt. Zumal die Musik vollkommen frei & kostenlos ist.
Daher empfehle ich hiermit für einen optimalen Spielgenuss folgende Titel von ansiform (einfach herunterladen und in den Data\Musik Ordner schmeißen):
ansi002) fluids
ansi014) at least we tried
ansi020) alpha decay
ansi025) it only hurts when i think about it

Nach Oben

Eigene Level und Welten erstellen

  1. Welche Werkzeuge braucht man?
  2. Schritt für Schritt
  3. Das Level gestalten
  4. Was gehört wo hin?
  5. Beispiel am L-Raum
  6. Eine Wand ziehen
  7. Schalten und walten
  8. Sterne, Schilder, Hinweise
  9. Alles zusammen
  10. Befehlsreferenz

Welche Werkzeuge braucht man?

  1. Die 3-Dimenionalen Level kann mit dem kostenlosen Programm Maplet erstellen.
  2. Für die weitere Gestaltung des Levels braucht man nur einen Simplen Editor. Der Windows eigene Editor reicht aus, ich für meinen Teil verwende ConTEXT


Schritt für Schritt
Um eine neue Welt zu beginnen, erstelle einen neuen Unterordner in "White World\Data\Level". Der Name des Ordners ist gleichzeitig der Name der Welt.
Lege darin eine neue Textdatei mit dem Namen "WorldInfo.txt" an, die Folgende drei Zeilen enthalten sollte:

<Autor> Xeres
<Schwierigkeit> 1
<Beschreibung> Mein neustes, geniales Machwerk!

Hinter <Autor> trägt man seinen Namen oder Nick ein.
<Schwierigkeit> erwartet eine Zahl von 1 (einfach) bis 5 (schwer).
In der <Beschreibung> kann man noch ein paar Bemerkungen an den Spieler weiter geben.

Sobald man WhiteWorld startet, werden beste Zeit und Flecken automatisch in dieser Datei ergänzt.

Eigene Level und Welten erstellen | Nach Oben


Das Level gestalten
Jetzt wäre ein guter Zeitpunkt Maplet zu starten. Fertig? Gut!
Als erstes lade am besten die Standardtextur "Wtex.png" die ihr im Ordner "White World\Data\Objects" findet. Wähle in der Menüleiste Texture -> Open... und ändere bmp files entweder in png files oder All files um die Textur finden zu können.
Hast du diesen Schritt vergessen, wirst du durch dein Level hindurch fallen. Das lässt sich leicht korrigieren, wenn du die <invisible> Textur auswählst und sie mittels Texture -> Replace... mit der Standardtextur ersetzt.
Falls du mit Maplet noch nie gearbeitet hast, hier eine kurze Übersicht:

Mit A und Z passt man die Gittergröße an. Der Spieler ist 1.0 Einheiten Breit und 1.6 Einheiten hoch - so groß (besser etwas größer) sollte man die Räume/Durchgänge wählen, damit der Spieler nicht hängen bleibt.

Q Dreht die Grundformen (z.B. um Rampen in die richtige Richtung zeigen zu lassen).

Wenn man Shift / rechte Maustaste gedrückt hält, lässt sich die Grundebene nach oben und unten verschieben.

Strg dagegen dreht die Kamera.

Esc bricht Aktionen ab.

Mit gedrückter linken Maustaste zieht man zuerst die Grundfläche des ausgewählten Objekts auf, stellt die gewünschte Höhe ein, und klickt nochmal zum Abschluss.

Soweit, so gut. Sobald du ein bisschen Raum geschaffen hast, speicher das ganze als .maplet um weiter daran arbeiten zu können und wähle unter File -> Export -> B3D File..., um das Level in dem Ordner "White World\Data\Objects" für WitheWorld zugänglich zu machen. Beendet Maplet für den folgenden Schritt nicht, ihr müsst ein paar Koordinaten übertragen...

Letzter Hinweis: Beim Doppelklick auf .maplet Dateien öffnet sich zwar Maplet, aber die Datei wird nicht geladen, sondern muss über File -> Open... geöffnet werden.

Eigene Level und Welten erstellen | Nach Oben


Was gehört wo hin?
Legt jetzt in dem World-Ordner neben die WorldInfo.txt Datei eine neue Textdatei z.B. Level01.txt an. Darin müssen mindestens diese Angaben enthalten sein:

<WorldColor> 255 255 255
<WorldMesh> Xeres_lvl01.b3d
<StartPoint> 0 0 -1 +z
<ExitPoint> -4 0 -1 +z

<WorldColor> erwartet 3-6 Parameter, jeweils für den rot, grün und blau Anteil (0-255) der Umgebung bzw. der Flecken. Werden die letzen 3 Parameter nicht angegeben, wird automatisch die Negativfarbe verwendet. Obiges Beispiel ergibt als eine weiße Welt (255,255,255) mit schwarzen Flecken (0,0,0).
Hinter <WorldMesh> trägt man den Dateinamen der 3D Umgebung ein, den man mit Maplet erstellt hat. Um zu verhindern, dass andere Leute identische Levelnamen benutzen und ggf. Dateien überschrieben werden, benutze deinen Namen, den der Welt und/oder ein eindeutiges Kürzel und nicht "level037.b3d" o.ä.!
<StartPoint> und <ExitPoint> sind die Punkte, an denen ein Level beginnt bzw. endet. Die drei Koordinaten geben den Mittelpunkt des Objekts an, der vierte Parameter gibt die Blickrichtung an (+x, -x, +y, -y, +z, -z).

Eigene Level und Welten erstellen | Nach Oben


Beispiel am L-Raum
Wie genau bekommt man die richtigen Koordinaten und Richtungen hin? Hier ist ein kleiner Raum bzw. ein kurzer Gang...

Screen-01
Wenn man den Startpunkt festlegen möchte, verschiebt man als erstes das Bodengitter 1 Einheit über den Boden und legt den Cursor direkt auf den Schnittpunkt von Wand und Gitter.
Screen-02
Der Cursor ist extra mit einem grünen Kreis markiert, die exakten Koordinaten lassen sich rechts unten ablesen und hinter <StartPoint> eintragen (getrennt nur durch ein Leerzeichen, nicht durch ein Komma!). Jetzt bewegt man den Cursor in den Raum hinein und vergleicht die Koordinaten.
Screen-03
Da die Z-Koordinate kleiner wird, muss die Richtung also mit -z angegeben werden. Wird eine falsche Richtung angegeben, kann man den Start oder Endpunkt nicht sehen oder erreichen (oder startet außerhalb des Levels).
Screen-04
Um das Ende hier an der richtigen Stelle ein zu fügen, muss man 6 1 -4 -x angeben.

Eigene Level und Welten erstellen | Nach Oben


Eine Wand ziehen
Um ein räumlich kleines Level trotzdem interessant zu machen, kann man Wände in der Farbe der Welt ziehen. Schließen die Kanten fugenlos ab, ist die Wand nicht vom Rest des Levels zu unterscheiden.

Screen-05
Um mit <Wall> eine Wand zu generieren, braucht man satte 9 Parameter. Die ersten Drei geben wieder die Position des Mittelpunktes an: 2.5 1 -4
Jetzt folgt die Ausbreitung in jede Richtung. Um die Wand links mit dem Level ab zu schließen, muss die Wand in X Richtung zu beiden Seiten 0.5 Einheiten dick sein. Oder anders gesagt: der Gang ist insgesamt 2 Einheiten hoch und tief: 1 2 2
Screen-06
So kann man sich den Würfel vorstellen. Aufgrund der Ansicht wirken die Abstände leicht verzerrt...

Okay, fehlen nur noch die letzten 3 Koordinaten - das ist die Position, an die die Wand verschoben wird (dazu gleich mehr). Für das Beispiel verschiebe ich die Wand einfach nach oben, bis sie nicht mehr durch die Decke ragt. Dazu nehme ich die Startkoordinaten und rechne 3 Einheiten auf die Y Achse: 2.5 4 -4
Insgesamt sieht die Zeile dann so aus:
<Wall> 2.5 1 -4 1 2 2 2.5 4 -4

Eigene Level und Welten erstellen | Nach Oben


Schalten und walten
Natürlich macht diese Wand nur Sinn, wenn man sie bewegen kann - sonst könnte man sie ja auch gleich weniger kompliziert mit Maplet machen.
Nach der Wand kann man beliebig viele Schalter angeben, die die Wand dazu bringen, sich von der Start- in die Endposition zu begeben. Ein Schalter ist ein gut sichtbare Kugel, die ihren Status in einer Farbe pulsierend mitteilt.
Für das Beispiellevel könnte man dies angeben:

<Trigger> 1 1 -4 True True

Die Koordinaten liegen Links vor der Wand, der Schalter steht auf EIN (True = 1, False = 0) und soll ebenfalls auf EIN stehen, um die Wand zu bewegen. Was bewirkt dies?
Zu Beginn des Spiels befindet sich die Wand auf ihrer Endposition und versperrt dem Spieler erst dann den weg, wenn dieser in die Nähe des Schalters kommt und diesen unwillkürlich auf AUS umstellt. Das selbe könnte man erreichen, wenn man für den Schalter False False angibt.
Damit die Wand gleich zu Anfang den Weg versperrt, muss die Schalterposition mit False True oder True False angegeben werden.
Wenn man mehrere Schalter verwendet, muss der Spieler erst einmal herausfinden, welche Schalter er "umlegen" muss, und in welche Richtung.
Aber Achtung! Zu viele oder zu weit auseinander liegende Schalter werden den Spieler eher frusten als das er sich über dieses Rätsel freut!

Um große Level übersichtlicher zu machen oder etwas Abwechslung zu schaffen gibt es <ColorTrigger>. Läuft der Spieler daran Vorbei, benutzt er bis auf weiteres dessen Farbe.

<ColorTrigger> 1 1 -4 0 255 0

3 Koordinaten für die Position und 3 Farbanteile.

Eigene Level und Welten erstellen | Nach Oben


Sterne, Schilder, Hinweise
Sterne sind Objekte, die der Spieler einsammeln muss, bevor er ein Level beenden kann. Ein solcher lässt sich mittels einer Koordinatenangabe einfach setzen. Damit kann man Spieler in Richtungen lotsen oder zwingen, das gesamte Level zu durchsuchen, auch wenn das Ende leicht zu finden ist.

<Star> 1 1 -3

Genauso kann man beliebig Hinweisschilder platzieren (Richtung angeben nicht vergessen!). Das Schild sollte sich als .png mit Alphachannel im Ordner White World\Data\Textures befinden.

<Label> Wrong.png 1 1 -5 +z

Text der ohne vorgefertigte Textur auskommt, gibt es ebenfalls:

<FreeLabel> <-Da_entlang! 0 1 -2 +x True

Der Text wird automatisch umgebrochen um in etwa denselben Bereich aus zu füllen, wie ein Schild. Dieses Verhalten kann geändert werden, indem man in dem Text(am besten zu Beginn oder Ende) ein [Z] einfügt - der Text wird in einer langen Zeile angezeigt.
Leerzeichen müssen mit Unterstrichen umschrieben werden, Koordinaten und Richtung wie gehabt. Der Letzte Parameter betrifft die Sichtbarkeit. True bedeutet Sichtbar (Gegenfarbe), False Unsichtbar (Weltfarbe).

Zu guter Letzt kann man einen Text vor dem Spieler einblenden lassen.

<Text> Los_geht's! 1 1 -1

Wenn der Spieler in die Nähe der Koordinaten 1, 1, -1 kommt, wird der Text ein paar Sekunden lang angezeigt.

Eigene Level und Welten erstellen | Nach Oben


Alles zusammen

# Level 15, von Xeres
Kommentare können übrigens direkt in die Level-Datei getippt werden.
(Das Doppelkreuz (#) ist nur zur Verzierung :) )

# Blaue Welt, weiße Farbe:
<WorldColor> 0 0 255 255 255 255
# Das hier dient nur der Veranschaulichung, das Level ist nirgendwo versteckt...
<WorldMesh> BlueWhite_15.b3d
<StartPoint> -8 3 15 +y

# Zum Start Glück wünschen:
<Text> Viel_Glück! -8 3 15

# Diese Schalter bewegen keine Wand:
<Trigger> 5 -7 -2 True True
<Trigger> 18 5 10 True True

# Nördliche Wand:
<Wall> 5 -5 0 2 1 2 10 -5 -8
<Trigger> 2 0 0 False True

# Südliche Wand:
<Wall> 20 -9 -32 2 1 4 100 100 100
<Trigger> 4 0 0 False True
# Einer der beiden Schalter für die Südliche Wand müsste gar nicht umgeschaltet werden...
<Trigger> 2 0 0 False False

# Vier Sterne im Level zu finden:
<Star> 2 5 -3
<Star> 10 -5 -3
<Star> -5 8 6
<Star> 3 0 12

# Sackgasse
<Label> Wrong.png 12 3.5 -10 -x
# Level-Ende
<ExitPoint> 12 5 -12 +z

Eigene Level und Welten erstellen | Nach Oben

Befehlsreferenz

  1. WorldColor
  2. ColorTrigger
  3. WorldMesh
  4. StartPoint
  5. ExitPoint
  6. Star
  7. Label
  8. FreeLabel
  9. Text
  10. Wall
  11. Trigger

Alle Koordinaten (X, Y, Z) sind Gleitkommazahlen die mit einem Punkt (.) geschrieben werden. Zahlen ohne Punkt werden als .0 interpretiert.
Alle Farbangaben (R, G, B) sind ganze Zahlen zwischen 0 bis 255.
Gültige Richtungsangaben sind +x, -x, +y, -y, +z, -z.

WorldColor

Wenn die Anti-Farbe nicht angegeben wird, wird automatisch die Negativ-Farbe der Welt verwendet.

<WorldColor> Rw Gw Bw [Ra] [Ga] [Ba]
Rw Rot-Anteil der Welt-Farbe
Gw Grün-Anteil der Welt-Farbe
Bw Blau-Anteil der Welt-Farbe
Ra Rot-Anteil der Anti-Farbe
Ga Grün-Anteil der Anti-Farbe
Ba Blau-Anteil der Anti-Farbe

Befehlsreferenz | Nach Oben

ColorTrigger

Die Farbbälle erhalten Standardmäßig die Anti-Farbe, mit diesem Befehl kann man die Farbe einstellen.
Der Schalter ist Unsichtbar und hat einen Wirkungsradius von einer (1) Einheit.

<ColorTrigger> X Y Z R G B
X X-Koordinate
Y Y-Koordinate
Z Z-Koordinate
R Rot-Anteil der Ball-Farbe
G Grün-Anteil der Ball-Farbe
B Blau-Anteil der Ball-Farbe

WorldMesh

<WorldMesh> Datei
Datei Level-Datei
Gibt den Level-Mesh an, der sich im Ordner "White World\Data\Objects" befindet.

Befehlsreferenz | Nach Oben

StartPoint

<StartPoint> X Y Z Richtung
X X-Koordinate
Y Y-Koordinate
Z Z-Koordinate
Richtung Gibt die Richtung an, in die das Schild deuten soll
Jedes Level benötigt genau einen Startpunkt.
Der Spieler wird genau so vor dem Schild gespawnt, dass er es im Blick hat.

ExitPoint

<ExitPoint> X Y Z Richtung
X X-Koordinate
Y Y-Koordinate
Z Z-Koordinate
Richtung Gibt die Richtung an, in die das Schild deuten soll
Jedes Level benötigt genau einen Endpunkt.
Um ein Level ab zu schließen, müssen alle Sterne eingesammelt worden sein.

Befehlsreferenz | Nach Oben

Star

Erzeugt auf den Koordinaten einen Stern, der eingesammelt werden muss.

<Star> X Y Z
X X-Koordinate
Y Y-Koordinate
Z Z-Koordinate

Label

<Label> Datei X Y Z Richtung [Drehung]
Datei Bild-Datei
Die Bild-Datei gibt die Datei an, die sich im Ordner "White World\Data\Textures" befindet. Sie sollte einen Alphakanal enthalten und ansonsten Weiß sein.
X X-Koordinate
Y Y-Koordinate
Z Z-Koordinate
Richtung Gibt die Richtung an, in die das Schild deuten soll
Drehung Winkel von 0-359.
Standard ist 0 - keine Drehung. Die Drehung bezieht sich auf die bei Richtung angegebene Achse.

Befehlsreferenz | Nach Oben

FreeLabel

<FreeLabel> Text X Y Z Richtung [Sichtbar] [Drehung]
Text An zu zeigende Nachricht.
Leerzeichen werden mit Unterstrichen (_) geschrieben.
Die Zeichenfolge [Z] macht den Text einzeilig.
Die Zeichenfolge ~n erzwingt einen Zeilenumbruch.
X X-Koordinate
Y Y-Koordinate
Z Z-Koordinate
Richtung Gibt die Richtung an, in die der Text deuten soll
Sichtbar Anti-Farbe oder Welt-Farbe.
Kann die Werte 1 bzw. true oder 0 bzw. false einnehmen, Standard ist 1 - Anti-Farbe.
Drehung Winkel von 0-359.
Standard ist 0 - keine Drehung. Die Drehung bezieht sich auf die bei Richtung angegebene Achse.

Text

Nähert sich der Spieler den Koordinaten bis auf 1 Einheit, wird der Text alle 5 Sekunden angezeigt.

<Text> Text X Y Z
Text An zu zeigende Nachricht.
Leerzeichen werden mit Unterstrichen (_) geschrieben.
X X-Koordinate
Y Y-Koordinate
Z Z-Koordinate

Befehlsreferenz | Nach Oben

Wall

Erzeugt eine Wand, die den Spieler vor dem Weiterkommen hindert. Richtig angelegt ist sie nicht vom den Levelgrenzen zu unterscheiden.

<Wall> Xs Ys Zs Breite Höhe Tiefe Xe Ye Ze
Xs Start X-Koordinate
Ys Start Y-Koordinate
Zs Start Z-Koordinate
Breite Ausdehnung auf der X-Achse
Höhe Ausdehnung auf der Y-Achse
Tiefe Ausdehnung auf der Z-Achse
Xe End X-Koordinate
Ye End Y-Koordinate
Ze End Z-Koordinate

Trigger

Jeder Schalter gilt für die letzte erstellte Wand. Schalter die vor der ersten Wand erstellt werden, haben keine Spielerische Funktion.

<Trigger> X Y Z [Ist] [Soll]
X X-Koordinate
Y Y-Koordinate
Z Z-Koordinate
Ist Ist Zustand: 1, True oder 0, False - Standard: False
Soll Soll Zustand: 1, True oder 0, False - Standard: True

Befehlsreferenz | Nach Oben

Credits

Habt ihr Fragen, Probleme oder Wünsche, meldet euch im Forum oder schreibt mir 'ne Mail.

Moritz Karbaum alias Xeres, 2010.

Nach Oben