Cave Generation

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Cave Generation

    Ich mache gerade eine Terrain-Generation Engine und hänge bei der Cave-Generation fest.

    Ich hab zwar eine Methode diese ist aber unschön:
    Ein Objekt wird beim generieren des Terrains erstellt, welches sich
    durch einen Alarm fortbewegt.

    Wenn man das Spiel aber startet, sieht man diese objekte was ich natürlich nicht will.
    Zudem sind die Caves auch nicht gerade so sehenswert.

    Kann mir da jemand einen Tipp geben?
    Gibt's dort irgendeinen spezifischen Algorithmus?
  • Moin,Deine Fragestellung ist so allgemein gehalten, dass man annehmen könnte, du willst, dass wir dir eine Methode schreiben. Ich gehe, davon aus, dass du eine Grundidee brauchst.
    Da du offensichtlich direkt zu Coden übergehst, ohne Planungsphase, hier mein 2-Schritte-Programm.

    Schritt 1: Planung & Visualisierung deiner Idee
    - Wie soll mein "zufällig" generiertes Level aussehen?
    - Schnittstellen: welche Tiles, Blöcke, Parts grenzen wo an?
    - Grid: in welcher Höhe kommen bestimmte Tiles vor? (Ebene0-Ebene5: Erde//Ebene6-8: Erde+Gras...)
    - Welche Kontrollinstanzen brauche ich? (Übergeordnete "Tile-Creator-Objects"?)
    Schritt 2: Algorithmus entwickeln
    - Basis-Algorithmus schaffen, der Basis-Blöcke verteilt
    - Basis-Blöcke so definieren, dass sie zunächst um sich herum (nach deiner Skizze) diverse Blöcke erstellen und vorher erkennen, wo bereits Blöcke liegen

    Mit diesen Kontrollinstanzen hättest du zumindest einen groben Überblick, über das was erschaffen wird und kannst dort ggf. eingreifen. Was du allerdings mit dem Alarm willst, ist mir schleierhaft.

    Was ich noch aus deiner verwirrenden Fragestellung herauslesen kann:
    set_visible = false setzt Objekte unsichtbar.
    instance_destroy() ruft eine Methode auf, die ein "Objekt" zerstört.

    MfG,
    Punish0r
  • Du könntest die Höhlen durch Code generieren, bei meinem Landschafts Generator hab ich erst eine Liste mit Positionen gemacht wo Höhlen angefangen werden sollen (oder weitergemacht, da bei mir Welten fast unendlich waren). Die Liste wird erst zufällig gefühlt und dann abgearbeitet. Dann kommt ein extra Skript (erhöht Übersicht) der dann mit der Position weiter macht, zuerst macht der 3 Blöcke je nach Richtung horzional oder vertikal weg. Dann wechselt er vielleicht die Richtung. Dann geht er von der Richtung eins nach oben, nach unten, nach rechts oder nach links. Eventuell fügt er der Liste noch eine Position hinzu für eine Abzweigung der Höhle. Zufällig bricht er nun ab. Wenn nicht abgebrochen weiter zum Anfang (Blöcke weg machen). Wenn er abgebrochen hat, löscht er die Position aus der Liste und es geht weiter mit der nächsten.

    Das ganze in Javascript:
    henrik1235.bplaced.net/CraftJS%202.0/Der Code dazu (in javascript):
    henrik1235.bplaced.net/CraftJS%202.0/MapGenCave.js (möglicherweiße komplex, da Chunks und umrechnnen).

    Natürlich solltest du aufpassen das die Liste nicht dauernt mit neuen Positione gefühlt wird und das Skript sich in eine endlos Schleife verfängt.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Hi,
    passend zu dem was henrik schon gesagt hat, finde ich was Höhlen anbetrifft den Ansatz über zelluläre Automaten am Schönsten, hier ein paar Links:
    roguebasin.roguelikedevelopmen…g_Random_Cave-Like_Levels

    und der Thread auf tigsource ist super:
    forums.tigsource.com/index.php?topic=5174.0

    Könnte auch interessant sein, bezieht sich aber auf Dungeons:
    roguebasin.roguelikedevelopmen…ungeon-Building_Algorithm
    roguebasin.roguelikedevelopmen…_python%2Blibtcod,_part_3

    Bonus-Stuff ;)
    World-Generation mit Noisemaps:
    nolithius.com/game-development/world-generation-breakdown
    Hab ich auch mal mit flashpunk implementiert, wenn ihr "M" drückt bekommt ihr die Map angezeigt: jmp0.net/pub/swf/like.swf