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

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

11

24.06.2013, 11:28

Ich glaube, du bist dir einfach selbst nicht ganz sicher was du möchtest. Eigentlich willst du doch eine Welt generieren und dabei soll die vermutlich nicht die ganze Zeit im RAM sein, sondern wie David schon sagt, sollen nur sichtbare Bereiche im RAM liegen. Normalerweise würdest du deine Welt gestückelt generieren. Immer wenn du einen neuen Teil brauchst wird dieser generiert. Zwischendurch werden dann bestimmte Teile der Welt ausgelagert. Normalerweise würde man das auf der Festplatte erledigen. Den aktuellen Teil der Welt den du benötigst musst du dann natürlich im Arbeitsspeicher haben. Alles andere wäre eigentlich ziemlich unsinnig wie ich finde. Guck dir doch einfach an wie das zum Beispiel bei einem Spiel wie Minecraft gelöst wird. Da solltest du dir einiges abgucken können.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

12

24.06.2013, 19:27

Ich musste spontan an Fraktale denken und dieses Video: How Algorithms shape our world (TED).

Kleiner Hinweis: Algorithmusgenerierte Welten sehen eigentlich niemals richtig natürlich aus, schon garnicht ohne Zufall. Terragen zeigt das. Ich würde dir also Raten die Welt von Hand zu bauen. Hat schon einen Grund warum jeder Spielehersteller Leveldesigner beschäftigt.

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

13

28.06.2013, 22:31

Aktuell ist meine Überlegung, mit Voronoi-Zellen (das hier brachte mich darauf), deren Mittelpunkte an einem Raster mit zufälligen Offsets liegen, Chunks zu bilden. Diese sind nicht rechteckig und dadurch unregelmäßiger. Jeder Chunk bekommt dann mit einem Perlin Noise einen Höhenwert, zwischen den Chunks bzw. Voronoi-Zellen wird dann die Höhe interpoliert.
Hoffe, das war verständlich.
MfG, RmbRT
"Dumm ist, wer dummes tut."

14

29.06.2013, 11:05

Btw, wenn du unbedingt "immer die gleiche Spielwelt ohne Zufall" willst, also komplett nach einem festen Schema kannst du trotzdem funktionen wie rand() benutzen, solange der Seed-Wert immer gleich ist. Also nicht time(0) nehmen oder so, sondern immer die gleiche Zahl und dann hast du immer die gleiche Zufallsfolge.

Java-Beispiel: http://stackoverflow.com/questions/15182…int-hello-world

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

15

29.07.2013, 19:18

So, bin wieder aus dem Urlaub zurück.
Also, um eins noch mal klarzustellen: ich benutze eine eigene Noisefunktion um für jeden Punkt einen Wert zu erhalten, der bei gleicher Eingabe auch gleich ist (natürlich ändert der seed den Wert). So kann ich die Welt in beliebiger Reihenfolge generieren, wie zum Beispiel in Minecraft, da ist es egal, ob ich zuerst chunk 100|100 oder 32|42 generiere, was ja bei der normalen rand() funktion nicht gegeben wäre.
Nun zu meiner Vorgehensweise: Ich generiere Voronoi-Zellen, indem ich den X- und Y-Wert eines Chunks in jeweils eine seperate Noisefunktion gebe. Dadurch erhalte ich einen Offset in X-/Y-Richtung. Diesen hinzuaddiert, bekomme ich unregelmäßige Zellen, die ich dann als Berge benutze (Mittelpunkt ist am höchsten / die spitze). Wenn ich unterschiedlich detaillierte versionen davon nehme, also einmal zellen am 512er-Raster, dann am 256er-Raster etc., dann bekomme ich eine unregelmäßige, aber realistische Hügellandschaft. Danach gucke ich mich nach möglichkeiten für die Generierung von Flussläufen und Straßenpfaden um. Diese müssen natürlich auch nur anhand der Chunkposition berechenbar sein.
Wenn jemand noch Fragen oder Anregungen / Kritik hat, bitte melden ;)
MfG,
RmbRT
"Dumm ist, wer dummes tut."

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

16

29.07.2013, 19:23

Ich habe mal in einem Game-Programming Gems etwas über predictable Random Numbers gelesen. Damit konnten mit wenig Speicher vorhersehbare Welten generiert werden. Vielleicht hilft dir das etwas weiter ;)

RmbRT

Treue Seele

  • »RmbRT« ist der Autor dieses Themas

Beiträge: 169

Wohnort: Darmstadt

Beruf: Student

  • Private Nachricht senden

17

29.07.2013, 19:27

Das ist genau das, was ich versuchte auszudrücken :D Aber danke für das Stichwort, kannte das bis jetzt nur unter perlin noise (was eigentlich ja nicht das gleiche ist).
"Dumm ist, wer dummes tut."

Werbeanzeige