Seite 1 von 2 12
  1. #1
    No Adblocker!

    Mitglied seit
    18.08.2017
    Ort
    8km von Harburg
    Beiträge
    383

    Wie und wo, lagern Spiele all die Daten ab?

    Hallo,
    Ich erstelle gerade ein Spiel in UE4 und hab jetzt ein kleines Problem.

    Wie lagern die ganzen Spiele ihre Daten ab? Welcher Spieler welche Items hat, wie viel EXP etc.
    Hauptsächlich geht es um die Items.

    Soweit benutze Ich PHP 7.1 und eine MySQL Datenbank(MySQLi).
    Das ganze Loginsystem hab Ich schon, einloggen etc ist kein Problem.
    Ich connecte mein Projekt mit einer Datenbank die auf meinem Webhosting läuft, irgendwie kann Ich es mir nicht vorstellen, dass die Spiele Devs es auch so machen.
    Ich nehme mal an, dass die vielleicht eine andere Datenbank nutzen und die auf einem Dedizierten Server laufen lassen wie zb FreeBSD?

    Bei einem Spiel muss man dann die Erfahrung(EXP) in einer Datenbank abspeichern nach jedem Mob den man getötet hat. Somit ist es viel arbeit für die Datenbank, nehme Ich mal an.
    zb 200 Spieler * 10 mobs = 2000 requests. Dies kann Sich auch schneller stappeln, mit dem Drop, missionen, quests etc.

    Wisst Ihr vielleicht welche Datenbank da genutzt wird?
    Im Internet ist jede Person intelligenter als die größten Erfinder die je gelebt haben.

    •   Alt

      Anzeige
      Bitte einloggen, um diese Anzeige auszublenden.
       

  2. #2
    Avatar von bingo88
    Mitglied seit
    29.09.2008
    Ort
    Deutschland
    Beiträge
    4.533

    AW: Wie und wo, lagern Spiele all die Daten ab?

    Normalerweise verbindet man sich nicht direkt mit der DB, sondern da hängen ein paar Server davor, die die Transaktionen verwalten.

  3. #3
    Avatar von DataDino
    Mitglied seit
    27.09.2016
    Liest
    PCGH.de
    Ort
    NRW
    Beiträge
    430

    AW: Wie und wo, lagern Spiele all die Daten ab?

    Ach du redest nicht von Spielständen, sondern von Live-Gaming?

    In diesem Falle macht das HTTP-Protokoll wenig Sinn. Du benötigst da schon ein für Echtzeit-Übertragung optimiertes Protokoll. Temporäre Statis kannst du Serverseitig in einer arbeitsspeichergestützten Datenbank wie MemcacheD oder Redis ( In-Memory-Datenbank – Wikipedia ) verwenden. Primäre Statis schreibst du in Intervallen in eine andere Datenbank.

    Aber HTTP zur Kommunikation emfehle ich für solche Echtzeit-Anwendungen garnicht!
    PC 1: Haswell i5 | B85 | 16 GB | GTX960
    Notebook 2 (Work): 15,6" | HP | i5-7200U | 8GB | GTX950M 4GB | 128GB SSD | 1TB HDD
    Kamera: Panasonic Lumix DMC-FZ1000 | Canon EOS 1000D

  4. #4
    Avatar von Stryke7
    Mitglied seit
    21.03.2012
    Ort
    Aachen
    Beiträge
    12.502

    AW: Wie und wo, lagern Spiele all die Daten ab?

    Die meisten Spiele erstellen ihre Savegames lokal. Über Steam oder ähnliches werden die meist standardisiert verwaltet und dann mit einem Server dort synchronisiert.

    Mich interessiert gerade eher, wie man nur mit PHP und einer MySQL-Datenbank ein Spiel programmieren will

    Oder vielleicht habe ich falsch verstanden was du gerade tust?


    Edit:
    Nach dem ich den Beitrag noch mal gelesen habe: Meintest du ein reines Browserspiel, bei dem (irgendwie) alles serverseitig gespeichert wird?
    Dann benötigt jedes Objekt wohl eine Position auf der Map oder ein Inventar in dem es liegt. Dafür brauchst du grundlegend eine passende Datenbank.

    Die Frage ist, wie das Projekt skalieren wird. Als kritisch sehe ich hier die Zugriffszeiten auf deine Objektdatenbank an. Bei genug Speicherzugriffen wirst du vermutlich irgendwann auf ein verteiltes System wechseln müssen, wie ein Hadoop-Cluster oder so.

    Aber erstmal würde ich empfehlen die Zugriffe so effizient wie möglich zu entwerfen und dich um grundlegende Funktionalität zu kümmern. "premature optimization is the root of all evil", wie Donald Knuth so schön gesagt hat.
    Geändert von Stryke7 (23.09.2018 um 02:05 Uhr)
    Hilfreiche Links für euch: dasdass.de seid-seit.de duden.de duckduckgo.com

    NAS-PC in PS3-Gehäuse

    Beyerdynamic DT 770 Pro


    User mit Werbung in der Signatur werden konsequent blockiert!

  5. #5
    Avatar von dailydoseofgaming
    Mitglied seit
    26.05.2014
    Liest
    PCGH.de
    Beiträge
    903

    AW: Wie und wo, lagern Spiele all die Daten ab?

    Meinst du Online Gaming? Geht aus deinem ursprünglichen Beitrag nicht hervor.

    Bei Online Games kommt es stark auf die Art des Spiels an.
    Wenn du wirklich Alles in Echtzeit zum Server und zurück bekommen willst (z.B. Spielerpositionen etc.), brauchst du eher etwas Richtung Websockets, daher (Semi)-Echtzeit Streaming.
    Da wirst du aber mit PHP und MySQL nicht weit kommen.

    Wenn es dir um Items und Ähnliches geht, kann man eine regelmäßige Synchronisierung zwischen Client und Server machen. Daher alle X Sekunden die Änderungen zum Server schicken (neue Items, weggefallene Items etc.)
    Muss wie alles bei Online-Games natürlich gegen Manipulation abgesichert sein.
    Xeon E3 1231v3 | Asrock h97M Pro4 |Alpenföhn Brocken Eco | 16GB Crucial Ballistix Sports | Gainward GTX 1080ti | SanDisk Ultra II 240 GB | 1TB Seageate Baracuda | BeQuiet 500W Straight Power E10 CM | NZXT S340 Schwarz | LG 34UM88 3440x1440@60Hz inkl. Freesync | Cherry MX-Board 3.0 - Cherry Brown Switches | Steelseries Sensei | ATH-M40X | Fiio E10K

  6. #6

    Mitglied seit
    02.07.2016
    Beiträge
    134

    AW: Wie und wo, lagern Spiele all die Daten ab?

    Also damals im Single Play um Trainer zu programmieren, befanden sich die Parameter im RAM. Beim heutigen Online Gaming über Anti Cheating Server wird das dort in Nodes, verketteten Listen gehalten, die Infos. SQL ist Game Programmierern zu Lame. Das machen die Python Anwendergesichter, mehr schlecht als recht. SQL hat zu viel Overhead.

    Merke, wer ein Game schreiben kann, kann auch verkettete Listen Low Level verwalten von ihm aus via static struct. So viel wie man braucht, nicht mehr. Die letzte Node hat einen Zeiger auf die erste Node. Fliegt eine Node raus, zeigt der vorherige Node auf die nächst vorhandene Node, vise versa. Das ist rasend schnell. Man nennt sowas auch geilen Richtig schnellen Netcode, daran sind schon viele Simulationen und Games gescheitert. Die Lamer sagen dann, Ping ist schuld. 20msec Ping auweia. Fastpath muss her
    Geändert von Plasmadampfer (25.09.2018 um 22:15 Uhr)

  7. #7
    No Adblocker!

    Mitglied seit
    18.08.2017
    Ort
    8km von Harburg
    Beiträge
    383

    AW: Wie und wo, lagern Spiele all die Daten ab?

    Also Ich mache mein Spiel in Unreal Engine 4 und leider kann mir irgendwie keiner, in en UE4 Foren helfen. Ich hab auch gefragt, ob man Structs oder Tabellen auf dem Server erstellen kann... keine Antwort. Bei einer MySQL / mongoDB etc kann man direkt Sachen ändern.
    Ich will es so machen, dass bei jeder Map ein call an das PHP Programm gesendet wird und gefragt wird "Wurden irgendwelche Items aktualisiert?" zb mit einem Timestamp...
    wenn ja, die neuen Werte von der Datenbank laden.
    Würde alles in Echtzeit passieren ohne den Server neu zu starten.
    Ich bin jetzt bei einem anderem Webhosting Anbieter der SSDs verwendet, für FTP und Datenbanken. Muss Ich mal später gucken ob es da ein Unterschied zu OVH gibt (OVH ist mein altes Webhosting).
    Bei dem neuem Hosting muss Ich "localhost" als Server für die Datenbanken verwenden, weil es auf der gleichen SSD ist, glaube Ich. Was mich zum nachdenken bringt, sind die Hacker die in die Datenbank mal kurz reinschauen könnten.
    Hab auch mal MemCache kurz benutzt aber nicht richtig verstanden.
    Die Items etc die man droppt, würde man nur ein call an die Datenbank machen, wenn man es aufhebt und nicht wenn man es sieht.
    Die Spieler Position würde man jede 2 Sekunden updated in der Datenbank. Du loggst dich aus, logout screen wird dann ein 2s cooldown haben und in den 2s wo man sich ausloggt wird die Position aktualisiert und an die Datenbank geschickt, dann ist man da wo man war beim einloggen
    Ingame wird die Position zwischen Server -> Client jeden Frame aktualisiert, aber es wird nur jede 2s in der Datenbank GESPEICHERT.
    Game Server wird nur eine Verbindung zu der Datenbank haben.

    Hier hab Ich ein kleinen Test gemacht. Die 130ms / 86ms sind vom einloggen und nicht das öffnen.
    Beim HDD Webhosting gibt es auch ein GEO Cache, bei dem SSD nicht.

    Beim Laden der Domain bzw Index kommt man auf:
    SSD: 17ms
    HDD: 28ms

    Browser: Chromium

    Importieren der Datenbank (MySQL) via SQL dauerte (SSD) 0.00005ms (mit paar Test usern drin) beim HDD dauerte es 0.72 - schlag mich tot - ms
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Wie und wo, lagern Spiele all die Daten ab?-test.png  
    Geändert von BloodSteam (27.09.2018 um 14:43 Uhr)
    Im Internet ist jede Person intelligenter als die größten Erfinder die je gelebt haben.

  8. #8

    Mitglied seit
    02.11.2008
    Beiträge
    127

    AW: Wie und wo, lagern Spiele all die Daten ab?

    Zitat Zitat von BloodSteam Beitrag anzeigen
    Hallo,
    Ich erstelle gerade ein Spiel in UE4 und hab jetzt ein kleines Problem.

    Wie lagern die ganzen Spiele ihre Daten ab? Welcher Spieler welche Items hat, wie viel EXP etc.
    Hauptsächlich geht es um die Items.

    Soweit benutze Ich PHP 7.1 und eine MySQL Datenbank(MySQLi).
    Das ganze Loginsystem hab Ich schon, einloggen etc ist kein Problem.
    Ich connecte mein Projekt mit einer Datenbank die auf meinem Webhosting läuft, irgendwie kann Ich es mir nicht vorstellen, dass die Spiele Devs es auch so machen.
    Ich nehme mal an, dass die vielleicht eine andere Datenbank nutzen und die auf einem Dedizierten Server laufen lassen wie zb FreeBSD?

    Bei einem Spiel muss man dann die Erfahrung(EXP) in einer Datenbank abspeichern nach jedem Mob den man getötet hat. Somit ist es viel arbeit für die Datenbank, nehme Ich mal an.
    zb 200 Spieler * 10 mobs = 2000 requests. Dies kann Sich auch schneller stappeln, mit dem Drop, missionen, quests etc.

    Wisst Ihr vielleicht welche Datenbank da genutzt wird?

    Also meistens hast du einen dedicated Gameserver, der dies ebenfalls managed. Also stell dir Battlefield vor: Das Spiel wird gehosted auf einem dedicated Gameserver. Dies ist ein Programm, welches alle eingehenden UDP Verbindungen von den Spielern entgegen nimmt und das Spiel leitet, nach den Regeln der Spielmechanik. Stichwort hier ist Konsensus. Alle Spieler senden ihren Zustand (Position, Leben, Munition etc.) an den Gameserver, dieser entscheidet, was der neue Zustand für alle Spieler im nächsten Frame sein wird. Frame hier im Sinne der Gameserver Tickrate, resp. wie oft pro Sekunde ein Konsensus garantiert wird. Nun wird der Gameserver schlussendlich deine Erfahrungspunkte verwalten, weil nur der Gameserver die Korrektheit derer verifizieren kann, durch den eben genannten Konsensus. Der Gameserver redet dafür via einer weiteren Verbindung, nun über TCP mit einem Webservice, im Battlefield Falle an irgendeinen EA/Origin Webserver, der dein Spielerprofil verwaltet. Der Webservice hat eine Datenbank im Hintergrund, der alle Spielerprofile kennt. Wie das skalierbar gemacht wird, ist ein Thema für sich. Wichtigste Erkenntnis hier: Nicht der Spieleclient, also das im Laden zu kaufende und installierbare Spiel updated dein Spielerprofil, sondern der Gameserver (Bei den meisten Multiplayer spielen). Manche weniger kritische Spiele machen das sicher im Client.

    So einen Webservice hast du am schnellsten mit Node.js oder Python geschrieben. Datenbanktechnologie ist bei so etwas richtig Wurst. MongoDB, PostgreSQL, MySQL, nimm was du willst.

  9. #9
    Avatar von DataDino
    Mitglied seit
    27.09.2016
    Liest
    PCGH.de
    Ort
    NRW
    Beiträge
    430

    AW: Wie und wo, lagern Spiele all die Daten ab?

    Die hohen Latenzen sind dem HTTP-Protokoll geschuldet. HTTP ist ein Zustandsloses Protokoll. Für jeden Request wird eine neue TCP-Verbindung benötigt und der Webserver führt eine Menge Rechenarbeit durch. Dazu kommt dann auch die Arbeit mit und von PHP, die ebenfalls bei jedem Request anläuft. Wie schon gesagt, eignet sich ein Webserver für Echtzeitaufgaben überhaupt nicht und durch den hohen Rechenaufwand bei den Requests schafft ein Webserver auch nicht viele Clients, die ständig Daten an ihn senden, aus.

    Da kommt man meist um ein eigenes spielspezifisches TCP-Protokoll und einer serverseitigen Verarbeitungssystematik nicht herum. So blöd es ist.
    PC 1: Haswell i5 | B85 | 16 GB | GTX960
    Notebook 2 (Work): 15,6" | HP | i5-7200U | 8GB | GTX950M 4GB | 128GB SSD | 1TB HDD
    Kamera: Panasonic Lumix DMC-FZ1000 | Canon EOS 1000D

    •   Alt

      Anzeige
      Bitte einloggen, um diese Anzeige auszublenden.
       

  10. #10

    Mitglied seit
    04.12.2015
    Beiträge
    11

    AW: Wie und wo, lagern Spiele all die Daten ab?

    Zitat Zitat von DataDino Beitrag anzeigen
    Da kommt man meist um ein eigenes spielspezifisches TCP-Protokoll und einer serverseitigen Verarbeitungssystematik nicht herum. So blöd es ist.
    Nicht vergessen diese zu verschlüsseln (SSL etc.). Sonst können die Daten zwischen dem Client und Server abgegriffen und manipuliert werden.

