Große Menge an Werten speichern - Nur wie am besten?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Renati.

    Große Menge an Werten speichern - Nur wie am besten?

    Hallo Leute!


    Habe ein kleines Problem und wende mich an euch, weil mir keine Lösung einfällt und leider auch Google und SuFu nichts liefern.
    Für mein Spiel wird eine zufällige "Welt" erzeugt, eine Auflistung von bis zu 65.000 Objekten einer simplen Klasse.
    Damit der Spieler auch speichern kann, sollte diese Welt gespeichert werden. Nur wie sortiert man am besten 65.000 Objekte in eine Datei?
    Da ich den Umgang mit XML-Dateien am besten finde, habe ich den Syntax von XML genutzt, leider werden die Dateien recht groß (bis zu 5 MB). Außerdem sollte man die Datei später nicht einfach mit z.B. Notepad öffnen und editieren können.

    Der zu speichernde Text:

    Spoiler anzeigen

    XML-Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <base>
    3. <sectors>
    4. <sector id="0" s="256;256" p="256;256">
    5. <block id="0" t="0" s="16;16" p="256;256" h="2,5"/>
    6. <!-- Bis zu Block 255-->
    7. </sector>
    8. <sector id="1" s="256;256" p="512,256">
    9. <block id="0" t="0" s="16;16" p="512;256" h="2,5"/>
    10. <!-- Bis zu Block 255-->
    11. </sector>
    12. <!-- Bis zu Sektor 255... -->
    13. </sectors>
    14. </base>



    Habe keinen blassen Schimmer, welches Format, welche Techniken oder was sonst ich nutzen kann, um meine Objekte im XML-Syntax in eine für den Laien unleserliche Datei zu speichern :/ -
    Könnt ihr mir da weiter helfen? Bin für jede Hilfe dankbar!

    (Nein, ich suche nicht nach C&P, sondern nach Tipps, Stichwörtern, Anregungen!)

    MfG,
    X-Zat / Momo
    Das Problem warum die Datei so groß wird ist weil in xml ja zusätzlich zum Wert noch so viele Zeichen dazukommen (die Nodes, etc)
    Der Vorschlag von Rinecamo ist gut dan hast du nur Wert mit ; getrennt.

    Damit es für den Laien unleserlich wird kannste die einzelnen Werte vor dem Speichern verschlüsseln und beim Auslesen wieder Entschlüsseln.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Vielleicht kannst Du die datenhaltende Klasse serialisieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hmm, vielen Dank erstmal für eure Antworten!

    Habe (noch) keine Ahnung, was es mit dem *.csv-Dateiformat auf sich hat, werde es mir aber anschauen. Und mit Ver- und Entschlüsselungen habe ich auch noch nicht gearbeitet, werde dies aber wohl auch nachholen :).
    Und ja, XML hat viele (unnötige) Zeichen für Nodes, etc. aber es ist doch ungemein einfach, eine XML auszulesen...

    Ob und wie ich Klassen serialisieren kann, bzw. was dieser Vorgang eigentlich darstellt, weiß ich auch (noch) nicht, werde mich aber definitiv schlau machen!

    MfG,
    X-Zat / Momo
    Ich würde einfach direkt die XML-Datei zippen. Wenn dir das noch zu einfach auszulesen ist, kannst du ja mit einer Zip-Library die Verschlüsselung unterstützt einfach ein festes Passwort setzen.
    Für jemanden mit ILSpy oder Reflector ist das immernoch einfach auszulesen, aber der Laie sollte spätestens wenn das Zip-Programm nach einem Passwort fragt aufgeben.
    Ich hab das (ohne Passwort) gemacht: 400 KiB XML-Dateien werden auf ca. 30 KiB gezippt.

    Viele Grüße, Phil.
    Hey, das hört sich super an!
    Ich denke, ich werde es zuerst einmal mit dem Zippen versuchen - Wenn das nicht reichen sollte, denke ich über das CSV-Format und Verschlüsselungen nach!

    Besten Dank für eure Antworten!

    MfG,
    X-Zat / Momo