minetest_modding_book/_de/games/games.md
2022-12-18 11:20:09 +01:00

3.8 KiB

title layout root idx
Spiele kreieren default ../.. 7.1

Einleitung

Die Stärke von Minetest ist die Möglichkeit, Spiele einfach zu entwickeln, ohne dass man eigene Voxel-Grafiken, Voxel-Algorithmen oder ausgefallenen Netzwerkcode erstellen muss.

Was ist ein Spiel?

Spiele sind eine Sammlung von Mods, die zusammen ein zusammenhängendes Spiel ergeben. Ein gutes Spiel hat zum Beispiel ein einheitliches Grundthema und eine Richtung, es könnte ein klassischer Craft-Miner mit harten Survival-Elementen sein oder ein Weltraum-Simulationsspiel mit einer Steampunk-Ästhetik.

Spieldesign ist ein komplexes Thema und eigentlich ein ganzes Fachgebiet. Es würde den Rahmen des Buches sprengen, es auch nur kurz zu besprechen.

Spiel-Verzeichnis

Die Struktur und der Ort eines Spiels werden nach der Arbeit mit Mods ziemlich vertraut erscheinen. Spiele befinden sich in einem Spielverzeichnis, z. B. minetest/games/foo_game.

foo_game
├── game.conf
├── menu
│   ├── header.png
│   ├── background.png
│   └── icon.png
├── minetest.conf
├── mods
│   └── ... mods
├── README.txt
└── settingtypes.txt

Das einzige, was erforderlich ist, ist ein Mod-Ordner, aber game.conf und menu/icon.png werden empfohlen.

Spielübergreifende Kompatibilität

API-Kompatibilität

Es ist eine gute Idee, zu versuchen, so viel API-Kompatibilität mit dem Minetest-Grundspiel (Minetest Game) zu erhalten wie geeignet, da dies die Portierung von Mods in ein anderes Spiel sehr viel einfacher macht.

Der beste Weg, um die Kompatibilität mit einem anderen Spiel zu erhalten, ist die API-Kompatibilität mit allen Mods, die denselben Namen tragen. Das heißt, wenn ein Mod den gleichen Namen wie ein anderer Mod verwendet, auch wenn sie von einem Drittanbieter stammt, sollte sie eine kompatible API haben. Wenn ein Spiel zum Beispiel einen Mod mit dem Namen doors enthält, dann sollte dieser die gleiche API haben wie doors in Minetest Game.

Die API-Kompatibilität eines Mods ist die Summe der folgenden Punkte:

  • Lua-API-Tabelle - Alle dokumentierten/angekündigten Funktionen in der globalen Tabelle, die den gleichen Namen haben. Zum Beispiel: mobs.register_mob.
  • Registrierte Nodes/Items - Das Vorhandensein von Items.

Kleine Fehler sind nicht so schlimm, wie z.B. das Fehlen eines zufälligen Nutzens Funktion zu haben, die eigentlich nur intern verwendet wurde, aber größere Brüche in Bezug auf Kernfunktionen sind sehr schlecht.

Es ist schwierig, die API-Kompatibilität mit einem Mega-God-Mod wie default in Minetest Game aufrechtzuerhalten. In diesem Fall sollte das Spiel keinen Mod namens default enthalten.

Die API-Kompatibilität gilt auch für andere Mods und Spiele von Drittanbietern, Stellen Sie also sicher, dass alle neuen Mods einen eindeutigen Mod-Namen haben. Um zu überprüfen, ob ein Mod-Name bereits vergeben ist, suchen Sie ihn z.B. auf content.minetest.net.

Gruppen und Aliase

Gruppen und Aliase sind beides nützliche Werkzeuge, um die Kompatibilität zwischen Spielen zu gewährleisten, da sie es ermöglichen, dass die Namen von Gegenständen in verschiedenen Spielen unterschiedlich sein können. Gemeinsame Nodes wie Stein und Holz sollten Gruppen haben, um das Material zu kennzeichnen Es ist auch eine gute Idee, Aliasnamen von Standardnodes zu direkten Ersetzungen zu erstellen.

Sie sind dran

  • Erstellen Sie ein einfaches Spiel, bei dem der Spieler durch das Abbauen spezieller Nodes Punkte erhält.