Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Schwarzefee

Treue Seele

  • »Schwarzefee« ist der Autor dieses Themas

Beiträge: 155

Wohnort: Ost-Sachsen

Beruf: Programmierer

  • Private Nachricht senden

1

28.11.2013, 14:03

XML oder SQLite

Hi,

ich frage mich, wie man für ein Spiel (in meinem Fall 2D-Tilemap) Sachen wie Gegenstände, Objekte etc. speichert.

Grade bei vielen Gegenständen denke ich, ist XML etwas langsam. Würde sich da nicht besser eine Datenbank wie SQLite oder ähnliches anbieten?
Hab mit beidem leider noch keine Erfahrung.

Wie speichert man solche Sachen am besten? Was sind Vor- und Nachteile?


Gruß

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Schwarzefee« (28.11.2013, 14:09)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

28.11.2013, 14:13

Abstrahiere die Datenquelle und verwende erstmal das was dir am leichtesten Fällt. Heutzutage können XML Dateien sehr schnell ausgewertet werden, wenn du sie dann noch Packst sind sie nichtmal besonders groß.
Ich persönlich verwende gerade SQLite. Finde es einfach komfortabler als XML.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Schwarzefee

Treue Seele

  • »Schwarzefee« ist der Autor dieses Themas

Beiträge: 155

Wohnort: Ost-Sachsen

Beruf: Programmierer

  • Private Nachricht senden

3

28.11.2013, 14:41

Da ich im Moment beruflich auch viel mit SQL arbeite, wäre das auch meine Wahl.

Oder gibt es gewichtige Punkte, die gegen SQLite sprechen?



Gruß

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

4

28.11.2013, 15:29

Wenn du richtig Business-Anwendung gehst ist SQLite meiner Meinung nach eindeutig die bessere Wahl. Spätestens, wenn du anfängst, Queries selbst zu generieren, ist das mit SQL viel einfacher als mit XPATH. Das Statement kannst du dir ausgeben lassen, in eine Konsole jagen und die Fehler untersuchen mit XML macht das nicht sehr viel Spaß :) XML ist aber wesentlich einfacher im Start ziemlich flexibel ohne festes Datenmodell.

5

28.11.2013, 17:43

Naja, Items und ähnliches sind ja jetzt nicht irgendwie groß. Solange du nicht Millionen oder Milliarden von denen hast, wirst du kaum irgendeinen Geschwindigkeitsunterschied messen können.

Es gibt ja neben XML noch andere hübsche Textbasierte Formate. Ich mag ja Textdateien, weil man die zur Not von Hand editieren kann und weil man sie viel besser debuggen kann (z.b. gucken ob man beim Speichern keinen Blödsinn schreibt). Schneller sind natürlich Binärdateien, wenn es richtig schnell gehen soll gibt es nix besseres, als große Datenblöcke als ganzes zu schreiben oder zu lesen.

XML ist von der Syntax her halt hässlich, weil man so unglaublich viel Platz für die Nodes verschwendet. Aber es gibt ne Menge Tools, mit denen man es schön verarbeiten kann. Schau dir aber mal JSON oder YAML an, die haben ähnliche Features wie XML sind aber nicht so aufgebläht.

Einen Einsatzort für eine komplette Datenbank sehe ich hier nicht. Und Datenbanken sind auch nur schnell für die Dinge, für die sie auch gedacht sind. Solange du nicht Dinge wie komplexe Queries auch wirklich benutzt, bist du trotzdem mit XML Dateien schneller, einfach weil so viel Verwaltungsaufwand entfällt.
Lieber dumm fragen, als dumm bleiben!

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

28.11.2013, 18:00

Es gibt ja neben XML noch andere hübsche Textbasierte Formate. Ich mag ja Textdateien, weil man die zur Not von Hand editieren kann und weil man sie viel besser debuggen kann (z.b. gucken ob man beim Speichern keinen Blödsinn schreibt). Schneller sind natürlich Binärdateien, wenn es richtig schnell gehen soll gibt es nix besseres, als große Datenblöcke als ganzes zu schreiben oder zu lesen.

Über einen entsprechenden SQL Client mit GUI kann man das bei SQL Datenbanken auch sehr gut. Ich würde sogar behaupten es geht besser, weil man dort alle möglichen Hilfsmittel hat, mit denen man auch viele Einträge schnell ändern kann.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

7

29.11.2013, 07:46

Hmm, also ich würde mir überlegen ob es sich bei deinen Objekten um eher unabhängige Strukturierte Daten handelt oder um serialisierte Daten handelt. Im Ersteren Fall würde ich wohl eher die Datenbank benutzen und im letzteren ein Serialisierungsformat um mir nicht noch SQL einfangen zu müssen.

Aber so als spontane Idee, schon mal an eine NoSQL DB (Ist ja grad so ein aktuelles Schlagwort) gedacht? CouchDB oder MongoDB (Also Dokumentenorientiert, gibt die sicher auch in der Form von SQLite). Die würden so ein bisschen die Welten verbinden. Hab damit aber keinerlei Erfahrungen in der Hinsicht. Außer mit Redis aber die passt hier nicht grad.

CouchDB
MongoDB
:love: := Go;

Werbeanzeige