MySQL und schnelligkeit

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • MySQL und schnelligkeit

      Kann man MySQL (Oder ein vergleichbares Datenbanksystem) für (Echtzeit-)MMO Spiele verwenden? Mir geht es hier Hauptsächlich um die Schnelligkeit der Lese- und Schreibvorgänge.

      Ich bitte jetzt die Sicherheit der Datenübertragung/Verbindung außen vor zu lassen, da habe ich schon einige Ideen um das ganze abzusichern.
      Kaldor - Das erste echte MMORTS
    • Theoretisch ja, die Geschwindigkeit hängt allein vom dem Server ab, auf dem MySQL läuft. Praktisch wird aber immer ein Serverprogramm für ein MMO programmiert, das die Berechnungen vornimmt und alle direkt nötigen Variablen vorhält und diese nur von Zeit zu Zeit wieder in eine Datenbank speichert, um die Werte dann dauerhaft vorhalten zu können und bei Bedarf wieder auszulesen.

      Es kommt auf die Menge Spieler an, und auf den Server. Bei wenigen Spielern kann die Berechnung auch beispielsweise per PHP gemacht werden. Bei vielen Spielern ist aber direkter SQL Zugriff nicht mehr ratsam, dann muss eine Serverkomponente her. Viel praktische Erfahrung kann ich dir da nicht bieten. Aber wenn du sowas in Erwägung ziehst dann mach das bei einem vernünftigen Hoster und nicht bei kostenlosen Anbietern wie funpic oder ohost, da dort sehr viele Seiten auf einem Server liegen was die Geschwindigkeit stark abbremst.
      "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
      - Joseph Weizenbaum
    • Erstmals eins vorweg: Ich habe vor, MySQL als Datenbank für ein MMORTS einzusetzen.

      Windapple schrieb:

      das die Berechnungen vornimmt und alle direkt nötigen Variablen vorhält und diese nur von Zeit zu Zeit wieder in eine Datenbank speichert
      Und was wäre so eine "Zeit zu Zeit"?
      Ich hätte mir gedacht, einfach immer wenn etwas passiert, zB. bei Bewegung von Einheiten werden die Koordinaten des Ziels in die Datenbank geschrieben und die Clients bekommen eine Nachricht, dass sich etwas geändert hat.

      Und eine Serverkomponente wird es auch geben um die ganzen anfallenden Berechungen durchzuführen.
      Wieso ich nicht direkt alles in der Serverkomponente durchführen lasse (Berechnungen und Speichern) hat folgende 2 Gründe:
      - Datensicherheit bei Systemabsturz
      - Ich plane, mehrere Unterserver für die Berechnungen aufzustellen, um die Last zu verteilen. Diese können dann bequem auf die DB zugreifen

      Und natürlich habe ich auch einen vernünftigen Hoster parat (Server-Cluster in meinem Keller :D)

      -gn
      Kaldor - Das erste echte MMORTS
    • GamerNet schrieb:

      Und was wäre so eine "Zeit zu Zeit"?
      Ich hätte mir gedacht, einfach immer wenn etwas passiert, zB. bei Bewegung von Einheiten werden die Koordinaten des Ziels in die Datenbank geschrieben und die Clients bekommen eine Nachricht, dass sich etwas geändert hat.
      Hm, nicht sehr schlau. Bei vielen Bewegungen nahezu zeitgleich kackt dir sonst im wahrsten Sinne des Wortes das System ab.

      Und eine Serverkomponente wird es auch geben um die ganzen anfallenden Berechungen durchzuführen.
      Wieso ich nicht direkt alles in der Serverkomponente durchführen lasse (Berechnungen und Speichern) hat folgende 2 Gründe:
      - Datensicherheit bei Systemabsturz
      - Ich plane, mehrere Unterserver für die Berechnungen aufzustellen, um die Last zu verteilen. Diese können dann bequem auf die DB zugreifen
      Hm, glaube mir, die Berechnungen mitsamt Schreibvorgang würden nur wenige Microsekunden dauern. Bei einem Systemabsturz würde der User letztenendes nicht mal merken, dass etwas passiert ist (ausser der Ausfallzeit zum Booten). Also ich würde in jedem Fall die beiden Koordinaten bei jedem Klick übertragen und da dann ggf. sofort vom Server aus PAKETWEISE schreiben, also immer 10 auf einen Rutsch oder so.

      Und natürlich habe ich auch einen vernünftigen Hoster parat (Server-Cluster in meinem Keller :D)
      Woher bekommt man so etwas *auchhabenwill*?
    • iTeM schrieb:

      Echtzeit ist definitiv nicht möglich
      aber wenn man bei jedem klick überträgt ist das eigentlich kein Problem
      Nun ja, ersteres liegt dann aber definitiv am GM und seinen Netzwerk-Funktionen. Aber wenn er ne DLL verwendet, kann sich dei Lage ganz schnell ändern. Und zum Zweiten: Rundenbasierend geht das sicher, aber bei Echtzeit eher hinderlich.
    • Egal was du mit SQL umsetzen willst, in jedem Fall solltest du die Werte immer auf dem Server berechnen und speichern lassen. Vom Client SQL Kommandos abzusetzen ist wie Geld auf der Straße das mit dem Zettel gekennzeichnet ist "bitte liegen lassen", sehr einfach die Übertragung zu manipulieren und dann selber Wunschwerte zu übermitteln.
      "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
      - Joseph Weizenbaum
    • Ich benutze die 39dll. Wie gesagt, um die Sicherheit geht es mir hier ganz und gar nicht.

      Zusammenfassend: Ich kann MySQL für Echtzeitspiele verwenden, wenn ich Pakete nur bei beispielsweise jedem Klick sende.
      Kaldor - Das erste echte MMORTS
    • rootnode schrieb:

      Nicht nur theoretisch. Nehmen wir mal WoW als Beispiel. Der "Server" von WoW ist nichts anderes als eine einzige riesig große MySQL Datenbank. Nichts anderes. Nur MySQL!!!

      Aber ich hoffe das es klar ist, dass ein Programm auf vllt sogar mehreren Servern dazwischen hängt, oder?