Ich schreibe gerade einen kleinen Side Scroller in C #, um sowohl C # zu lernen als auch Spaß zu haben. Im Moment habe ich einen einfachen Zufallsgenerator, der die Welt erzeugt, aber es ist nicht gerade großartig. Bei einigen Nachforschungen habe ich festgestellt, dass die Erzeugung von Perlin-Rauschen mir einiges helfen kann. Das Problem ist, ich möchte eine "endlose" Landschaft haben, die aus mehreren Stücken besteht.
Grundsätzlich sind meine Fragen / Bedenken:
- Wie bringt Notch am Beispiel von Minecraft (Ignorieren der 3. Dimension) jeden Block dazu, sich perfekt miteinander zu verbinden? Tunnel, Höhlen, Erzadern, Berge, flache Gebiete, Biomes usw. sind alle miteinander verbunden, obwohl jedes Stück separat und manchmal zu einem viel späteren Zeitpunkt erzeugt wird. Dies ist der Schlüssel für mich. Ich möchte, dass der Spieler nach rechts gehen kann und beim Gehen mehr Landschaft erzeugt, die mit der vorherigen Landschaft verbunden ist, einschließlich unterirdischer Tunnel und Höhlensysteme.
- Wie würde dies unter der Annahme geschehen, dass jeder Block ein Quadrat ist und die Welt 10 Quadrate hoch und unendlich viele Quadrate breit ist? Dh jeder "Block" ist 128x128 Kacheln und die Welt ist insgesamt 1.280 Kacheln hoch. (Dies ist so, dass ich eine unendlich tiefe Karte erstellen kann, wenn ich möchte - und auch um zu zeigen, dass alle 4 Seiten eines Blocks / Quadrats in der Lage sein müssen, eine Verbindung herzustellen und fortzufahren, was das vorherige Quadrat / Block getan hat).
quelle
Eine Rauschtabelle wird wie jede andere nahtlose Texturkarte vorberechnet, um nahtlos zu kacheln. Deshalb können Sie zu Punkt X gehen und es wird jedes Mal das gleiche sein, sehr wichtig in Animationen, damit sich die Texturen nicht von Bild zu Bild ändern.
Es gibt einen Thread dazu auf answers.unity3d.com (prozedurale Side-Scroller-Level-Generierung)
Das 1994 erschienene Buch "Procedural Modeling and Texturing" behandelt auch Rauschen und Multifraktale (geschichtetes Rauschen mit unterschiedlichen Frequenzen und Rotationen).
quelle