Try   HackMD

Minetest-Mod-Programmierung: Einstieg

EINLEITUNG:

»Minetest« 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 »Mods« erweitern. Eine Übersicht der bereits verfügbaren »Mods« findet man in der »ContentDB. Alle »Mods« sind in einer »Skriptsprache« namens »Lua« verfasst.


ZIEL: ERSTE SCHRITTE ZUM EIGENEN MODE

Das wichtigste Baumaterial in »Minetest« ist eine »Node«, manchmal auch »Block« genannt oder ganz allgemein als »item« bezeichnet. In seiner einfachsten Form handelt es sich dabei um einen Würfel mit der Kantenlange 1x1x1:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

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.


VORBEREITUNG:

Falls Du es noch nicht gemacht hast, lade Dir »Minetest« herunter. Starte das Spiel – die Startdatei liegt im Programmordner minetest/bin – und lege eine neue Welt an.

Außerdem benötigst Du einen Text-Editor, der u.a. Zeilennummern anzeigen kann. Lade Dir die folgendene Software herunter:


QUELLCODE HERUNTERLADEN:

Lade Dir aus unserem Cloudspeicher das vorbereitete Material »Minetest-Übung« 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 »7-Zip«.

Verschiebe den enthaltenen Ordner »MOD_NAME_ändern-master« in den Mod-Ordner von »Minetest« (minetest\mods):

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →



MOD ANPASSEN:

Ü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:

  • 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

Nicht ändern darfst Du folgende Namen:

  • die Ordner namens »sounds« und »textures«
  • die Namen der Dateien »init.lua«, »License«, »mod.conf« und »README.nd«

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:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

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.


FEHLERMELDUNG BEIM STARTEN:

Du erhältst beim Starten Deiner Minetest-Welt eine Fehlermeldung? Lies die Fehlermeldung aufmerksam. Suche in der Meldung nach einer Formulierung wie mein_datei_namen.lua: <eine Zahl> und/oder at line <eine Zahl>:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

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.

Hinweis: Manchmal musst Du auch eine Zeile über oder unter den Angaben schauen.




QUELLCODE GEÄNDERT, ABER ES SIEHT ALLES NOCH AUS VORHER:

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«.


ZWISCHENDURCH WIRD ES IMMER NACHT:

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:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Schließe hierfür zunächst »Minetest« komplett und öffne »minetest.conf« mit Deinem Editor. Füge ans Ende folgende Codezeile ein:

time_speed = 0

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:

/grantme all

Damit hast Du Dir alle Rechte im Spiel gegeben und kannst im Spielchat mit folgendem Befehl die Uhrzeit verändern:

/time


NODE ABBAUBAR MACHEN:

Wenn alles geklappt hat, kannst Du Deinen neuen Block jetzt zwar in der Welt platzieren, ihn aber nicht mehr abbauen. Schaue Dir im Minetest Modding Book den Eintrag groups an und ergänze Deinen Quellcode entsprechend.

Hinweis: Es sind die Werte 1 - 3 erlaubt., für stone nur der Wert 1 (in dieser Übung kannst Du den Eintrag stone aber auch ganz weglassen).

Wofür stehen die verwendeten Begriffe in groups eigentlich: wiki.minetest.net


IRGENDWIE MACHEN DIE WERTE BEI CRACKY GAR KEINEN UNTERSCHIED:

Dann läuft Deine Welt wahrscheinlich im Kreativmodus. Schalte den Modus vor dem Starten der Welt aus und spiele mit den Werten von cracky.

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 cracky den Befehl crumbly in der groups-Anweisung.


SCHON FERTIG I:

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:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →



SCHON FERTIG II:

Ergänze den Sound Deiner Blöcke um einen Ton, der abgespielt werden soll, wenn man über den Block läuft. Gehe dazu auf minetest.gitlab.io, um den passenden Quelltext zu erhalten. Scrolle dort so lange, bis Du diesen Eintrag siehst:

sounds = { ... 

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«.


SCHON FERTIG III:

In groups kann man noch eine ganze Reihe anderer Werte einfügen, die das Verhalten des Blockes verändern.

Ergänze den Quellcode Deines Steinblockes in groups um die Angabe coolslava = 1. Grabe dann ein Loch in Deiner Minetest-Welt und schütte Lava hinein. Wirf Deinen umprogrammierten Steinblock in das Loch.

Probiere auch einmal fallingnode = 1. Du stapelst dann zwei Deiner Blöcke übereinander und schlägst anschließend den unteren weg.


SCHON FERTIG IV:

Ist Dir die Datei »README.nd« im heruntergeladenen Material aufgefallen? Öffne sie mit »ZeroBrane Studio« und ergänze die fehlenden Informationen.


BITTE IMMER BEACHTEN:

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:

groups = {
    cracky = 3,
    stone = 1
}

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.



MUSTERLÖSUNG:

Versuche zunächst, eine eigene Lösung für die gestellte Aufgabe zu finden. Falls Du aber alleine nicht weiterkommst, kannst Du Dir hier eine Musterlösung herunterladen.


LUST AUF MEHR BEKOMMEN:

Dann besuche unsere Webseite: minetest-modding.weebly.com. 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: www.multimediamobile.de


Verwendung dieser Inhalte im Schulunterricht, der Jugendarbeit oder im Bildungsbereich mit dem Vermerk »© multimediamobil – Region Süd« erlaubt.