Seite 1 von 2 12

Ähnliche Themen

  1. Spiel kann auf Daten der SSD nicht richtig zugreifen
    Von StormEmpire im Forum SSD, HDD, Laufwerke und Speicher
    Antworten: 2
    Letzter Beitrag: 20.08.2015, 11:38
  2. Zwei Festplatten, wie Windows,Spiele,Daten aufteilen, einige Fragen
    Von orca113 im Forum SSD, HDD, Laufwerke und Speicher
    Antworten: 11
    Letzter Beitrag: 04.04.2013, 18:14
  3. Sleeping Dogs-Lizenzbedingungen: Square Enix zeichnet Spiele-Daten auf
    Von PCGH-Redaktion im Forum News-Kommentare zu Action-Spielen
    Antworten: 4
    Letzter Beitrag: 28.10.2012, 23:58
  4. Android-Spiel sendet GPS-Daten an separates Überwachungs-App
    Von PCGH-Redaktion im Forum Tablet-PC, Handy, Smartphone, PDA und Navigation
    Antworten: 5
    Letzter Beitrag: 18.08.2010, 16:34
  5. Kann weder Spiele installieren, noch Daten entpacken
    Von a-e-x im Forum Windows 7, 8(.1) und 10, Windows allgemein
    Antworten: 22
    Letzter Beitrag: 07.05.2010, 00:07

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •