Maps Speichern/Laden?

  • GM 8
  • Maps Speichern/Laden?

    Hallo, ich wollte mal versuchen ein Sandbox Spiel mit einer "unendlichen" Welt zu erstellen.
    Also so ähnlich wie Minecraft und Terraria bloß mit einen anderen Stil...
    Das Problem ist, dass ich nicht weiß wie ich die Maps speichern und wieder laden kann, wenn sie den view-Bereich überschreiten.
    Hat irgendjemand eine Idee?
  • Es gibt die möglichkeit alles in einen grid zu speichern und zu laden. Oder in einen eigenen format. Dazu brauchst du noch deinen standpunkt und was geldaen werden soll. Also du bist sozusagen in bereich 0:0 und gehst dann nach rechts, dann wird bereich 0:0 gespeichert und bereich 1:0 geladen. Dabei entspricht 1(x-koordinate) und : 0 (y- koordinate) also
    X:Y .
  • Kommt darauf an, was du erstellen/speichern/laden willst. Schau dir mal meine demo an, laufe ein bisschen rum und schau dann in den welt ordner, da werden speicher und lade datein erstellt. Habe halt kein grid genommen.

    Beim grid brauchst du am besten soviele wie du layer hast. Layer 0 z.b. Den boden, layer 1, pflanzen usw. Weis ja nicht ob topdown oder sidescroller. Bei einen grid kannst du das ganze sogar gleich in eine textdatei speichern.
  • Ah, ja, ich hab grade ein Grid durch einen alten Example erstellt, den ich hatte. So weit so gut...
    Nun dann zur wesentlichen Frage: Wie speicher ich und lade ich die Grid ID's mit den dazugehörigen Objekten?
    Wie würde der Code lauten?
  • Schau mal bitte in der hilfe unter grids. Du musst das grid als string in der datei speichern. Habe gerade kein pc an um den richtigen code zu posten. Aber der ablauf ist.:


    Ds_grid als string

    Datei zum schreiben öffnen
    Den string speichern
    Datei wieder schliesen

    In der hilfe steht der passende code

    Edit: berichtigt mich wenn ich falsch liege.
  • Oh, es gibt eingebaute Grids für den Game Maker?
    Also ich habe die Grids selber durch diesen Code gemacht:

    Quellcode

    1. //Gitternetz//
    2. var xret, yret;
    3. xret = floor((x+8)/16);
    4. xret = xret*16;
    5. yret = floor((y+8)/11);
    6. yret = yret*11;
    7. global.returnx = xret;
    8. global.returny = yret;

    Und so erhalte ich meine selbstdefinierten Gitternetze im Spiel:

    Ist aber jetzt ein bisschen blöd vielleicht, aber besteht eine Möglichkeit die auch zu speichern?