96 lines
3.8 KiB
Markdown
96 lines
3.8 KiB
Markdown
---
|
|
title: Spiele kreieren
|
|
layout: default
|
|
root: ../..
|
|
idx: 7.1
|
|
---
|
|
|
|
## Einleitung <!-- omit in toc -->
|
|
|
|
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?](#was-ist-ein-spiel)
|
|
- [Spiel-Verzeichnis](#spiel-verzeichnis)
|
|
- [Spielübergreifende Kompatibilität](#spielübergreifende-kompatibilität)
|
|
- [API-Kompatibilität](#api-kompatibilität)
|
|
- [Gruppen und Aliase](#gruppen-und-aliase)
|
|
- [Sie sind dran](#sie-sind-dran)
|
|
|
|
## Was ist ein Spiel?
|
|
|
|
Spiele sind eine Sammlung von Mods, die zusammen ein kohärentes Spiel ergeben.
|
|
Ein gutes Spiel hat zum Beispiel ein einheitliches Grundthema und eine Richtung,
|
|
es könnte ein klassischer Crafter 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 Mods-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 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
|
|
eine Mod den gleichen Namen wie eine andere Mod verwendet, auch wenn sie von
|
|
einem Drittanbieter stammt, sollte sie eine kompatible API haben.
|
|
Wenn ein Spiel zum Beispiel eine Mod mit dem Namen `doors` enthält,
|
|
dann sollte sie 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 einer ekelhaften Mega-God-Mod wie
|
|
*default* in Minetest Game aufrechtzuerhalten. In diesem Fall sollte das Spiel keine 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](https://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
|
|
|
|
* Erstelle ein einfaches Spiel, bei dem der Spieler durch das abbauen spezieller Blöcke Punkte erhält.
|