Jump to content
Unity Insider Forum
axam

Anfängerhilfe Unity3D und Datenbanken

Recommended Posts

Hallo

 

Erstmal ganz allgemein über mich:

Ich habe bereits Grundkenntnisse in C++ und bin sehr geschikt im Umgang mit dem Computer bzw. mit so zimlich jeder Software und jetzt beabsichtige ich, rein zum Zeitvertreib, anhand eines Konkreten Projekts, zu lernen wie man ein Computerspiel erstellt. Für das geplannte Spiel rechne ich vorerst mit 10 Jahren Entwicklungszeit, aber wenn das Spiel nie fertig wird ist es auch kein Problem da für mich erstmal der Weg das Ziel ist und das eigentliche Spiel vorerst mehr ein Mittel zum Zweck ist um dem ganzen eine konkrete Richtung zu geben.

 

In diesem Sinne ist mein erstes Teilziel im laufe des nächsten halben Jahres, einen Charakter zu entwerfen, eine Bar zu entwerfeen und beides so zu kombinierren, das sich der Charakter in der Bar Bewegen kann und sich an einen der Tische der Bar setzen kann.

Aber aufgrund von Hardware-Problemen konnte bzw. wollte ich bislang noch nicht anfangen.

 

Nun zu meiner eigentlichen Frage:

Ein paar Freunde haben mich gebeten das ich ihnen bei einem P&P-RPG den Spieleleiter mache und da kam mir die Idee eine Daatenbank zu erstellen, die alle für die Charaktererstellung relevanten Informationen enthält (Rassen, Zauber, Gegenstände, usw.) nicht zuletzt, da ich diese Informationen vermutlich, irgend wann einmal, auch für mein PC-Spiel adaptieren könnte. Folglich stellt sich nun die Frage welche Datenbank ich für mein vorhaben verwenden soll, damit ich sie später auch Problemlos mit Unity3D verwenden kann, oder kann und soll ich so eine Datenban gleich direckt mit Unity3D erstellen.

 

Wie gesagt, bislang hab ich noch keinen schimmer was mit Unity3D wirklich mögkich ist, ich hab bislang nur irgend wie Mitbekommen, das ich zumindest meine 3D-Objekte in einem externen Programm entwerfen muß währen diese Objekte dann in Unity3D lediglich mit ihren Texturen verknüpft werden und festgelegt wird in welcher Beziehung die Objekte zu anderen Objekten des Spiels stehen.

 

Danke für eur Hilfe

Share this post


Link to post
Share on other sites

Ich ärger mich jedes mal über die Rechtschreibung mancher Leute (auch wenn ich selber gerne Fehler mach :P)

 

Aber zur eigentlichen Frage:

Für ein erstes Projekt 10 Jahre anzusetzen ist ein wenig übertrieben, finde ich. Fang mit einem kleinen Projekt an um langsam aber sicher Unity und seine Möglichkeiten zu verstehen und kennenzulernen. Nur ein Vorschlag.

 

Wenn die Datenbank rein für die Pen and Paper Runde deiner Kumpels is, kannst du auch eine AccessDB machen. Direkt in Unity wird das wohl schwierig, da es keine nativen Werkzeuge für Datenbanken in Unity gibt.

 

Eine (von mehreren) Möglichkeiten ist es über eine MySQL DB zu fahren.

Dazu hier ein Link:

http://wiki.unity3d.com/index.php?title=Server_Side_Highscores

und noch einer:

http://bit.ly/1ej9ZEt

 

Hoffe ich konnte dir etwas weiterhelfen.

Share this post


Link to post
Share on other sites

Bei einer Relationalen Datenbank bietet sich SQLite an. SQLite ist in C geschrieben und eine einzelne Bibliothek die man direkt in einem Programm einbetten kann. Etliche Programme nutzen bereits SQLite. Beispielsweise nutzen Firefox und ähnliches auch SQLite für die Speicherung ihrer Cookies.

 

Ansonsten wird eine komplette Datenbank in SQLite in einer einzigen Datei gespeichert. Es gibt keine Authentifizierung das macht es für die Verwendung in Programmen eigentlich ziemlich praktisch. SQLite hat nur den Nachteil das du keine Concurrente Zugriffe haben kannst. Daher Threads mit mehrfachzugriff funktioniert nicht. Auch beim Auslesen gibt es da Probleme. Allerdings hat das bei einem Spiel eher weniger/gar keine bedeutung.

 

Allerdings kann es ja sein das du beispielsweise eine Webapplikation erstellst und dort die Daten einfügst. Hier würde sich es auch anbieten wenn du dann irgendetwas anderes nutzt wie MySQL, PostgreSQL oder womit du sonst klar kommst und dann deine Daten in SQLite exportierst.

 

Du musst eben nur die Features beachten. SQLIte versteht hauptsächlich nur INT, BIGINT, DATETIME, TEXT und ein paar andere Basis Typen.

 

Ansonsten gab es im Unify Wiki soweit wie ich weiß entsprechend Code/Plugin womit SQLite eingebunden wird. Im Assetstore gab es meine ich ebenfalls Packete die einem das anbieten.

 

Ansonsten würde ich eher nochmal nachschauen was es für den einfacheren Zugriff gibt und worauf du zugreifen kannst. Normalerweise gibt es ja sogenannte ORMs die dir arbeit abnehmen und dann eine Datenbank in Klassen darstellt. Jedoch komme ich nicht aus der C# Welt daher weiß ich nicht was es hier für alternativen gibt und du hier nutzen kannst. Es gibt z.B. LINQ to SQL das dir etwas vereinfacht. Mehr kenne ich auch noch nicht. Und du musst noch darauf achten das Unity eine (veraltete) Mono Version nutzt (2.6.x) daher musst du noch schauen welche ORMs es gibt und welche mit dieser Mono Version gehen.

 

Wenn du UnityScript nutzen solltest sieht es eher schlechter aus. Ich bezweifle das irgendjemand sich die Mühe gemacht hat ein vollständiges ORM in UnityScript nachzubauen.

 

Ansonsten je nach größe der Daten kannst du natürlich auch über eine komplette "in-memory" Datenbank nachdenken. Daher du müsstest nur die Daten Serialisieren wenn du speicherst und wieder deserialisieren wenn du dein Spiel lädst und beim Deserialisieren baust du dir normale Klassenobjekte. Wenn du jetzt nur Infos für 100 oder 1000 Gegenstände hast sollte das ebenfalls volkommen in Ordnung sein. Den sowas kostet nicht viel Speicher. Allerdings wärest du dann evtl. etwas gebunden und du musst dir eine Oberfläche zum Daten eingeben in Unity bauen oder ähnliches.

 

Auser du nutzt Sachen wie JSON, XML zur Serialisierung dann kannst du ebenfalls logischerweise wieder dir irgendwo eine DB aufbauen und musst deine Daten nur in diesem Format exportieren.

 

Es gibt wohl etliche Wege und jeder hat seine Vor/Nachteile. Aber diese Sachen solltest du wohl in Betracht ziehen. Wenn du eine Relationale Datenbank brauchst dann SQLite + Vernünftigen ORM Mapper. Oder evtl. alles in-memory mit Klassen, Listen, Dictionarys aufbauen und einem einheitlichen Serialisierungsformat.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...