Jump to content
Unity Insider Forum

Wie realisiert man die einfachstmögliche Datenbank in Unity? (crossplattform!)


Kokujou

Recommended Posts

Hallo. Ich bin ehrlich gesagt am Ende mit meinem Latein.

Ich habe wirklich alles was nur irgendwie möglich ist versucht um SQLite in Unity zum Laufen zu bringen und ganz ehrlich: Es ist nicht schaffbar.

Erst hab ich mir einfach mal das Skript genommen und es eingebaut. Dann hab ich die sqlite3.dll da irgendwie eingefügt und siehe da es hat zumindest im Editor geklappt. jetzt sitze ich seit über 3 Stunden daran irgendwelche .so files aus dem internet zu laden um sie auf android zum laufen zu bringen, und als ich es endlich geschafft hab es auf einemEmulator zum Laufen zu bringen, versagt es natürlich auf meinem eigenen Handy (offenbar ARM64).

Und nachdem ich das jetzt endlich partiell hingekriegt habe und einen Fehler gefunden habe, wollte ich es wieder auf dem Editor laufen lassen um zu sehen ob das jetzt daran liegt dass ich auf ILCPP oder so umgestellt habe, damit Unity das mit dem ARM64 endlich hinkriegt und jetzt findet der da die dll auch nicht mehr. Obwohl sie erst im Plugin und dann im Scripts ordner war.

Es ist mir unbegreiflich und will nicht in meinen Kopf dass Unity keine Möglichkeit hat eine ganz simple Datenbank einzubauen wie sie doch eigentlich für jedes Spiel eine gute und sinnvolle Möglichkeit ist oder nicht?
 

Also bitte helft mir. Wenn schon keine Datenbank dann irgendwas anderes auf dass man Online zugreifen kann aber auch auf dem PC und natürlich mobilen Geräten

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du online haben willst... http-Backend, http-Abfragen im Client und fertig.

Wenn's offline ist - was für riesige Datenmengen sind denn das, dass du dafür eine ganze SQL-Satenbank brauchst? Warum kannst du nicht einfach in eine normale XML-/JSON-/Wasauchimmer-Datei serialisieren?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Weil... Ich davon bisher noch nie gehört habe >.<

Tut mir leid meine Programmierkenntnisse sind größtenteils aus mangelhaftem Unterricht und Unity-Dokumentationen. Mir wär halt nur wichtig dass man gut auf die Daten zugreifen kann eben wie in ner Datenbank über Skript-Sprache gibts das auch für XML/JSON?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Achja und eine Sache vor allem. Man braucht ja meistens beides, eine Online-Datenbank und eine interne in die man die Daten quasi mappen kann.

Wie sieht's da mit der Kompatibilität aus? Ich will möglichst nicht alles manuell parsen müssen^^ Gibt's funktionen die die Antwort vom HTTP-Request auf Klassen mappen können und von da in ne JSON oder XML Datei schreiben können?

Ich hab schon überlegt mit Serialisierung zu arbeiten...

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb Kokujou:

Man braucht ja meistens beides, eine Online-Datenbank und eine interne in die man die Daten quasi mappen kann.

Äh... ne? Du brauchst eine Online-Datenbank nur wenn die Daten halt auch online sein sollen. Bei einem Offline-/Singleplayer-Spiel brauchst du keine Online-Datenbank. Was soll dein Spiel also sein?

Wenn Spielstände Online => Datenbank, Backend, HTTP-Abfrage

Wenn Spielstände Offline => lokale Datei(en) im XML- oder JSON-Format

Ich schreibe extra "Spielstände" Online bzw. Offline, weil du dir bewusst machen solltest, dass nicht einmal Online-Spiele immer Online-Spielstände haben. Bei Borderlands oder Monster Hunter World z.B. sind die Spielstände lokal angelegt, obwohl man online spielen kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Äh ja andersrum man braucht ne Offline-Datenbank, sorry! XD

Ein lokaler Speicher mein aktuelles Projekt ist weniger ein Spiel als eine App die sich mit Unity einfach leichter verwirklichen lässt als mit der Wurzel des bösen: Xamarin.

Wenn man komplexe Datenstrukturen in Online-DBs auslagert brauchen sie ja auch einen lokalen Speicher und eine interne Repräsentation. Also muss die Online-DB die Pflicht ist auf die Klassen gemappt werden und von da in die Datei geschrieben werden die dafür vorgesehen ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also schön... der Form halber:

Ich hab's jetzt mal höchst primitiv gemacht. Ich hab ne Filestream im persistent data path geöffnet, der wohl sowohl mit Android als auch mit PC funktioniert.

Meine Klassen sind serialisierbar, also schreibe ich sie einfach mit nem BinaryFormatter in ne Datei. Die ich dann bei jeder Änderung komplett neu schreibe. Funktioniert soweit ganz gut aber wenn ich raten müsste würde ich sagen dass das nicht unbedingt der eleganteste Weg ist.

Wie funktioniert das bei ner SQLite Datenbank eigentlich, die schreibt doch sicher an bestimmten Positionen rein und nicht die ganze Datei oder?

ich hätte echt gedacht Unity hat zumindest ne SQLite Bibliothek irgendwo drinne... oder würde sich zumindest nicht so unsagbar dabei anstellen sie zu importieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja gut im Prinzip ist Linq ja nichts anderes XD Ich hab irgendwie so die Vorstellung dass SQL vielleicht nicht die ganze Datei bei jedem Update neu schreibt, sondern mit Offsets arbeitet und dann hier und da was einschiebt. Selbst wenn man dann in der Datei suchen muss hätte man ja vielleicht ne bessere Paralellisierung von Prozessor und Festplatte.

Ich helfe gerade bei nem anderen Projekt aus und kenne deren Vorgaben eher umrissen aber andererseits soll die aktuelle DB ja auch nur ein Dummy sein, die richtige ist ja dann Online.

Was denke ich mindestens Lokal sein wird ist die Nachrichten-Datenbank, quasi ein Supportnachrichten system wo normalen Nutzer mit Admins kommunizieren können. Ich kenne mich mit sowas nicht aus darum realisiere ich auch das über Datenbank. Aber wenn ich jetzt nichts unbedacht habe dürfte das nicht so groß werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...