Jump to content
Unity Insider Forum

Wie ist das mit der Datenbank in Unity?


Footloose

Recommended Posts

Guten Tag, 

ich möchte für mein Praktikumsprojekt gerne ein Spiel erstellen.
Muss nicht groß im Umfang sein, sollte aber einige wichtige Elemente beinhalten.

Eines davon ist dass mehrere Spieler gleichzeitig spielen können (Online-Game).
Also über einen Server. Obwohl ich noch nicht genau weiß wie das am besten funktioniert, ist meine
erste Frage aber die der Datenbank. Und zwar sollen nicht nur Objektdaten (Nachladezeit, Name, etc.)
sondern auch die Spieler, die sich ja registrieren und anmelden müssen, in einer Datenbank gespeichert werden.
Das ganze muss natürlich für das Spiel auch funktionieren.

Die Frage ist nun also, wie ich das am besten anstelle.
Was für eine Datenbank(-sprache), wie binde ich die am besten ein?

Ich hoffe ihr könnt mir da kurz helfen :)

Liebe Grüße,
Tobi ;)

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey habe auf Youtube diese Videoreihe gefunden. Arbeite recht viel mit Datenbanken auf der Arbeit allerdings habe ich keine Ahnung wie das Unity handhabt, der Code des Youtubers sieht aber gut aus da ich mich so auch schonmal auf eine Datenbank geloggt habe. Kannste dir ja mal anschauen. Youtube
Falls fragen über SQL kommen und wie die Abfragen schließlich funktionieren kann ich dir w3schools/sql empfehlen ist sehr gut und übersichtlich.

Schönen Gruß
Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich hab mich gerade im Bezug auf Game Development ziemlich mit MongoDB angefreundet aber deine Frage ist ja eher die Connection zu Unity.

Deine Datenbank läuft auf dem online server. Am geschicktesten würde ich persönlich jetzt finden einen WebService zu basteln den man per REST ansprechen kann und über den man die Datenbank auslesen/verändern kann.

Die einfachere Variante wäre aber wohl einfach eine kleine PHP Schicht zu schreiben und dann die ganz einfach per WWW Klasse (Unity) ansprechen.

Unity hat da im Wiki ganz nette Einträge, bin aber grad am Handy, ich könnte ja mal einen raussuchen wenn ich wieder am Laptop bin ^^

@edit:
Vielleicht hilft dir das ja weiter:
https://docs.unity3d.com/ScriptReference/WWW.html
http://wiki.unity3d.com/index.php/WWWForm_PHP_Example

Im Zweifelsfall findet man über Google massig Tutorials und Threads zu dem Thema
(https://www.google.de/search?q=Unity+database+connection&gws_rd=cr&ei=SDDQWIzoBOaR6ATy15nQCA)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Cool danke :)
Hab es zwar noch nicht ganz doch das sieht doch das bringt mich schon weiter.


Ich möchte nochmal kurz mein Anliegen etwas präzisieren:
Das Ziel ist es, (auf einem Server) eine kleine Datenbank zu haben (mit Spielername, E-Mail, Password) und dann
diese im Client abfragen zu können, damit beim drücken des LogIn Buttons der Spieler weitergeleitet wird (nach Überprüfung).
Später im Spiel soll der Spielername dann angezeigt werden können.

Ich habe jetzt diesen Unity Multiplayer (Service) aktiviert. Inwiefern dass was bringt weiß ich nicht, vielleicht kannst
du dazu ja was sagen ;)
Ich fürchte alles weitere würde aber über das Thema etwas hinausgehen.

Ich denke die PHP-Schicht bekomme ich geschrieben, und die Datenbank auch. Jetzt muss also nur noch ein Server her.
Kann da dieses Unity Multiplayer irgendwie helfen oder gibt es da was anderes?
Sorry hab mich da noch nicht exakt mit beschäftigt. Werde ich noch aber vllt. ist das
für dich ja nur eine Antwort von 5min ;)

Danke schonmal :)
LG Tobi 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja im Prinzip musst du nur z.B. XAMPP laufen lassen und kannst deinen Server eigentlich schon ansprechen.

Soll man die Daten von jedem x-beliebigen Computer/Gerät aus abfragen können oder reicht es bsp. Im gleichen Netzwerk zu sein oder vllt sogar lokal?

Außerhalb des Netzwerks müsstest du z.B. einen NAT Punch through machen, im gleichen Netzwerk reicht es die IP deines Rechners zu kennen und lokal musst du einfach nur am localhost operieren.

Aber dein Ziel wäre es in Unity über stinknormale HTTP Requests die php Scripts anzusprechen und dazu ist z.B. die WWW Klasse da.

Also einfach die URL deiner php Scripts im Code verfügbar machen (sei es hartcodiert oder über configs oder was der Teufel) und diese dann in einem Request eben "aufrufen".

