kind: reference

Kartografie

Wie man einen Raum festhält, den man gefunden hat, oder einen, den man bauen will: als Textdatei, Feld für Feld, mit seinen Wänden, Türen, Leuchten und allem, was darin steht. Hier stehen alle Einträge zum Nachschlagen.

Schreib alles auf. Auch das, was sich nicht wiederholen lässt. Vor allem das.

Erste Regel der Kartografen

1. Die Dateien

Ein Level besteht aus einer Datei level.ini und einer Datei für jeden Raum im Ordner rooms, etwa rooms/zimmer.room. Der Dateiname ist der Name des Raums: nur Kleinbuchstaben, Ziffern, - und _.

Beide Arten von Dateien bestehen aus Abschnitten in eckigen Klammern, darunter Einträge name = wert, wie in einer INI-Datei. Eine Zeile, die mit # beginnt, ist ein Kommentar, ebenso alles ab einem # mit Leerzeichen davor und danach; eine Farbe wie #86763c hat kein Leerzeichen dahinter. Längen sind in Metern, Winkel in Grad, Farben hexadezimal wie in CSS.

Das Programm liest zuerst den Raum aus start =, dann jeden Raum, zu dem eine Tür eines schon gelesenen Raums führt. Eine Datei, zu der keine Tür führt, liest es nie.

# Ein kleines Zimmer.

[room]
name = Zimmer
height = 2.6
look = east

[map]
#######
#.....#
#.@.L.1
#.....#
#######

[L]
light = #ffe7b8
power = 0.9

[1]
door = gang 1

2. level.ini

Im Abschnitt [level]:

Eintrag Bedeutung
name der Name des Levels
start der Raum, in dem man anfängt: start = zimmer liest rooms/zimmer.room
bounces wie oft Licht von Flächen zurückgeworfen wird (3); 0: nur direktes Licht
detail Punkte der Lightmap je Meter (16): mehr gibt schärfere Schatten und dauert länger
ambient Licht von überall (0)
vhs on: das Bild wie von einer alten Videokassette
aberration on: farbige Säume zum Rand hin, wie durch eine einfache Linse

3. Der Grundriss

In [map] steht der Grundriss, von oben gesehen, oben ist Norden. Jedes Zeichen ist ein Feld, ein Meter im Quadrat. Hier zählt jedes Zeichen, Kommentare gibt es darin nicht.

Zeichen Bedeutung
# Wand
. Boden
@ hier fängt man an, nur einmal im ganzen Level
Leerzeichen nichts, außerhalb des Raums
ein Buchstabe eine Leuchte, ein Block, ein Modell, ein Becken, eine Treppe oder ein Podest, beschrieben im Abschnitt mit diesem Buchstaben; statt eines #: eine Wand mit runden Ecken
eine Ziffer eine Tür, beschrieben im Abschnitt mit dieser Ziffer; dieselbe Ziffer mehrmals in einer Reihe, nebeneinander oder untereinander, ist eine breite Tür
_ ein Loch im Boden; darunter liegt ein anderer Raum, beschrieben in [_]
^ ein Loch in der Decke: Der Raum darüber hat dort sein _

Ein Feld mit Boden darf nicht an »nichts« grenzen: Um jeden Raum steht eine Wand. Die Wände zweier Räume dürfen sich überdecken, ihre Böden nicht.

4. [room]

Eintrag Bedeutung
name der Name, den die Automap zeigt
height Deckenhöhe über dem Boden (2,7); zwei Zahlen für eine schräge Decke, etwa height = 3, 7
slope flat, die Richtung, in die die Decke ansteigt (north, east, south, west), oder gable, ein Satteldach, sein First an der längeren Seite
ramp ein schräger Boden: Richtung und um wie viele Meter er ansteigt, etwa ramp = east, 4; negativ: Er fällt. Decke und Leuchten steigen mit
walls wallpaper, marble, wood, tiles, velvet, plain, concrete, brick oder terrazzo, in der Farbe von wallpaper
floor carpet, marble, wood, tiles, plain, concrete, brick, terrazzo, carpet_tiles, checker oder parquet, in der Farbe von carpet
wallpaper, carpet, ceiling die Farben von Wänden, Boden und Decke
baseboard die Sockelleiste: Höhe und Farbe; ohne Angabe 8 cm und dunkler als die Tapete; none: keine. An einem schrägen Boden läuft sie schräg mit
dado die Wände unten anders: Höhe und Farbe, etwa dado = 1, #553a27
dado_material woraus dieser untere Teil ist, wie bei walls; ohne: wie die Wand
dado_rail eine Leiste auf seiner Kante: Höhe und Farbe
cornice eine schräge Leiste, wo Wand und Decke sich treffen: Höhe und Farbe
look wohin man am @ schaut: eine Himmelsrichtung oder Grad, im Uhrzeigersinn von Norden aus
ambient Licht von überall in diesem Raum (0 bis 1)

