Meine ursprüngliche Idee war es, eine 4098x4098 große Textur per Hand zu zeichnen, um genau definieren zu können, was an welcher Stelle im Spiel spawnen soll. Das hätte mir die Möglichkeit gegeben, sehr präzise zu arbeiten und die Spawn-Punkte genau zu kontrollieren. Allerdings bin ich mittlerweile am Überlegen, ob das wirklich der beste Weg ist. Der Aufwand, so eine große Textur manuell zu erstellen, ist enorm, und ich frage mich, ob es nicht effizientere Methoden gibt.
Nein, das ist nicht der richtige Weg. Ich denke, du musst erst einmal verstehen, wie eine Map technisch überhaupt funktioniert.
Wie es nicht funktioniert:
Angenommen, du erstellst eine Plane in Blender und bearbeitest sie beispielsweise durch Sculpting. Anschließend könntest du das Mesh in Unreal importieren und als Static Mesh verwenden.
Das Problem dabei und warum es so nicht gemacht wird:
Die enorme Größe der Map macht diesen Ansatz ineffizient.
Nehmen wir an, du verwendest eine 4096 × 4096 Pixel große Textur und skalierst das Terrain nicht. Das bedeutet, dass dein Terrain exakt 4096 × 4096 Meter groß ist.
Das führt zu einem gravierenden Problem: Dein Terrain hätte nur ein Pixel pro Quadratmeter. Selbst Minecraft nutzt mindestens 16 Pixel pro Block.
Das ist, wie gesagt, das Szenario, wie man es nicht macht.
Wie man es macht und warum:
In Unreal Engine erstellt man ein Terrain, das direkt innerhalb der Engine skulptiert und bemalt werden kann. Es sieht so aus, als würde das Terrain physisch verändert – ähnlich wie in Blender oder ZBrush –, doch in Wirklichkeit passiert etwas anderes:
Höheninformationen werden in einer Heightmap gespeichert, die nur Farben enthält, um Höhenwerte zwischen 0 und 1 zu definieren.
Das Terrain wird also durch ein Koordinatensystem in Bildform (Heightmap) erzeugt und dabei dynamisch nur dann dargestellt, wenn der Spieler hinsieht.
Dynamische Detailstufen durch Tessellation:
Das Terrain kann tesselliert werden, also je nach Blickrichtung dynamisch unterteilt werden:
- Schaut man weg → Das Terrain bleibt flach und mit niedriger Auflösung.
- Schaut man hin → Die Auflösung steigt, indem das Terrain feiner unterteilt wird (mehr Dreiecke entstehen).
Das ist der Sculpting-Part und zeigt, wie das Terrain effizient verwaltet wird.
Texturierung des Terrains:
Wie oben bereits erwähnt, kann man auf ein 4K × 4K Terrain nicht einfach eine einzelne 4K-Textur legen – das wäre völlig unzureichend.
Deshalb werden Terrains in Layern aufgebaut.
Beispiel:
Du malst "Wiese" auf dein Terrain. Statt eine einzige Textur aufzulegen, sorgt das Layering dafür, dass die Wiese in einer bestimmten Auflösung dargestellt wird.
Der Unterschied zu einem Mesh:
- Bei Meshes werden Pixelinformationen in einer UV-Koordinate von 0 bis 1 gespeichert.
- Bei Terrains hingegen können Vertex-Informationen direkt in den Vertices gespeichert werden.
Im Prinzip wird für jeden Punkt des Terrains gespeichert, welches Material an dieser Stelle und in der Umgebung sichtbar sein soll.
Man kann sich das vorstellen wie ein Karopapier, das mit Buntstiften ausgemalt wird. Anstatt Farben einfach nur aufzutragen, werden einzelne Farbschichten ausgeschnitten und übereinandergelegt, bis ein vollständiges Bild entsteht.
Das bedeutet:
Ein Terrain wird nicht wirklich "bemalt", sondern es wird maskiert, welches Material an welcher Stelle sichtbar sein soll – vergleichbar mit einer Material-Maske.
Eine Heightmap von Hand zu malen wäre, als würde ein Arzt eine Röntgenaufnahme selbst mit einem Stift zeichnen.
Es gibt spezielle Programme, die zur Erstellung von Heightmaps entwickelt wurden.
In der Regel funktioniert es genau umgekehrt: Man generiert aus einer vorhandenen Heightmap weitere Daten. Diese Heightmap wird übrigens im RAW-Format gespeichert, das weit über 4K hinausgehen kann.
Man verwendet auch keine riesigen Heightmaps mit zb 16km am verwendet dann mehre kleine Heigtmaps die nacheinander geladen werden.
Sorry wen ich auf das Spawnen nicht eingehe aber ich finde es komisch 2 unterschiedliche Themen in einem Thread zu thematisieren. Entweder du erstellt zum Spawnthema einen extra Thread oder ein Thema nach dem anderen. Sonst wird der gesamte Thread super Chaotisch.