@edit: Unity Multiplayer ist imo Overkill für einen Login.. Du musst dich ja nicht in Echtzeit mit anderen synchronisieren oder sowas. Für einen Login würd ichs ganz easy mit einem HTTP Austausch machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, ich habe mich dann jetzt doch für Photon entschieden.
Hier

Das scheint soweit nicht sehr kompliziert zu sein. Zumindest nimmt es einen
doch eine Menge Arbeit ab.

Leider sind viele Sachen die ich gefunden hab schon ziemlich alt (2013) oder
nicht ganz das was ich suche bzw. ich kapiere es da zumindest nicht.
Vielleicht liegt es auch daran dass heute Donnerstag ist :D

Jedenfalls, habe ich ja nun bereits ein LogIn-Fenster:
58d4064029919_Screenshot(65).thumb.png.6f48d1b24d9b3f71b5803770db9b0b30.png

Der nächste Schritt wäre eine Datenbank zu erstellen. Also mit Zeilen wie "Name", "E-Mail", "Passwort", "ID", usw.
Nicht weiter schwer, bekomme ich hin. Nur wo ist die Frage. Nicht das Programm (wir nutzen an der Uni den SQL Developer :(), sondern
wie mache ich das so, dass Photon darauf zugreifen kann? 

Also das meine LogIn-Szene quasi den Server (bei Photon die Cloud) die E-Mail und das Passwort übergibt und
der guckt ob die E-Mailadresse vorhanden ist. Wenn ja und dass übergebene Passwort stimmt, dann soll die ID an den 
Spieler zurückgegeben werden, mit welcher dieser sich im Game dann identifiziert.

Ich denke dass ist soweit ganz norman (hoffentlich).
Doch wo mache ich am besten die Datenbank hin, damit Photon da drauf zugreifen kann?
Muss die auf einem externen Server laufen oder kann man die bei Photon mittlerweile integrieren?
Wäre deutlich einfacher denke ich. 

Ich hoffe ich habe das Problem ausführlich genug beschrieben und ihr könnt mir helfen.
Liebe Grüße,
Tobi

 

Edit: Das mit PHP-Scripts über WWW aufzurufen ist klar, es geht nur wo tue ich die Datenbank überhaupt hin, und wie ;)
Wie oben erklärt halt ;)
Momentan ist das auf bei mir wegen Photon Network auf 20 Spieler begrenzt (kostenlos).
Oder sollte man das lieber anders angehen^^

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 6 Stunden schrieb Footloose:

wie mache ich das so, dass Photon darauf zugreifen kann? 
Doch wo mache ich am besten die Datenbank hin, damit Photon da drauf zugreifen kann?
php-Scripts über WWW aufzurufen ist klar, es geht nur wo tue ich die Datenbank überhaupt hin, und wie ;)

 

Ja danach habe ich dich ja in meinem letzten Post gefragt ^^
Soll da jetzt jeder drauf zugreifen können (also z.B. auch ich) -> Externer Server mit öffentlicher Adresse
Soll es vor erst nur für dich verfügbar sein (während der Entwickler) -> Localhost

Afaik bietet Photon die Photon Cloud an um sowas zu hosten, das wäre dann dein "externer Server mit öffentlicher Adresse", aber ich hab dazu leider keinerlei Details, weil ich Photon nicht nutze, da müsstest du dich mal in Photon einlesen.

Und wenn deine Frage immer noch nicht geklärt ist, weiß ich ehrlich gesagt nicht wonach du jetzt noch fragst ^^


Ich möchte es nur kurz nochmal wiederholen, dass ich so Geschichten wie Photon und Unity Networking, etc für einen ziemlichen Overkill halte wenn es um einen Login geht ^^
Der Login hat ja mit deinem Spiel nichts zu tun, du holst dir nur das Token ab, dass du der bist für den du dich ausgibst, von daher müsstest du theoretisch keine HL-API oder LL-API für Matchmaking Server etc verwenden, aber wenn du das so möchtest hindert dich natürlich niemand daran :D

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du brauchst für dein Vorhaben einen Webserver, oder einen virtuellen Server.

Darauf musst du die Datenbank anlegen und die Datenbankstruktur aufbauen, erstmal die Tabelle mit den Nutzerdaten.

Auf dem Webserver baust du dann ein PHP-Skript, was dir z.B. alle Benutzer als json-Array liefert.

Das rufst du dann mit der WWW Klasse auf www.deinedomain.de/listusers.php oder so.

Das JSON kannst du dann in Unity mit dem JsonUtility zu einer Objektliste machen und im Programm verwursten.


Genau so funktioniert das auch mit anlegen, ändern, einloggen von Benutzern, wobei du da gesondert auf Sicherheit setzen und dir was überlegen musst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...