Hallo zusammen,
ich arbeite gerade daran ein kleines "Broswer-" bzw. Serverbasierendes Spiel zumachen.
Da ich mich mit
NonVCL net so auskenne, läuft des alles über
VCL Komponenten.
So zum Speichern der Daten dachte ich mir, dass ich für den Spieler, der auf dem Server registiert ist eine Datei anlege. In der Speicher ich alles wichtige. Das PW (natürlich ein bischen decoded) usw...
Zur Zeit läuft die Speicherung der Daten ohne Threads. Ich bin am überlegen, wenn ich sie einbaue wie es am besten wäre.
Beim start des Servers wird in einem Verzeichnis nach allen Dateien mit einer bestimmsten endeung gesucht. Der Benutzername ist das Dateiname. Mit TFileStream lade ich alle Daten rein, weil ich es dann so machen will, wenn Daten geändert werden. z.b. die Charakterstats oder so, gebe ich die Streams nicht frei sondern übergebe es an eine Liste, wo auch intern alle Daten gespeichert sind.
Wenn ich jetzt was ändere, schreibt der "Listeneintrag" sozusagen die Daten in die Datei. Da ich auch teilweise mitten in die Datei was einfüge, muss ich ja alles, was nach der Position ist wo ich es einfügen will, erst in eine Variable speichern und dan dranhängen.
So jetzt kommt, unabhängig ob ich das mit Threads mache je Datei oder nicht, das Problem vllt, das der server beendet wird, genau in dem Moment, wenn er was einfügen will und dadurch die Datei beschädigt ist von dem jeweiligen Spieler, oder irre ich da?
Das nächste Problem vor dem ich stehe, ist wie ich es mit Threads umsetzen soll.
Klar ist je Datei einen, nur was geschrieben wird ist ja Unterschiedlich also wie erstellen?
Ich mach mir deshalb diese Gedanken, da ich vorraus denke, zumindest was das getrifft
Zur Zeit ist eine Datei nur knapp 200 Byte groß, da sind ja auch nur größtenteils dei Grundlegenden Sachen drin, wie PW, Charakter und Berufe. Dazu kommen ja dan noch jedes Gebeude was vllt je Gebeude 10- 30 Byte sind oder so. Dann das Lager usw...
Vllt ist ja die Überlegung bei wowenig Speicher auch völlig unsinnig, weis es ja net. Da ich noch net so viel mit Dateienverwaltung zutun hatte, zumindest die ich selbst Byte für Byte erstelle...