Ich bin neu in DB Design. Ich versuche ein Brettspiel zu schreiben (max. 4 Spieler) und habe versucht, einen Weg zu finden, Bewegungen untereinander zu kommunizieren. Ich verwende hierfür eine DB wie im Stackoverflow vorgeschlagen.DB Design Frage - Multiplayer Spiel
Mein Problem ist dies - Wenn Spieler A einen Zug macht, muss dieser Zug von B, C und D gelesen werden. Also muss die Tatsache, dass A den Zug gemacht hat, an B, C und D kommuniziert werden es ist der folgende Weg. Bitte sagen Sie mir, ob es einen besseren Weg gibt, es zu tun. Mir scheint es alles falsch und unglaublich flockig.
Ich habe eine Tabelle mit den folgenden Feldern -
GameID, userMove, Flaga, flagB, FlagC, FlagD
Also, wenn A die Bewegung, die ich unter anderem schreiben macht - (Flaga = 0, flagB = 1, flagC = 1, flagD = 1)
Wenn B, C oder D die Bewegung von A lesen, dekrementieren sie ihr entsprechendes Flag.
A wird die Tabelle nicht aktualisieren, wenn alle Flags 0
gleiche Sache geschieht, wenn andere ihre Bewegungen machen.
Kommentare? Es muss einen besseren Weg dafür geben. Die Dinge, die ich hier falsch bin zu sehen -
- ich ein ausgesuchtes bin Looping, bis alle Flags sind 0 für A
- ich ein ausgesuchtes bin Looping, bis das Flag für die entsprechenden Benutzer gesetzt, um den Zug zu lesen.
Das ist eine Menge Serverlast und Client-Timeouts, um die ich mich kümmern muss.
Ich hoffe, ich konnte mein Problem klar erklären. Bitte stellen Sie Fragen, wenn nötig.
Jede Hilfe wird geschätzt.
BEARBEITEN: Das Spiel ist webbasiert (läuft in einem Browser) und ich benutze PHP für die serverseitige Entwicklung und so kann ich keinen In-Memory-Cache verwenden, obwohl ich das liebend gerne tun würde, wenn möglich.
Danke, - Pav
Looping Bedeutung Polling oder Looping Bedeutung Iteration? – Xailor
ich verstehe nicht ganz, warum Sie überhaupt eine Datenbank benutzen würden? um die Bewegungen zwischen Spielern zu kommunizieren? Wie Daniel herausfand, ist eine DB nicht die beste Wahl für diesen Zweck, Sie wären viel besser dran mit lokalem Speicher – yurib