<style> div.block { hyphens: auto; text-align:justify; } div.blue { hyphens: auto; text-align:justify; background: rgba(7, 60, 110, 0.3); padding-left:5px; padding-right: 5px; padding-top: 18px; padding-bottom: 10px; } div.orange { hyphens: auto; text-align:justify; background: rgba(222, 110, 6, 0.3); padding-left:5px; padding-right: 5px; padding-top: 18px; padding-bottom: 10px; } img.picturezoom { transition: transform 0.2s; } img.picturezoom:hover { transform: scale(2.0, 2.0); z-index: 100; } div.prefont { font-family: "Courier"; font-weight: bold; text-align: justify; background: rgba(255, 255, 255, 1.0); border: 10px solid white; padding-top:5px; padding-bottom: 5px; padding-left: 5px; padding-right: 10px; } </style> # Minetest-Mod-Programmierung: Einstieg <div class = "orange"> Diese Einstiegs-Übung zeigt nur einen kleinen Ausschnitt aus : <a href="https://minetest-modding.weebly.com/">minetest-modding.weebly.com</a>. </div> ### **EINLEITUNG:** <div class = "block"> »<a href="https://www.minetest.net/downloads/" target="_blank">Minetest</a>« zu spielen ist schon aufregend genug. Aber wie wäre es, wenn man dem Spiel eigene Blöcke und Werkzeuge hinzufügen könnte? Unmöglich? Nein! »Minetest« ist modular aufgebaut und lässt sich leicht mit sogenannten »<a href="https://de.wikipedia.org/wiki/Mod_(Computerspiele)" target="_blank">Mods</a>« erweitern. Eine Übersicht der bereits verfügbaren »Mods« findet man in der »<a href="https://content.minetest.net/" target="_blank">ContentDB</a>. Alle »Mods« sind in einer »<a href="https://de.wikipedia.org/wiki/Skriptsprache" target="_blank">Skriptsprache</a>« namens »<a href="https://de.wikipedia.org/wiki/Lua" target="_blank">Lua</a>« verfasst. <br /> </div> ### **ZIEL: ERSTE SCHRITTE ZUM EIGENEN MODE** <div class = "block"> Das wichtigste Baumaterial in »Minetest« ist eine »Node«, manchmal auch »Block« genannt oder ganz allgemein als »<a href="https://wiki.minetest.net/Items" target="_blank">item</a>« bezeichnet. In seiner einfachsten Form handelt es sich dabei um einen Würfel mit der Kantenlange 1x1x1: <div style="position: relative;z-index: 100;"> <img width="100%" src="https://www.multimediamobile.de/fileadmin/Daten/Dokumente/sued/weebly/modding/003a-code-bearbeiten-node.png" alt="Minetest: Ansicht einer »Node« mit cyan-Textur" title="Minetest: Ansicht einer »Node« mit cyan-Textur"> </div><br /> In dieser Einführung zur Mod-Programmierung für »Minetest« soll es unter anderem darum gehen, die Fehlstellen einer »Node« in einem vorgegebenen »Mod« zu entdecken und zu berichtigen. Dabei müssen Namen von Dateien und eines Ordners angepasst, der Quellcode überarbeitet und der eine oder andere mit Absicht platzierte Fehler (Komma, geschweifte Klammer) gefunden und behoben werden. <br /> </div> ### **MINETEST INSTALLIEREN:** <div class = "block"> Falls Du es noch nicht gemacht hast, lade Dir »<a href="https://www.minetest.net/downloads/" target="_blank">Minetest</a>« herunter. Starte das Spiel – die Startdatei liegt im Programmordner minetest/bin – und lege eine neue Welt an:<br /><br /> <video type="video/mp4" width="100%" controls src="https://www.multimediamobile.de/fileadmin/Daten/Dokumente/sued/weebly/modding/002a-minetest-installieren.mp4"> <p>Video wird nicht angezeigt? Installieren Sie die neueste Version des Browsers <a href="https://www.google.com/intl/de_de/chrome/">Google Chrome</a>.</p> </video><br /><br /> Außerdem benötigst Du zum Bearbeiten von Quellcodes einen Text-Editor, der u.a. Zeilennummern anzeigen kann. Lade Dir die folgendene Software herunter: <a href="https://studio.zerobrane.com/download?not-this-time" target="_blank">ZeroBrane Studio</a> <br /> </div> ### **QUELLCODE HERUNTERLADEN:** <div class = "block"> Lade Dir aus unserem Cloudspeicher das vorbereitete Material »<a href="https://www.multimediamobile.de/fileadmin/Daten/Dokumente/sued/weebly/modding/Minetest-Übung.zip" target="_blank">Minetest-Übung</a>« lokal auf Deinen Rechner herunter. Vermutlich wurde es bei Dir im Ordner »Downloads« gespeichert. Suche das Material und entpacke es per Doppelklick oder mit dem Programm »<a href="https://www.7-zip.de/" target="_blank">7-Zip</a>«. Verschiebe den enthaltenen Ordner »MOD_NAME_ändern-master« in den Mod-Ordner von »Minetest« (minetest\mods):<br /><br /> <div style="position: relative;z-index: 100;"> <img class="picturezoom" width="100%" src="https://www.multimediamobile.de/fileadmin/Daten/Dokumente/sued/weebly/modding/003c-mod-installieren.png" alt="Minetest: Installation eines Mods" title="Minetest: Installation eines Mods"> </div> <br /><br /> </div> ### **MOD ANPASSEN:** <div class = "block"> Überlege, wie Dein »Mod« heißen soll. Ändere passend die Namen von Ordnern und Dateien. Beachte dabei unbedingt im heruntergeladenen Material die Hinweise in der Datei »000 LIES MICH.txt«. Hier die Kurzfassung:<br /><br /> > - schreibe alle Ordner- und Dateinamen klein > - Ordner- und Dateinamen dürfen keine Umlaute oder Sonderzeichen enthalten > - Ordner- und Dateinamen dürfen keine Leerzeichen enthalten > - Ordner- und Dateinamen dürfen keine Bindestriche enthalten > - das erste Zeichen eines Ordner- und Dateinamen darf keine Zahl sein > - das erste Zeichen eines Ordner- und Dateinamen darf kein Unterstrich sein > - außer bei der Dateiendung ist kein Punkt erlaubt > - üblich ist es, englischsprachige Bezeichnungen zu verwenden ... <br /> Nicht ändern darfst Du folgende Namen:<br /><br /> > - die Ordner namens »sounds« und »textures« > - die Namen der Dateien »init.lua«, »License«, »mod.conf« und »README.nd« <br /> Alle Namensänderungen durchgeführt? Dann öffne das Dokument »mod.conf« mit »ZeroBrane Studio« und ergänze die fehlenden Informationen, insbesondere den Namen Deiner »Mod«. Die Datei »init.lua« enthält den eigentlichen Quellcode. Bearbeite ihn mit Deinem Editor und vervollständige die fehlenden Programmteile, um einen Steinblock in cyan zu erhalten: <div style="position: relative;z-index: 100;"> <img width="100%" src="https://www.multimediamobile.de/fileadmin/Daten/Dokumente/sued/weebly/modding/003a-code-bearbeiten-node.png" alt="Minetest: Ansicht einer »Node« mit cyan-Textur" title="Minetest: Ansicht einer »Node« mit cyan-Textur"> </div><br /> Es geht dabei vor allem um Zeilen, die Formulierungen wie »MOD_NAMEN_ändern« verwenden. Hier musst Du Deine gewählten Namen einfügen. Wenn Du alle Änderungen vorgenommen hast, füge Deinen »Mod« in der Minetest-Oberfläche über »Mods auswählen« Deinem Spiel hinzu und starte die Welt neu. <br /> </div> ### **FEHLERMELDUNG BEIM STARTEN:** <div class = "blue"> Du erhältst beim Starten Deiner Minetest-Welt eine Fehlermeldung? Lies die Fehlermeldung aufmerksam. Suche in der Meldung nach einer Formulierung wie <i>mein_datei_namen.lua: <eine Zahl></i> und/oder <i>at line <eine Zahl></i>: <div style="position: relative;z-index: 100;"> <img class="picturezoom" width="100%" src="https://www.multimediamobile.de/fileadmin/Daten/Dokumente/sued/weebly/modding/003d-fehlermeldung.png" alt="Minetest: Beispiel einer typischen Fehlermeldung" title="Minetest: Beispiel einer typischen Fehlermeldung"> </div> <br /> In diesen Zeilen verstecken sich vermutlich die Fehler, die Du korrigieren musst. Meistens geht es um ein fehlendes Komma am Ende einer Zeile, fehlende oder falsch gesetzte Anführungszeichen, falsche Dateinamen oder fehlende oder falsch gesetzte runde oder geschweifte Klammern. <i>Hinweis:</i> Manchmal musst Du auch eine Zeile über oder unter den Angaben schauen.</div> <br /><br /> ### **QUELLCODE GEÄNDERT, ABER ES SIEHT ALLES NOCH AUS VORHER:** <div class = "block"> Du hast Deinen Quellcode geändert, aber Deine »Node« sieht noch immer so aus wie vorher oder es kommt noch immer die selbe Fehlermeldung? Hast Du Deine Quellcode-Datei gespeichert? Außerdem musst Du nach jeder Änderung das Spiel einmal schließen und neustarten, damit die Änderungen wirksam werden. Drücke hierfür auf der Tastatur die ESC-Taste, klicke auf »Hauptmenü« und öffne anschließend die Welt erneut mit »Spiel starten«. <br /> </div> ### **ZWISCHENDURCH WIRD ES IMMER NACHT:** <div class = "blue"> In »Minetest« gibt es einen Tag/Nacht-Zyklus, so dass es ca. alle 20 Minuten Nacht wird. Das ist für unsere Zwecke natürlich sehr lästig. Was tun? Der einfache Weg ist es, das Inventar mit dem Buchstaben I auf der Tastatur zu öffnen, nach einer Fackel (»torch«) zu suchen und diese in der Welt mit Rechtsklick zu positionieren. Der dauerhafte Weg wäre, die Datei »minetest.conf« im Minetest-Programmordner anzupassen: <img src="https://www.multimediamobile.de/fileadmin/Daten/Dokumente/sued/weebly/modding/003e-speicherort-conf-datei.png" alt="Minetest: Die Datei »minetest.conf« bearbeiten" title="Minetest: Die Datei »minetest.conf« bearbeiten"><br /> Schließe hierfür zunächst »Minetest« komplett und öffne »minetest.conf« mit Deinem Editor. Füge ans Ende folgende Codezeile ein: <pre> time_speed = 0 </pre> Speichere die Änderung und starte Deine Welt neu. Es ist immer noch Nacht? »time_speed = 0« schaltet nur den Zyklus aus. Du musst jetzt noch einmalig die gewünschte Uhrzeit einstellen. Öffne mit dem Buchstaben T auf der Tastatur den Spielchat. Gib Dir zunächst mit folgendem Befehl das Recht (»privilege«), in die Welt eingreifen zu dürfen: <pre> /grantme all </pre> Damit hast Du Dir alle Rechte im Spiel gegeben und kannst im Spielchat mit folgendem Befehl die Uhrzeit verändern: <pre> /time </pre> </div> <br /><br /> ### **NODE ABBAUBAR MACHEN:** <div class = "block"> Wenn alles geklappt hat, kannst Du Deinen neuen Block jetzt zwar in der Welt platzieren, ihn aber nicht mehr abbauen. Schaue Dir im <a href="https://rubenwardy.com/minetest_modding_book/en/items/nodes_items_crafting.html#groups" target="_blank">Minetest Modding Book</a> den Eintrag <i>groups</i> an und ergänze Deinen Quellcode entsprechend. <i>Hinweis:</i> Es sind die Werte 1 - 3 erlaubt., für <i>stone</i> nur der Wert 1 (in dieser Übung kannst Du den Eintrag <i>stone</i> aber auch ganz weglassen). Wofür stehen die verwendeten Begriffe in <i>groups</i> eigentlich: <a href="https://wiki.minetest.net/Groups/de#Liste_bekannter_Gruppen.2C_die_Schaden_und_Abbauzeit_bestimmen" target="_blank">wiki.minetest.net</a> <br /> </div> ### **IRGENDWIE MACHEN DIE WERTE BEI CRACKY GAR KEINEN UNTERSCHIED:** <div class = "block"> Dann läuft Deine Welt wahrscheinlich im Kreativmodus. Schalte den Modus vor dem Starten der Welt aus und spiele mit den Werten von <i>cracky</i>. Dumm nur, dass Dein Block jetzt so hart ist, dass Du ihn nicht mehr mit der bloßen Hand abbauen kannst. Entweder musst Du Dir eine Spitzhacke craften oder Du versuchst statt <i>cracky</i> den Befehl <i>crumbly</i> in der <i>groups</i>-Anweisung. <br /> </div> ### **SCHON FERTIG I:** <div class = "block"> Ergänze die Datei »init.lua« so, dass Du einen zusätzlichen Holzblock erhältst. Eine passende Textur findest Du in dem zu Beginn heruntergeladenen Ordner: <div style="position: relative;z-index: 100;"> <img width="100%" src="https://www.multimediamobile.de/fileadmin/Daten/Dokumente/sued/weebly/modding/003f-code-bearbeiten-node.png" alt="Minetest: Ansicht der zu programmierende »Node«" title="Minetest: Ansicht der zu programmierende »Node«"> </div> <br /><br /> </div> ### **SCHON FERTIG II:** <div class = "block"> Ergänze den Sound Deiner Blöcke um einen Ton, der abgespielt werden soll, wenn man über den Block läuft. Gehe dazu auf <a href="https://minetest.gitlab.io/minetest/definition-tables/#node-definition" target="_blank">minetest.gitlab.io</a>, um den passenden Quelltext zu erhalten. Scrolle dort so lange, bis Du diesen Eintrag siehst: <div class="prefont"> <pre> sounds = { ... </pre> </div> Wie lauten die Befehle für die Ganggeräusche und fürs Abbauen von »Nodes« im Abschnitt *sounds*? Füge sie in Deine Blöcke ein und verwende die vorgegebenen Töne aus dem Ordner »sounds«. <br /> </div> ### **SCHON FERTIG III:** <div class = "block"> In <i>groups</i> kann man noch eine ganze Reihe anderer Werte einfügen, die das Verhalten des Blockes verändern. Ergänze den Quellcode Deines Steinblockes in <i>groups</i> um die Angabe <i>coolslava = 1</i>. Grabe dann ein Loch in Deiner Minetest-Welt und schütte Lava hinein. Wirf Deinen umprogrammierten Steinblock in das Loch. Probiere auch einmal <i>fallingnode = 1</i>. Du stapelst dann zwei Deiner Blöcke übereinander und schlägst anschließend den unteren weg. <br /> </div> ### **SCHON FERTIG IV:** <div class = "block"> Ist Dir die Datei »README.nd« im heruntergeladenen Material aufgefallen? Öffne sie mit »ZeroBrane Studio« und ergänze die fehlenden Informationen. <br /> </div> ### **BITTE IMMER BEACHTEN:** <div class = "orange"> Wenn hier in der Aufgabenbeschreibung oder im vorgegebenen Übungsmaterial Ordner- und Dateinamen auftauchen, musst Du sie (fast immer) an Deine verwendeten Order- und Dateinamen anpassen. Denke immer an die Namenskonventionen (keine Umlaute oder sonstige Sonderzeichen, keine Leerzeichen, alles kleinschreiben, keine Bindestriche, sondern Unterstriche, das erste Zeichen darf keine Ziffer sein ...). Beim Programmieren machst Du Dir das Leben sehr viel einfacher, wenn Du zusammengehörige Elemente, die in geschweiften oder runden Klammern stehen, mit der TAB-Taste immer etwas nach folgendem Muster einrückst. So behältst Du leichter den Überblick: <pre> groups = { cracky = 3, stone = 1 } </pre> Für Ordner- und Dateinamen solltest Du Dir eine eigene Namens-Systematik ausdenken und streng befolgen. Dann kannst Du schnell mal den Quellcode aus einem »Mod« in einem anderen »Mod« verwenden und musst nur kleine Änderungen vornehmen. </div><br /><br /> ### **MUSTERLÖSUNG:** <div class = "block"> Versuche zunächst, eine eigene Lösung für die gestellte Aufgabe zu finden. Falls Du aber alleine nicht weiterkommst, kannst Du Dir <a href=" http://ablage.owncube.cloud/index.php/s/a3TsBx6DZYG9zgw">hier</a> eine Musterlösung herunterladen. <br /> </div> ### **LUST AUF MEHR BEKOMMEN:** <div class = "block"> Dann besuche unsere Webseite: <a href="https://minetest-modding.weebly.com/">minetest-modding.weebly.com</a>. Hier findest Du zahlreiche weitere Übungen zu Themen wie Verwendung und Erstellung von Texturen, Verwendung und Erstellung von Audio-Dateien, Nodebox-Erstellung, Mod-Abhängigkeiten, Einsatz von Funktionen, Übersetzungen und vieles mehr. Wenn Du mehr zum Umgang mit »Minetest« im Allgemeinen wissen möchtest, sieh Dir unsere Materialsammlung an: <a href="https://www.multimediamobile.de/sued-minetest">www.multimediamobile.de</a> <br /> </div> ### **INTERESSIERT AN EINER KOSTENFREIEN FORTBILDUNG:** <div class = "block"> Du willst Dich intensiver mit dem Einsatz digitaler Technik im Unterricht beschäftigen? Dann buche das »<a href="https://www.multimediamobile.de/sued/" target="_blank">multimediamobil</a>«. Wir bieten kostenfreie Fortbildungen zu fast allen Themen rund um Multimedia an. Falls Du also wissen möchtest, wie Du Bilder, Töne, Videos, Animationen oder das Internet pädagogisch sinnvoll einsetzen können oder was sich mit Computerspielen, 3D-Modelling oder Autorensystemen, Tablets, Apps und interaktiven Tafeln im Schulunterricht, Studienseminar, in der Erwachsenenbildung und Jugendarbeit machen lässt, wirst Du bei uns bestimmt fündig. <br /> </div> <div style="font-size: 10px;hyphens: auto;text-align:justify;background: rgba(124, 124, 124, 0.3);padding-left:5px;padding-right: 5px;"> Verwendung dieser Inhalte im Schulunterricht, der Jugendarbeit oder im Bildungsbereich mit dem Vermerk »<a href="https://www.multimediamobile.de/sued-minetest" target="_blank">© multimediamobil – Region Süd</a>« erlaubt. </div>