In Online-Spielen melden sich Benutzer lieber an und ab, wann immer sie wollen. Normalerweise werden ihre Spielerfolge nahtlos auf dem Server gespeichert. Das ist nicht so schwer zu erreichen, aber ich frage mich, wie es auf effiziente Weise sinnvoll und skalierbar gemacht werden kann.
Ist es sinnvoll, die Koordinaten und den Status des Spielers bei jedem Senden zu speichern? Mein node.js- Server kann dies problemlos tun, ohne eine Antwort zu blockieren, und ich möchte eine Mongo-Datenbank verwenden. Vielleicht ist es jedoch besser, dies einmal pro Sekunde und in einem serverweiten Ereignis zu tun und alles auf einmal zu sammeln.
Antworten:
Ich denke an ein traditionelles MMORPG wie World of Warcraft.
Speichern Sie nach jedem Befehl von jedem Spieler und autonomen Sache (zB NPC)
Speichern Sie alles regelmäßig
Speichern Sie einen Charakter beim Abmelden (speichern Sie nichts anderes)
Gedanken schließen
Nehmen Sie diesen Rat nicht als absolute Wahrheit. Ich habe kein Multiplayer-Backup-System geschrieben. Ich bin die Arbeit an einem Online „Spiel“, weshalb ich daran gedacht habe , und schrieb meine Gedanken über, aber ich habe nicht auf die Stufe der Umsetzung dieses noch bekommen. Dies wird also ohne tatsächliche Erfahrung geschrieben, aber nach viel Lesen und Sammeln von Wissen über das Thema.
quelle
Ich nehme an, es hängt von der Art des Spiels und dem Verkehrsaufkommen zwischen den Spielern und dem Server ab.
In einem MMORPG wäre es nicht sinnvoll, die Position des Spielers jedes Mal zu speichern, wenn er die Informationen an den Server sendet. Es wäre sinnvoller zu aktualisieren, wenn die aktuellen Daten des Spielers sozusagen "veraltet" sind. Es kann auch vorteilhaft sein, den Status des Spielers bei wichtigen Ereignissen wie dem Betreten von Neuland, dem Besiegen eines Chefs oder dem Verlassen eines Geschäfts zu retten.
In einem rundenbasierten Spiel wäre es auf jeden Fall sinnvoll, den Status des Spielers jedes Mal zu speichern, wenn er seinen Zug beendet, sowie nach dem Zug eines gegnerischen Spielers (außer Gesundheitsverlust, Zaubereffekten usw.).
Auch hier hängt die Antwort vollständig von der Größe und den Funktionen Ihres Servers ab. Es geht darum, die beste Balance zu finden und so viel wie möglich zu optimieren, ohne die Qualität zu beeinträchtigen.
quelle
Wenn Ihre einzige Sorge darin besteht, dass sie sich abmelden, besteht eine einfache Antwort darin, ihre Position zu speichern, wenn Bedingungen für sie in der Spielwelt nicht mehr bestehen (aufgrund von Abmelden oder Trennen).
Nebenbei bemerkt, ich wäre etwas vorsichtig, wenn der Client dem Server seine Position meldet, oder zumindest ohne irgendeine Form der serverseitigen Überprüfung der Integrität. Wenn Sie dies jedoch bereits eingerichtet haben, können Sie diese Position wahrscheinlich beim Abmelden oder Trennen der Verbindung speichern, da Sie sich nicht darum kümmern müssen, Daten direkt vom Client abzurufen.
quelle