Added creating_textures.md

This commit is contained in:
debiankaios 2022-08-14 17:12:01 +02:00
parent 98e4b086b8
commit ed62801f72
2 changed files with 102 additions and 171 deletions

View File

@ -0,0 +1,102 @@
---
title: Texturen erstellen
layout: default
root: ../..
idx: 2.2
description: Eine Einführung in die Erstellung von Texturen mit dem Editor Ihrer Wahl und eine Anleitung zu GIMP.
redirect_from: /en/chapters/creating_textures.html
---
## Einleitung <!-- omit in toc -->
Die Fähigkeit, Texturen zu erstellen und zu optimieren, ist eine sehr nützliche Fähigkeit bei der
Entwicklung für Minetest.
Es gibt viele Techniken, die für die Arbeit an Pixel-Art-Texturen relevant sind,
und das Verständnis dieser Techniken wird
die Qualität der von Ihnen erstellten Texturen erheblich verbessern.
Detaillierte Ansätze zur Erstellung guter Pixelkunst liegen außerhalb des Rahmens
dieses Buches, stattdessen werden nur die wichtigsten Grundtechniken
behandelt werden.
Es sind viele [gute Online-Tutorials](http://www.photonstorm.com/art/tutorials-art/16x16-pixel-art-tutorial)
zur Verfügung, die die Pixelkunst viel detaillierter behandeln.
- [Techniken](#techniken)
- [Nutzung des Stiftes](#nutzung-des-stiftes)
- [Kacheln](#kacheln)
- [Transparenz](#transparenz)
- [Farbpaletten](#farbpaletten)
- [Editore](#editore)
- [MS Paint](#ms-paint)
- [Aseprite / LibreSprite](#aseprite--libresprite)
- [GIMP](#gimp)
## Techniken
### Nutzung des Stiftes
Das Stiftwerkzeug ist in den meisten Editoren verfügbar. Wenn es auf die kleinste Größe eingestellt ist,
können Sie damit ein Pixel nach dem anderen bearbeiten, ohne andere Teile des Bildes zu
ändern. Indem Sie die Pixel einzeln bearbeiten, schaffen Sie klare
und scharfe Texturen ohne ungewollte Unschärfen. Außerdem bietet es Ihnen ein hohes
Maß an Präzision und Kontrolle.
### Kacheln
Texturen, die für Blöcke verwendet werden, sollten in der Regel kachelfähig sein. Das bedeutet
wenn Sie mehrere Blöcke mit der gleichen Textur zusammen platzieren, sehen die Kanten
korrekt aus.
<!-- IMAGE NEEDED - cobblestone that tiles correctly -->
Wenn Sie die Kanten nicht richtig anpassen, ist das Ergebnis weit weniger ansprechend
ansehnlich.
<!-- IMAGE NEEDED - node that doesn't tile correctly -->
### Transparenz
Transparenz ist wichtig bei der Erstellung von Texturen für fast alle Craftitems
und einige Knoten, wie z. B. Glas.
Nicht alle Editoren unterstützen Transparenz, also stellen Sie sicher, dass Sie einen
Editor, der für die Texturen, die Sie erstellen möchten, geeignet ist.
### Farbpaletten
Die Verwendung einer einheitlichen Farbpalette ist ein einfacher Weg, um Ihre Kunst viel besser aussehen zu lassen.
Es ist eine gute Idee, eine Palette mit einer begrenzten Anzahl von Farben zu verwenden, vielleicht 32
höchstens. Vorgefertigte Paletten finden Sie unter
[lospec.com](https://lospec.com/palette-list).
## Editore
### MS Paint
MS Paint ist ein einfacher Editor, der für einfache Texturen Design nützlich sein kann;
allerdings unterstützt er keine Transparenz.
Dies spielt normalerweise keine Rolle, wenn Sie Texturen für die Seiten von Knotenpunkten erstellen,
aber wenn Sie Transparenz in Ihren Texturen benötigen, sollten Sie einen
anderen Editor wählen.
### Aseprite / LibreSprite
[Aseprite](https://www.aseprite.org/) ist ein proprietärer Pixelkunst-Editor.
Er enthält standardmäßig eine Menge nützlicher Funktionen wie Farbpaletten und
Animationswerkzeuge.
[LibreSprite](https://libresprite.github.io/) ist ein Open-Source-Fork von Aseprite
bevor es proprietär wurde.
### GIMP
GIMP wird in der Minetest-Community häufig verwendet. Es hat eine ziemlich hohe
Lernkurve, da viele seiner Funktionen nicht sofort
offensichtlich sind.
Bei der Verwendung von GIMP kann das Bleistift-Werkzeug aus der Toolbox ausgewählt werden:
<figure>
<img src="{{ page.root }}//static/pixel_art_gimp_pencil.png" alt="Pencil in GIMP">
</figure>
Es ist außerdem ratsam, das Kontrollkästchen Harte Kante für das Radiergummi-Werkzeug zu aktivieren.

View File

@ -1,171 +0,0 @@
---
title: Blöcke, Ttems und Craften
layout: default
root: ../..
idx: 2.1
description: Benutze register_node, register_iem und register_craft um zu lernen wie man Blöcke, Items und Rezepte erstellen.
redirect_from: /de/chapters/nodes_items_crafting.html
---
## Einführung <!-- omit in toc -->
Neue Blöcke, Craftitems und Rezepte zu erstellen, sind Grundlagen von vielen Mods
- [Was sind Blöcke und Craftitems?](#was-sind-blöcke-und-craftitems)
- [Items erstellen](#items-erstellen)
- [Itemnamen](#itemnamen)
- [Itemaliase](#itemaliase)
## Was sind Blöcke und Craftitems?
Blöcke, Craftitems und tools sind alles Items. Ein Items ist etwas das im Inventar gefunden werden kann - Sogar wenn es nicht im normalen gameplay nicht möglich ist.
Ein Block ist ein Item das plaziert werden kann oder in der Welt gefunden werden kann. Jede Position muss belegt werden mit ein und nur einen Block - Scheinbare leere Position sind normalerweise Luftblöcke.
Ein Craftitem kann nicht plazier werden man kann es nur im Inventar finden oder als gedropptes Item in der Welt.
Ein Werkzeug hat die Fähigkeit sich abzunutzen und hat normalerweise nicht standardmäßige Abbaufähigkeiten. In Zukunft we Craftitems und Werkzeuge wahrscheinlich verschmelzen weil die Unterscheidung zwinschen ihnen eher ausgedacht ist.
## Items erstellen
Item Definitionen bestehen aus einen *Itemnamen* und einer *Definitions Tabelle*. Die Definitions Tabelle beinhaltet Attribute welche das Verhalten eines Items beinflussen.
```lua
minetest.register_craftitem("modname:itemname", {
description = "Mein spezielles Item",
inventory_image = "modname_itemname.png"
})
```
### Itemnamen
jedes Item hat ein Itemnamen welches auf sich verweist, es sollte folgendes Format haben:
modname:itemname
### Itemaliase
Items können auch *Aliase* haben die auf ihren Namen zeigen. Ein *Alias* ist ein nachgemachter Item Name der dazu führt, dass die Egine alle Aliase so behandelt als wären es Itemnamen. Da sind zwei verbreitete Varianten um das zu nutzen:
* Umbenannte entfernte Items in etwas anderes umzubenennen. Es kann Unbekannte Items in der Welt oder im Inventar geben, wenn ein Gegenstand ohne Korrektur aus einen Mod entfernt wird.
* Ein Abkürzung hinzufügen. `/giveme dirt` ist einfacher als `/giveme default:dirt`.
Ein Itemalias zu erstellen ist richtig einfach. Ein guter Weg um sich die Reinfolge von der Argumenten zu merken ist `von → zu` wo *von* der alias ist und *zu* das Orginal.
```lua
minetest.register_alias("dirt", "default:dirt")
```
Mods müssen sicher gehen, dass Alias aufgelöst werden, bevor sie sich direkt mit Itemnamen befassen, da die Engine dies nicht tut. Das ist allerdings ziemlich einfach:
```lua
itemname = minetest.registered_aliases[itemname] or itemname
```
### Textures
Texturen solten in den textures/ Pfad mit Namen im Format plaziert werden
`modname_itemname.png`.\\
JPEG texturen werden unterstüzt, aber sie unterstüzen keine tranperenz und haben generell
schlechte qualität und niedrige Auflösung.
Es ist oft besser das PNG format zu benutzen.
Texturen in Minetest sind in der Regel 16 mal 16 Pixel.
Sie können in jeder Auflösung sein, es wird jedoch empfohlen, dass sie in der Größenordnung von 2 liegen, beispielsweise 16, 32, 64 oder 128.
Das liegt daran, dass andere Auflösungen auf älteren Geräten möglicherweise nicht korrekt unterstützt werden. was zu einer geringeren Leistung führt.
## Erstellen von Basis-Blöcken
```lua
minetest.register_node("meinemod:diamant", {
description = "Alien Diamanten",
tiles = {"meinemod_diamant.png"},
is_ground_content = true,
groups = {cracky=3, stone=1}
})
```
Die Eigenschaft `tiles` ist eine Tabelle mit Texturnamen, die der Blöcken verwenden wird.
Wenn es nur eine Textur gibt, wird diese Textur auf jeder Seite verwendet.
Um eine andere Textur pro Seite zu erhalten, geben Sie die Namen von 6 Texturen in dieser Reihenfolge an:
oben (+Y), unten (-Y), rechts (+X), links (-X), hinten (+Z), vorne (-Z).
(+Y, -Y, +X, -X, +Z, -Z)
Denken Sie daran, dass +Y in Minetest nach oben zeigt, wie es in der
3D-Computergrafiken.
```lua
minetest.register_node("meinemod:diamant", {
description = "Alien Diamanten",
tiles = {
"meinemod_diamant_oben.png", -- y+
"meinemod_diamant_unten.png", -- y-
"meinemod_diamant_rechts.png", -- x+
"meinemod_diamant_links.png", -- x-
"meinemod_diamant_hinten.png", -- z+
"meinemod_diamant_vorne.png", -- z-
},
is_ground_content = true,
groups = {cracky = 3},
drop = "meinemod:diamant_fragment"
-- ^ Anstatt diamanten dropen zu lassen, lassen Sie meinemod:diamant_fragment dropen
})
```
Mit dem Attribut `is_ground_content` können Höhlen über dem Stein erzeugt werden. Dies ist wichtig für jeden Knoten, der während der Kartenerstellung unterirdisch platziert werden kann. Höhlen werden aus der Welt herausgeschnitten, nachdem alle anderen Knoten in einem Gebiet generiert wurden.
## Aktionen und Callbacks
Minetest verwendet hauptsächlich ein Callback-basiertes Modding-Design.
Callbacks können in der Objektdefinitionstabelle platziert werden, um eine Reaktion auf diverse
verschiedene Benutzerereignisse.
### on_use
Normalerweise wird der Verwendungsrückruf ausgelöst, wenn ein Spieler mit der linken Maustaste auf einen Gegenstand klickt.
Ein Verwendungs-Callback verhindert, dass der Gegenstand zum Graben von Knoten verwendet wird.
Eine häufige Verwendung des Verwendungsrückrufs ist für Nahrung:
```lua
minetest.register_craftitem("meinemod:schlammkuchen", {
description = "Alien Schlamm Kuchen",
inventory_image = "meinessen_schlammkuchen.png",
on_use = minetest.item_eat(20),
})
```
Die Zahl, die an die Funktion minetest.item_eat übergeben wird, ist die Anzahl der halben Herzen
die durch den Verzehr dieses Lebensmittels geheilt werden.
Jedes Herzsymbol, das der Spieler hat, sind zwei halbe Herzen wert.
Ein Spieler kann normalerweise bis zu 10 Herzen haben, was 20 halbe Herzen entspricht.
Die halben Herzen müssen keine ganzen Zahlen sein, sondern können auch Dezimalzahlen sein.
minetest.item_eat() ist eine Funktion, die eine Funktion zurückgibt, die sie
als on_use-Callback.
Das bedeutet, dass der obige Code ungefähr so aussieht:
```lua
minetest.register_craftitem("meinemod:schlammkuchen", {
description = "Alien Schlamm Kuchen",
inventory_image = "meinessen_schlammkuchen.png",
on_use = function(...)
return minetest.do_item_eat(20, nil, ...)
end,
})
```
Wenn man versteht, wie item_eat funktioniert, indem es einfach eine Funktion zurückgibt, ist es
ist es möglich, die Funktion so zu ändern, dass sie ein komplexeres Verhalten zeigt, z. B. das Abspielen eines benutzerdefinierten Sounds.
## Crafting
Es gibt verschiedene Arten von Bastelrezepten, die durch die Eigenschaft `Typ` angezeigt werden
Eigenschaft angezeigt.
* shaped - Die Zutaten müssen sich an der richtigen Stelle befinden.
* shapeless - Es spielt keine Rolle, wo sich die Zutaten befinden,
es muss nur die richtige Menge vorhanden sein.
* cooking - Rezepte, die der Ofen verwenden soll.
* fuel - Definiert Gegenstände, die in Öfen verbrannt werden können.
* tool_repair - Definiert Gegenstände, die mit Werkzeugen repariert werden können.
Handwerksrezepte sind keine Gegenstände, daher verwenden sie keine Gegenstandsnamen zur eindeutigen
identifizieren.