Datenbank Gamedevelopment ErsteHilfe

  • Antworten:4
yumperz
  • Forum-Beiträge: 17

27.12.2013, 13:04:12 via Website

Hallo,
ich bin neu hier, also entschuldigt mich, wenn nicht gleich alles Glatt läuft bei meinem Post :-)

Also, ich bin zurzeit dabei ein Spiel für Android zu programmieren welches auf TileMaps basiert und in etwa Den älteren Zelda spielen für gameboy nahekommt.

Ich habe also eine Datenbank in der es eine Tabelle "People" gibt und eine Tabelle "User" Der User ist nur zur identifikation gedacht, da ein User auch gewisserweise auch nur ein People ist, nur halt mit ein paar weiteren funktionen. Alle weiteren People sind automatisch NPCs.

DatenbankSchema:
  1. User: UserID, PeopleID
  2. People: PeopleID, PositionX, PositionY, Route ...

Wenn ich jetzt ein Update rausbringe, in dem ich NPCs also People hinzugefügt habe, wie kann ich das handeln?
Ich habe gelesen das man meistens die alte tabelle "DROPT" und dann mit den neuen werten neu anlegt (Hierzu: ich habe ein script, welches mit die komplette Datenbank samt trainer anlegt, ich liefere also keine schon vollständige datenbank in der APK mit), aber das kann ich ja nicht tun, weil sonst ja die User daten verloren gehen würden, oder ist es weiser eine Extra Tabelle für die User anzulegen anstatt auf die bereits vorhandene People tabelle zuzugreiffen?

Ich hoffe ihr habt mein Problem verstanden und könnt ein bisschen helfen=)
Bei weiteren fragen, einfach drauf los :)

Antworten
impjor
  • Forum-Beiträge: 1.793

27.12.2013, 13:50:32 via App

Du sagst, es gibt ein Problem, wenn du in einem Update (deiner App?) neue NPCs hinzufügst, warum? Du musst diese doch nur in die Datenbank hinzufügen, oder?
Zudem erklärst du, dass es zwei Tabellen People und User gibt und meinst, wenn du die Tabelle People "dropst" löscht du User gleich mit (stimmt nicht) und fragst ob du lieber zwei Tabellen an legen sollst (was du ja bereits getan hast)? Alles etwas unverständlich.
LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
yumperz
  • Forum-Beiträge: 17

27.12.2013, 14:09:43 via Website

Öhm, eigentlich hab ich da extra alles mit hingeschrieben :D
das Datenbankschema zum beispiel...
Es existiert eine User Tabelle, die dient zu Identifikation sowie zur Zuordnung von Inventar etc (MultiUser kompatibel).
da ein User aber ja genau so wie die Npcs eine Bestimmte Position hat sowie in einem bestimmten Gebiet steht und all sowas, habe ich nur eine Tabelle die eine Person bestimmt mit all den werten und der User enthält einen Eintrag aus dieser Tabelle!

Meine frage ist nur, wie ich ein Update überhaupt Gestalte, ob es da so eine Art Musterlösung gibt, die man eigentlich immer standardmäßig benutzten kann, oder ob das doch komplizierter wird als ich es mir gedacht habe... oder ob ich neben People noch eine Tabelle NPC erstellen muss, die exakt die gleichen spalten hat wie People selbst.

Antworten
yumperz
  • Forum-Beiträge: 17

27.12.2013, 15:04:25 via Website

Ich kenne mich mit android und datenbank entwicklung leider so gut wie gar nicht aus desswegen weiß ich nicht genau wie man die updatemethode aufbaut, aufgerufen wird sie ja wenn ich die versionsnummer ändere,

Also:

Nehmen wir an ich möchte das spiel nachdem es fertig ist, erweitern und die bereits installierte version Updaten.
sprich es kommt eine neue Map hinzu auf der wiederum neue Npcs herum stehen.
Also erweitere ich mein Script, das mir die Komplette Datenbank erstellt für diejenigen die das spiel neu installieren!
Nun müssen aber ja auch diejenigen behandelt werden, die das spiel bereits installiert haben und nur das update erhalten. Hierfür ist denke ich mal die OnUpdateMethode des SQLOpenHandlers da.

aber wie passe ich die Updatemethode an?
schreibe ich dort einfach die Charactere rein, die neu hinzu gekommen sind?
also: "INSERT INTO PEOPLE (PositionX, PositionY, Gebiet, etc...)"

das ist ja irgendwie nicht ganz so Entwickler freundlich, da ich mir dann ja jedesmal exakt merken muss welche Charaktere neu hinzugekommen sind und diese aus meinem onCreate Script wieder heraus suchen muss um keine werte zu verwechseln.
Gibt es da eine einfachere Methode, oder wird es standardmäßig genau so gemacht?
Schreibt man immer in die Updatemethode einfach das rein, was neu hinzukommt? in den Beispielen wird immer eine Tabelle gelöscht und dann die OnCreat neu aufgerufen :/

Antworten