5. Was in einem Feld steht

Jeder Buchstabe im Grundriss hat einen Abschnitt mit diesem Buchstaben. Was darin steht, sagt, was er ist.

Eine Leuchte

Sie hängt knapp unter der Decke, mitten über ihrem Feld, unter einer schrägen Decke so schräg wie sie.

Eintrag Bedeutung
light ihre Farbe, etwa #fff3cf
power wie hell (1)
size Breite und Länge, eine Zahl für eine quadratische (0,85); größere werfen weichere Schatten
flicker 1: Sie flackert ab und zu

Ein Block

Eintrag Bedeutung
block Breite, Höhe, Tiefe, mitten auf seinem Feld; eine Zahl: das ganze Feld so hoch. Höher als die Decke: Er verschwindet in ihr
base wie hoch er über dem Boden schwebt (0)
color seine Farbe; ohne: wie die Wände seines Raums
material woraus, wie bei walls, dazu cardboard: ein Karton mit Klebeband, Etikett und Pfeilen
shape round: eine runde Säule
rotation in Grad um die senkrechte Achse gedreht, um seine Mitte; nur um diese Achse. Gedreht bleibt er am besten in seinem Feld
offset aus der Mitte des Felds geschoben: x, y, z (x nach Osten, y nach oben, z nach Süden)

Eine runde Ecke

Ein Buchstabe statt eines #, dessen Abschnitt round nennt, ist eine Wand mit runden Ecken.

