Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

1

23.06.2013, 15:26

Spielwelt Zufallsgenerieren

Ich möchte in meinem Spiel die Welt zufallsgenerieren. Ich habe bis jetzt ein 2D Perlin Noise mit seed als dritten Parameter implementiert.
Aber wie kann ich dann das erstellte Terrain zuverlässig weiter mit Flüssen, Wegen, Wäldern etc. ausstatten?
Ich könnte zwar die Welt in den Speicher Schreiben und dann iterativ weiterbearbeiten, aber die Welt soll unbegrenzt groß sein, weshalb eine Deterministische Funktion benötigt werden würde.
Weis da jemand einen Ansatz? (z.B. eine Funktion, mit der ich anhand der x,z-Koordinate eine Höhendifferenz für einen Fluss bekomme, welche dann von der Landschaft abgezogen wird?)
MfG, RmbRT
"Dumm ist, wer dummes tut."

wluc-16

Treue Seele

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

2

23.06.2013, 16:41

Wie wärs, wenn du die Welt erstmal in einem 2D-Raster generierst. Jedes Feld hat dann einen Typ und eine Höhe.
Die Höhen interpolierst du dann, wobei "Fluss-Blöcke" zusammenhängend und auf der gleichen Höhe sind.

Ich habe nicht viel Ahnung davon, so als Anmerkung ;)

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

3

23.06.2013, 19:13

Darauf will ich ja gerade hinaus: Die Welt soll nicht im Speicher behalten werden, sondern bloß durch eine Funktion beschrieben werden (bzw. Algorithmus). Natürlich werden dann veränderungen der Spielwelt (wie zum Beispiel vom Spieler gegründete Dörfer etc.) gespeichert werden, aber ansonsten soll sie nicht im Speicher stehen. Außerdem glaube ich nicht, dass Blöcke zum Spiel passen, ich will kein Minecraft & Co. machen, sondern eine Welt die auf einem Mesh oder Vergleichbarem basiert.
Hat hier schon mal jemand Welten zufallsgeneriert? (Ohne so etwas wie subdivision, wo man die Welt immer im Speicher behalten muss)
MfG, RmbRT
"Dumm ist, wer dummes tut."

wluc-16

Treue Seele

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

4

23.06.2013, 20:05

Naja, die Vertices müssen ja im Speicher sein.
Und ich wollte mit "Blöcken" auf das Raster hinaus, das du dann später interpolierst, um runde Übergänge zwischen den verschiedenen Höhen zu schaffen.

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

5

23.06.2013, 20:43

Die Vertices sollen nicht im Speicher sein. Schau dir mal das hier an. Jedem Punkt im Raum wird ein fester Wert zugeordnet. Außerdem wird schon in der Noisefunktion interpoliert.
Was ich bräuchte, wäre eine Noise-artige Funktion, mit der ich einen Pfad generieren kann. (für den Flusslauf z.B.)
MfG, RmbRT
"Dumm ist, wer dummes tut."

wluc-16

Treue Seele

Beiträge: 212

Wohnort: in der Nähe von Bielefeld :D

Beruf: Schüler

  • Private Nachricht senden

6

23.06.2013, 21:06

Ist das nicht die Cosine/Linear/Cubic_Interpolate-Funktion aus dem Link?
Du generierst zufällig Punkte und interpolierst sie. Du musst das ganze dann halt nur ein bisschen einschränken,
so dass sie in alle in eine Richtung generiert werden.

7

23.06.2013, 21:20

Hey, ich weiß nicht ob dir dieser Link (va. gegen ende hin) vl weiter hilft. Ich habe so etwas selbst noch nie gemacht und bin mir auch nicht sicher, ob ich deine Frage daher richtig verstanden habe. Ich bin bei einer Recherche darauf gestoßen und dachte mir, dass das event. weiterhelfen könnte ..

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

24.06.2013, 06:38

Was genau soll denn der Zweck einer solchen Funktion sein? Denn diese wird, sofern Du nicht nur eine einzige feste Szene damit generieren willst, hochgradig komplex und in der Berechnung sehr aufwendig sein. Diese als z.B. für jeden Frame zu verwenden, wird vermutlich keine so gute Idee sein.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

24.06.2013, 09:15

Vermutlich will er immer nur den gerade sichtbaren Teil im Speicher halten.
Quasi Streaming, aber nicht von einem Datenträger bzw. aus dem Internet, sondern "aus einer Funktion" ;)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

24.06.2013, 09:22

Das vermute ich mal, eine Welt, deren Details zu groß sind, um sie zu speichern. Aber wenn das hübsch werden soll ohne irgendwas zu cachen, wird die Funktion vermutlich viel zu komplex. Oder das Terrain halt hässlich. Perlin Noise ist für gewisse Dinge gut, aber für Terrains sehr unrealistisch. Erosion kommt da schon etwas besser rüber - http://swiftcoder.wordpress.com/page/4/
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige