Hallo zusammen!
Ich versuche derzeit einen Planeten zu generieren, mit Landschaft und allem drum und dran, und zwar mittels eines Voxelgitters.
Als Programmiersprache nutze ich C# und als Gameengine Unity. Im Folgendem möchte ich meine Vorgehensweise vorstellen und würde mich über ein Feedback eurerseits freuen:
Als erstes erstelle ich mir einen riesiges, würfelförmiges Voxelgitter, beginnend bei (0,0,0) aufsteigend, bestehend aus kleinen Würfeln. Dieser ist unterteilt in Chunks mit der Größe 16x16x16. Während der Generierung prüfe ich, welche Kleinstwürfel innerhalb einer gedachten Kugel liegen (x²+y²+z² <= r²), diese werden "aktiv" gesetzt, alle anderen auf "inaktiv". Soweit kein Problem, nun habe ich eine schöne Minecraft-artige Kugel.
Nun die Probleme: ich versuche eine Landschaft auf die Oberfläche der Kugel zu bekommen, in dem ich verschiedene Kleinstwürfel aktiv oder inaktiv setze. Einen richtigen Ansatz wie das ganze von Statten gehen soll habe ich noch nicht. Perlin Noise ist denke ich der richtige Weg, nur weiß ich nicht genau wie ich diesen hier einsetzen soll... U.a. wäre es natürlich auch toll wenn man(n) Höhlen und Überhänge mit generieren könnte!
Das alles dient nur zur einmaligen Generierung einer Spielwelt, welche dann gespeichert werden soll.
Im Spiel sollen später nur die Chunks geladen werden in welcher sich der Spieler befindet (u.a. mittels Marching Cubes eine weichere Landschaft daraus zaubern)
Hat jemand einen Tipp wie ich das Problem am besten anpacke?
Mein Wissen zu Perlin Noise: soweit ich weiß übergibt man diesem Algorithmus Parameter (in diesem Fall x,y,z-Koordinaten) und bekommt dafür einen Zufallswert -1 bis 1. Bitte korrigiert mich wenn ich falsch liege!
MfG praetorianer777