Farm abspeichern

  • GM 8
  • Farm abspeichern

    Guten Tag!

    Ich bin gerade beim Planen eins Online Farmgames. Ich kenn mich schon mit der 39dll aus und versteh auch wie ich sie anwenden kann. Jedoch frage ich mich gerade wie ich am besten eine Farm Online abspeicher.
    Es gibt verschiedene Bäume/Felder/Dekorationen etc. Wie speicher ich jetzt sowas ab ohne große Daten zu senden? Es gibt bestimmt viele Möglichkeiten aber bestimmt auch nur manche "perfekte" Lösungen.
    Jetzt die frage.
    Jedes Object bekommt seine eigene Zahl. Der Server bekommt die Zahl und die Koordinaten des Objectes. Wie sollte ich die Zahlen und die Koordinaten jetzt am Server speichern?

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • Ich glaube einmalig kannst du auch viele daten senden. Also der Spieler wartet dann einfach 1-2 Sekunden. Theoretisch würde es auch mit dem GM-save-game funktionieren. Man kann mit der 39 dll auch Dateien hochladen wenn ich mich nicht irre... wär aber keine sonderlich perfekte lösung.

    Du müsstest ein eigenes System entwicklen zum Abspeichern. Am besten alle Daten in einem Grid oder Liste absepichern.
    Für die Datensstrukturen gibt es ja Funktionen (_write) mit denen man einen String daraus machen kann.
    Dann kannst du das einfach mit writestring senden.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • @Dragongamer:
    1-2 Sekunden zu warten ist doch durchaus akzeptabel. Die ganzen OnlineFarmSpiele, sprich FarmVille (Facebook), FarmStory(Für die Handys), da muss man doch auch immer einige sekunden warten bis man Zugriff auf seine Farm hat. Du meinst also ich sollte alles in einen String speichern und den String den Server senden, dieser verarbeitet den String wieder zurück und speichert dies dann richtig ab.


    Naja ich denke mal, ich werde so machen:
    Wenn ich was baue/anpflanze. Werden die Objectdaten gesendet und der Server schreibt sie dann in die Datei, die dem Spieler halt gehören. Aber wie sollte ich dann das löschen übernehmen, wenn jetzt theoretisch, die Daten am Server so abgespeichert sind.

    1 320 320 //Erste Zahl ist das Objekt; Zweite ist die x-Koordinate; Dritte die y-Koordinate
    1 352 320
    1 32 256
    3 16 512

    Und ich weiß jetzt nur das ich das Object an der Pos 32, 256 gelöscht habe und halt dass das Object 1 gelöscht wurde. Wie lösche ich das jetzt aus der Datei?

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • Naja ich habe gedacht, ich speichere es, sobald was verändert wird. Dann wird aber zuviel gesendet oder?
    Wie du sagst, könnte ich ja nur Jede Sitzung speichern. D.h. die Datei wird einfach immer gelöscht und neu erstellt bzw. überschrieben. Das heißt wenn ich das Spiel verlasse, wird die ganze Farm zum Server gesendet.

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • Du solltest es wirklich bei jeder Veränderung sofort speichern, das machen die Originale auch so. Hat auch einige Vorteile...
    1. Es geht viel schneller, weil immer nur so wenige Daten gesendet werden, dass man es gar nicht merkt. So fallen lästige Speicherzeiten weg.
    2. Bei einem Absturz des Spieles geht nichts verloren.
    3. Er verhindert, dass der Spieler mogeln kann, indem er z.B. das Spiel direkt per Task beendet und dadurch einen früheren Spielstand wieder laden kann, wenn er einen Fehler gemacht hatte.

    Ich würde empfehlen alles per SQL zu machen. Wegen den kleinen Datenmengen eignet sich das perfekt.
    Ich habe auch mal ein Farmspiel mit dem GM gemacht. badtoxic.de.tl/Farm.htm Die downloadlinks sind sicher alle tot... Alles hat schon bestens funktioniert. Accountsystem zum einloggen, und es konnte an beliebigen Rechnern so weitergespielt werden. Schwer war noch die Zeitberechnung. Grad wenn man das Spiel lädt und es wird entschieden, ob etwas vergammelt oder fertig ist... Dann noch das Mapping von der isometrischen sicht auf eine normale 2D Matrix... Damit ich per A*-Pathfinding den Spieler perfekt laufen lassen konnte.
  • GML-Quellcode

    1. Du solltest es wirklich bei jeder Veränderung sofort speichern, das machen die Originale auch so. Hat auch einige Vorteile...
    2. 1. Es geht viel schneller, weil immer nur so wenige Daten gesendet werden, dass man es gar nicht merkt. So fallen lästige Speicherzeiten weg.
    3. 2. Bei einem Absturz des Spieles geht nichts verloren.
    4. 3. Er verhindert, dass der Spieler mogeln kann, indem er z.B. das Spiel direkt per Task beendet und dadurch einen früheren Spielstand wieder laden kann, wenn er einen Fehler gemacht hatte.
    5. Ich würde empfehlen alles per SQL zu machen. Wegen den kleinen Datenmengen eignet sich das perfekt.
    6. Ich habe auch mal ein Farmspiel mit dem GM gemacht. http://www.badtoxic.de.tl/Farm.htm Die downloadlinks sind sicher alle tot... Alles hat schon bestens funktioniert. Accountsystem zum einloggen, und es konnte an beliebigen Rechnern so weitergespielt werden. Schwer war noch die Zeitberechnung. Grad wenn man das Spiel lädt und es wird entschieden, ob etwas vergammelt oder fertig ist... Dann noch das Mapping von der isometrischen sicht auf eine normale 2D Matrix... Damit ich per A*-Pathfinding den Spieler perfekt laufen lassen konnte.

    Jo du hast recht.

    Das mitn Spieler ist so eine Sache, ich werde wohl kaum einen Spieler machen, da es mir zu aufwendig ist, zumindest für den Anfang.
    Danke mal für eure vielen Tipps, ich muss mir jetzt mal SQL anschaun und noch ein bar Ideen bzw. sprites noch zeichnen.
    Sobald ich weiteres weiß meld ich mich wieder.

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.