Map zufällig erstellen lassen

  • GM 8
  • Map zufällig erstellen lassen

    Hallo und schönen guten Abend.

    Ich arbeite gerade an einen Projekt, wo ich eine zufällig erzeugte Karte brauche(mit Tile's).

    Es soll eine Insel sein, also außen Meer. - das bekomme ich ja noch hin.

    Nun gibt es aber auch Strand und Kurven( je 4 innen und außen)wie bekomme ich eine Insel hin, die auch realistisch aussieht.


    Tiles :
    Meer
    Gras
    Meer,strand,gras(4xje nach N,O,S,W)
    Innen kurven:Meer,strand,gras(4xje nach N,O,S,W)
    ausenkurven:Meer,strand,gras(4xje nach N,O,S,W)

    Gibt es ein gute möglichkeit, das zufällig zu erzeugen?

    Ein kleiner Denkanstoß würde ja schon helfen.

    Danke schonmal.
  • Ich hab vor langer zeit für diesen Fall mal ein Script geschrieben.

    Es erledigt eigentlich was du meinst. Du must es nur noch umschreiben und die Sprite befehle gegen Tile_add befehle austasuchen.
    Weil ich damals noch nicht so drüber bescheit wust.

    Und die place_meeting's kannst du auch gegen tile_find_layer aus tauschen.
    scr_tileset_base.rar
    Meine Signatur hat kein Visum für das GM Forum erhalten.
  • Danke erstmal.
    Aber ganz so das richtige ist es nicht, da die Map ja schon da sein muss.
    Aber es hat mich auf eine Idee gebracht, da die "map" ja temporär in einen 2d array (heist das überhaupt so ?( ) gespeichert wird.Zumindest schonmal soweit wie ich kam.

    Danke, werde es heute nachmittag mal versuchen umzusetzen.
  • Habs hin bekommen, zwar nicht mit den code,von x-sascha. Aber dadurch kam mir die entscheidene Idee. Also trotzdem danke,

    hier mal der Code, für die Rand_objekte:

    GML-Quellcode

    1. var a,b,c,d;
    2. a=0;
    3. b=0;
    4. c=0;
    5. d=0;
    6. if !place_free(x,y-32)or global.var_tile[x,y-32]="land" {a=1}; //oben land
    7. if !place_free(x+32,y)or global.var_tile[x+32,y]="land" {b=2}; //links land
    8. if !place_free(x,y+32)or global.var_tile[x,y+32]="land" {c=4};//unten land
    9. if !place_free(x-32,y)or global.var_tile[x-32,y]="land" {d=8};//rechts land
    10. wahl = a+b+c+d;
    11. if wahl=1 {tile_add(background0,0,0,32,32,x,y,100)};
    12. if wahl=2 {tile_add(background0,32,0,32,32,x,y,100)};
    13. if wahl=3 {tile_add(background0,64,0,32,32,x,y,100)};
    14. if wahl=4 {tile_add(background0,96,0,32,32,x,y,100)};
    15. if wahl=5 {tile_add(background0,0,32,32,32,x,y,100)};
    16. if wahl=6 {tile_add(background0,32,32,32,32,x,y,100)};
    17. if wahl=7 {tile_add(background0,64,32,32,32,x,y,100)};
    18. if wahl=8 {tile_add(background0,96,32,32,32,x,y,100)};
    19. if wahl=9 {tile_add(background0,0,64,32,32,x,y,100)};
    20. if wahl=10 {tile_add(background0,32,64,32,32,x,y,100)};
    21. if wahl=11 {tile_add(background0,64,64,32,32,x,y,100)};
    22. if wahl=12 {tile_add(background0,96,64,32,32,x,y,100)};
    23. if wahl=13 {tile_add(background0,0,96,32,32,x,y,100)};
    24. if wahl=14 {tile_add(background0,32,96,32,32,x,y,100)};
    25. if wahl=15 {tile_add(background0,64,96,32,32,x,y,100)};
    Alles anzeigen


    Der Code ersetzt das ganze if/else


    Hier zwei Bilder von erstellen Map´s, sind erstmal nur die Grundrisse



    P.S. die map ist 2000x2000
    und die erstellung dauert weniger als einer Sekunde