Eintrag Bedeutung
round der Radius in Metern. Treffen an dem Feld zwei Wände des Raums aufeinander (ein # in einer Ecke des Raums), wird die Ecke ein Viertelkreis, Boden und Decke folgen ihm. Ragt die Wand dort in den Raum (das Ende einer Wand, die Ecke eines Pfeilers), wird ihre Kante rund; an einer Wand, die ein Feld dick ist, höchstens 0,5, dann ist ihr Ende ein Halbkreis

Sockelleiste, Lambris, Stuhlleiste und Gesims laufen um die Rundung herum. Der Radius muss passen: auf beiden Wänden bis zur nächsten Tür oder Ecke, innerhalb des Raums. Passt er nicht, steht oben links, an welchem Feld.

Ein Modell

Eine Statue, ein Möbelstück, eine Lampe: eine Datei im Format glTF, als .gltf mit ihren Dateien daneben oder als eine .glb. Modelle unter CC0 gibt es etwa bei Poly Haven, in der Auflösung 1K.

Eintrag Bedeutung
model der Pfad zur Datei, etwa models/sofa_03/sofa_03_1k.gltf
height wie hoch es ist (2)
rotation gedreht, in Grad: eine Zahl um die senkrechte Achse; drei, x, y, z, um alle drei Achsen, erst um y, dann um x, dann um z
offset aus der Mitte des Felds geschoben: x, y, z
material marble: aus Marmor statt in seinen eigenen Farben
pedestal ein Sockel darunter: Breite, Höhe, Tiefe; pedestal_color und pedestal_material wie bei einem Block
light eine Farbe: Das Modell ist eine Lampe. Ihr Licht kommt aus seinen leuchtenden Teilen, nach allen Seiten; power und flicker wie bei einer Leuchte
beam bei einer Lampe mit Schirm: Das Licht fällt nur in einen Kegel nach unten, so viel Grad von der Senkrechten, etwa beam = 75; beam = up, 60: nach oben

Erst wird ein Modell gedreht, um seine eigene Mitte. Dann steht seine Mitte über der Mitte des Felds und sein tiefster Punkt auf dem Boden oder dem Sockel. Erst danach schiebt offset es weiter, in den Richtungen der Welt, nicht in denen des gedrehten Modells.

Ein Becken

Jedes Feld mit dem Buchstaben gehört zum Becken; Felder nebeneinander, gleich tief, mit gleichem Wasser und gleicher Farbe, bilden ein Becken. In ein Becken voll Wasser kann man nicht hineingehen, in ein leeres Becken fällt man. Ein Raum mit einem Becken hat keine Rampe.

Eintrag Bedeutung
pool wie tief es unter den Boden reicht, 0,2 bis 20 m
water wie tief unter dem Boden das Wasser steht (0,15); off: leer
tint die Farbe des Wassers: so, wie Weiß hinter 2 m davon aussieht (#86b8b5, blaugrün)
waves wie groß die Wellen sind: 1 ruhig, 2 größer, 0 glatt
color die Fliesen des Beckens
rim ein Rand aus Fliesen: Höhe und Breite, etwa rim = 0.15, 0.3
railing on: ein Geländer, wo man am Rand stehen kann

Eine Treppe, ein Podest

Unter beiden ist kein Platz: Sie sind massiv. Eine Treppe braucht ein Rechteck aus Feldern und davor Platz, um auf die erste Stufe zu treten.

Eintrag Bedeutung
stairs eine Treppe: Richtung und Höhe oben, etwa stairs = north, 3, in Stufen von etwa 18 cm. Liegt an ihrem unteren Ende ein Podest, beginnt sie auf dessen Höhe
raise ein Podest: Diese Felder liegen so viel höher; nebeneinander sind sie eins
railing on: ein Geländer, wo es an der Seite mehr als einen halben Meter hinuntergeht, für alle Treppen und Podeste eines Raums in einem Stück
material, color woraus und in welcher Farbe; ohne: wie Boden und Wände des Raums

Im Becken, auf dem Podest

Eine Leuchte, ein Block oder ein Modell kann zugleich zu einem Becken oder einem Podest gehören:

Eintrag Bedeutung
in = W das Feld gehört zum Becken der W: eine Säule im Wasser, eine Leuchte darüber
on = P das Feld gehört zum Podest der P: ein Stuhl darauf

6. Türen und Löcher

Eine Tür ist ein Feld, das zwei Räumen gehört. Wie hoch und wo ein Raum liegt, folgt aus seinen Türen; es genügt, wenn einer der beiden Räume die Tür beschreibt.

Eintrag Bedeutung
door = gang 2 diese Ziffer ist dasselbe Feld wie die 2 in rooms/gang.room
door = halle 1, -4 eine Tür hoch in der Wand: Der Boden auf der anderen Seite liegt 4 m tiefer; ohne Minus höher
arch = 2.4 oben rund, ein Halbkreis über die ganze Breite, in der Mitte 2,4 m hoch; arch = 2.4, 0.8: nur 0,8 m breit, daneben Wand
casing = on ein Rahmen: innen heller Putz, unten eine Schwelle aus Stein, auf jeder Seite der Wand eine Leiste um die Öffnung, in der Farbe der Sockelleiste des Raums oder, ohne Sockelleiste, hell gestrichen

Eine Tür ist so tief wie die Wand, ein Feld, und sieht aus wie der Raum, dem dieses Feld gehört; mit casing = on hat sie einen Rahmen.

Ein Loch verbindet zwei Räume übereinander. Im oberen Raum stehen _ im Grundriss und ein Abschnitt [_], im unteren an denselben Feldern ^:

Eintrag Bedeutung
below = keller der Raum darunter
slab wie dick der Boden zwischen beiden ist (0,3)

Räume dürfen übereinander liegen, solange der obere Boden nirgends unter der Decke des unteren liegt.

7. Tasten

Taste Was passiert
W A S D, Pfeile laufen (mit Shift rennen), drehen
M oder Tab die Automap; darin V: die Räume von oben, U: was von hier aus gezeichnet wird
T L B O Texturen, direktes Licht, zurückgeworfenes Licht, Kontaktschatten
G E K die Punkte der Lightmap, die Kanten, was beim Laufen im Weg ist
F H C X Flackern, Bloom, Videokassette, farbige Säume
3 ein Bild für eine Rot-Cyan-Brille
Shift L, Shift R, P das Licht neu berechnen, zurück zum Anfang, den Kasten oben links aus- und einblenden

8. Zum Nachschlagen

  • glTF 2.0: die Beschreibung des Formats der Modelle, von der Khronos Group
  • three.js: die Dokumentation der 3D-Bibliothek, mit der gezeichnet wird
  • Poly Haven: Modelle unter CC0
  • GLSL: die Sprache der Shader, die Licht, Holz, Fliesen und Marmor berechnen