012 Übung Nodebox I:
Ziel dieser Übung ist es, Blöcke zu entwerfen, die nicht einem Würfel mit der Kantenlänge 1x1x1 entsprechen:
ÜBUNGSMATERIAL HERUNTERLADEN:
Lade das benötigte Material »012 Material Übung« herunter, um an die graue Steintextur zu kommen. Die Datei »Ausschnitt Quellcode nodebox.txt« gibt einen Ausschnitt des benötigten Quellcodes vor und soll Dir bei der Bewältigung der Aufgabe helfen.
Die Achsen einer Node:
»Minetest« verwendet für »Nodes« ein »internes« Koordinatensystem, das in der Ausrichtung dem entsprecht, das wir bereits in der Übung »006 TEXTUREN« kennengelernt haben. Dabei sitzt jetzt der Nullpunkt immer genau in der Mitte eines Würfels mit der Kantenlänge 1x1x1. Von diesem Punkt aus werden alle Eckpunkte berechnet:
Die Befehle »drawtype« und »node_box«:
Um eine nicht-würfelförmige »Node« zu generieren, benötigt man die Befehle »drawtype« und »node_box«. In formaler Schreibweise sähe ein Quellcode so aus (Ausschnitt):
drawtype = "nodebox", node_box = { type = "fixed", fixed = { {x1, y1, z1, x2, y2, z2} } }
Typischerweise definiert man zuerst den linken unteren Punkt (x1, y1, z1), dann den rechten oberen Punkt der »Node« (x2, y2, z2).
Für unsere bisherigen »Nodes« haben wir die Angaben »drawtype« und »node_box« immer ganz weglassen. Dann rendert »Minetest« automatisch einen Würfel mit der Kantenlänge 1x1x1. Wollte man die »node_box« aber ausschreiben, sähe der Quellcode so aus (Ausschnitt):
Für unsere bisherigen »Nodes« haben wir die Angaben »drawtype« und »node_box« immer ganz weglassen. Dann rendert »Minetest« automatisch einen Würfel mit der Kantenlänge 1x1x1. Wollte man die »node_box« aber ausschreiben, sähe der Quellcode so aus (Ausschnitt):
drawtype = "nodebox", node_box = { type = "fixed", fixed = { {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} } }
flachen liegenden Stein programmieren:
Lege eine neue .lua-Datei an und programmiere wie oben abgebildet eine flache liegende »Node« mit der grauen Steintextur. Die Höhe des Blockes soll ein Viertel des Standardwertes betragen, die Grundfläche 1x1.
Sieh Dir im heruntergeladenen Material die Datei »Ausschnitt Quellcode nodebox.txt« an. Sie zeigt Dir einen Ausschnitt des benötigten Quellcodes und soll Dir bei der Bewältigung der Aufgabe helfen.
Denke daran, in der init.lua-Datei mit dofile einen Verweis auf die neue .lua-Datei einzufügen.
Sieh Dir im heruntergeladenen Material die Datei »Ausschnitt Quellcode nodebox.txt« an. Sie zeigt Dir einen Ausschnitt des benötigten Quellcodes und soll Dir bei der Bewältigung der Aufgabe helfen.
Denke daran, in der init.lua-Datei mit dofile einen Verweis auf die neue .lua-Datei einzufügen.
ES GIBT SELTSAME SCHATTEN-EFFEKTE?
»Nodes«, die nicht die Kantenlänge 1x1x1 haben, führen in »Minetest« oft dazu, dass der Lichteinfall fehlerhaft berechnet wird. Du kannst das verhindern, indem Du zusätzlich folgende Zeile in Deinen Quellcode einfügst:
paramtype = "light"
Nachteil: Dein Block wird insgesamt lichtdurchlässig. Teste es, indem Du ein mindestens drei Blöcke tiefes Loch gräbst und Dich hineinstellst. Schließe das »Dach« des Lochs mit dem gerade erstellten flachliegenden Viertel-Stein. Es ist immer noch hell, oder? Entferne die Viertel-Steine und maure Dich jetzt mit dem Cyan-Stein aus der ersten Übung ein. Ganz schön finster. Findest du wieder heraus aus dem Loch?
Aufrecht stehenden STEIN programmieren:
Programmiere zusätzlich in der eben angelegten .lua-Datei wie oben abgebildet eine aufrecht stehende »Node« mit der grauen Steintextur. Die Kantenlänge des Blockes in positiver Z-Richtung soll ein Viertel des Standardwertes betragen, die aufrecht stehende Fläche die Werte 1x1 besitzen.
Schon fertig?
Entwerfe passende Rezepte für Deine neuen »Nodes«. Überprüfe anschließend im FERTIGUNGSFÜHRER, ob sie funktionieren.
SCHON FERTIG?
Wie wäre es, wenn Du die verschiedenen Bilddateien, die sich im Texturen-Ordner angesammelt haben, kombinierst? Vielleicht arbeitest Du sogar mit der »overlay-Funktion« (^ = Zirkumflex-Akzent)?
SCHON FERTIG?
Die Schreibweise der Koordinaten mit Werten zwischen -0.5 und 0.5 hast Du bereits kennengelernt. Daneben gibt es aber auch die Möglichkeit, die Koordinaten mit 1/8 oder 1/16 der Standardkantenlänge 1 anzugeben. DIe Angabe -1/8 würde dem Wert -0.125 entsprechen.
Versuche einmal die Werte für die Koordinaten einer Deiner »Nodes« auf diese Weise darzustellen.
Versuche einmal die Werte für die Koordinaten einer Deiner »Nodes« auf diese Weise darzustellen.
SCHON FERTIG?
Du hast weitere »Items« für Deinen »Mod« programmiert. Also solltest Du auch den Screenshot aktualisieren, damit man sofort erkennt, was Dein »Mod« jetzt alles an Neuigkeiten zu bieten hat.
SCHON FERTIG?
Wie sieht es mit den Dateien »mod.conf« und »README.md« aus? Sind hier vielleicht Ergänzungen nötig?
MUSTERLÖSUNG: SO KÖNNTE ES AUSSEHEN
Versuche zunächst, eine eigene Lösung für die gestellten Aufgaben zu finden. Falls Du aber alleine nicht weiterkommst, kannst Du Dir unsere Musterlösung herunterladen.
Beachte: Da es sich um eine Musterlösung handelt, kann Dein Quellcode am Ende ganz anders aussehen. Das fängt schon bei den Ordner- und Dateinamen an, die Du für Deinen »Mod« gewählt hast. Solange Dein »Mod« aber funktioniert, ist eine Lösung so gut wie die andere ...
Beachte: Da es sich um eine Musterlösung handelt, kann Dein Quellcode am Ende ganz anders aussehen. Das fängt schon bei den Ordner- und Dateinamen an, die Du für Deinen »Mod« gewählt hast. Solange Dein »Mod« aber funktioniert, ist eine Lösung so gut wie die andere ...
Verwendung dieser Inhalte - auch in Auszügen - im Schulunterricht, der Jugendarbeit und im Bildungsbereich mit dem Vermerk »© multimediamobil – Region Süd« erlaubt.