Hi
Ich versuche mich zur Zeit an einem Script, dass eine kleine Klötzchenwelt, wie es die meisten wohl aus "Minecraft" kennen, generiert. Ich möchte allerdings einfachere Welten als die aus Minecraft programmieren, d.h.: Ich möchte einfach nur Berge haben, ohne Höhlen, Flüsse, Meer, Bäume etc.
Ich programmiere das ganze in Unity3d und habe jetzt auch ein eingermaßen funktionierendes Script gebastelt, allerdings befürchte ich irgendwie, dass schon allein mein Ansatz nicht so gut ist, weswegen ich einfach nur eine generelle Idee bräuchte, um das ganze dann umzusetzen.
Ich mache das bisher so:
Ich erstelle zuerst eine ganz Flache Ebene mit 50x50 Würfeln. Dann geh ich immer schicht für schicht vor nach oben vor und setzt da halt immer wieder Würfel nach unterschiedlichen Kriterien.
Das hat allerdings zur Folge, dass ich bei jedem weiteren Klötzchen alle Kriterien prüfen muss:
Ich prüfe zuerst, ob sich unter der aktuellen Position, wo der Würfel hin soll, ein anderer befindet, damit die nicht frei in die Luft platziert werden. Dann guck ich, wie viele von den 9 möglichen um den Würfel herum platziert sind. Das sind ja schon mal 10 "Tests".
Dieses Ergebnis werte ich dann nach unterschiedlichen Kriterien aus und setzt dann einen Würfel oder nicht.
Nur bei einer kleinen Welt von 50x50x3 Würfeln komme ich dann ja schon mal auf 7500 Klötzchen. Dann sind für die 2. und 3. Schicht jeweils 10 Checks pro Würfel zu machen, wodurch ich auf 50.000 Abfragen komme. Dann müssen die Ergebnisse noch für jeden Würfel einzeln ausgewertet werden.
Dies sind eine Menge Rechenoperationen, so dass mein Computer mehrere Minuten braucht, um eine Welt mit den Maßen 50x50x3 zu erstellen.
Wenn ich das jetzt z.B. mit Minecraft vergleiche, bei dem das genreieren einer neuen Welt vielleicht 10-30 Sekunden dauert, ist mein Script wohl nicht so optimal.
Habt ihr also irgendwelche Ideen, wie man mein Script eventuell verbessern könnte oder vielleicht noch eine ganz andere Idee, wie man theoretisch bei der Erstellung vorgehen könnte?
Mfg Tayfe






da wurde ein ähnliches problem besprochen 