Harald Hoppelhase

Die neue Action, jetzt mit 30% mehr Action! Geht vom 14.04.23 bis zum 23.04.23
Benutzeravatar
Jonathan
Establishment
Beiträge: 2151
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »

Achso, nein. Kurze Erläuterung:
Zum Synchronisieren muss man also einfach nur alle Einträge vom Server runterladen und danach alle Einträge zurück an den Server schicken (oder umgekehrt), beim hochladen muss man nicht zwischen eigenen und fremden Einträgen unterscheiden, weil ja beide "gültig" sind.
Die get-Operation gibt dir den aktuellen Stand auf dem Server. Im einfachsten Fall ist das exakt der Inhalt der JSON-Datei, ggf. will ich aber am Server auch mehr Einträge speicher (d.h. nie etwas löschen) aber beim get nur die Top 10 oder so zurück geben. Der Client nimmt die Einträge und pflegt sie ein, d.h. sie werden an die lokale Highscore-Liste angehängt, die Liste wird sortiert und die Top10 behalten.
Für die Rücksynchronisation wird die ganze Highscoreliste des Clienten an den Server geschickt, aber halt Eintrag für Eintrag als submit-Operation. Bei jeder submit-Operation prüft der Server, ob der Eintrag schon existiert (kann man am Hash, der ja über alles inklusive timestamp geht sehen) und ob der Hash gültig ist (an dieser Stelle nimmt man an, dass der Punktestand gültig und legal erspielt ist). Entsprechend wird der Eintrag dann verworfen oder behalten.

Dadurch kann man offline weiter spielen und beim nächsten mal Internethaben werden die Punkte dann korrekt übertragen. Da ich auf Doppelungen prüfe brauche ich mir nicht merken, was schon hochgeladen und neu ist und auch nicht was von mir ist und was von anderen. 10 Einträge hochladen ist ja insignifikant, ich mache das einfach immer und gut ist. Und solange keine 10 Millionen Spieler gleichzeitig Highscores Eintragen wird das auch dem Server egal sein.
Lieber dumm fragen, als dumm bleiben!
Alexander Kornrumpf
Moderator
Beiträge: 2019
Registriert: 25.02.2009, 13:37

Re: Harald Hoppelhase

Beitrag von Alexander Kornrumpf »

Jonathan hat geschrieben: 20.05.2023, 18:53 Achso, nein. Kurze Erläuterung:
Zum Synchronisieren muss man also einfach nur alle Einträge vom Server runterladen und danach alle Einträge zurück an den Server schicken (oder umgekehrt), beim hochladen muss man nicht zwischen eigenen und fremden Einträgen unterscheiden, weil ja beide "gültig" sind.
Die get-Operation gibt dir den aktuellen Stand auf dem Server. Im einfachsten Fall ist das exakt der Inhalt der JSON-Datei, ggf. will ich aber am Server auch mehr Einträge speicher (d.h. nie etwas löschen) aber beim get nur die Top 10 oder so zurück geben. Der Client nimmt die Einträge und pflegt sie ein, d.h. sie werden an die lokale Highscore-Liste angehängt, die Liste wird sortiert und die Top10 behalten.
Für die Rücksynchronisation wird die ganze Highscoreliste des Clienten an den Server geschickt, aber halt Eintrag für Eintrag als submit-Operation. Bei jeder submit-Operation prüft der Server, ob der Eintrag schon existiert (kann man am Hash, der ja über alles inklusive timestamp geht sehen) und ob der Hash gültig ist (an dieser Stelle nimmt man an, dass der Punktestand gültig und legal erspielt ist). Entsprechend wird der Eintrag dann verworfen oder behalten.

Dadurch kann man offline weiter spielen und beim nächsten mal Internethaben werden die Punkte dann korrekt übertragen. Da ich auf Doppelungen prüfe brauche ich mir nicht merken, was schon hochgeladen und neu ist und auch nicht was von mir ist und was von anderen. 10 Einträge hochladen ist ja insignifikant, ich mache das einfach immer und gut ist. Und solange keine 10 Millionen Spieler gleichzeitig Highscores Eintragen wird das auch dem Server egal sein.
Das nette an "Cloud-Native" ist, dass es den tradeoff für "das mache ich halt eben selbst, muss ich mich nicht mit einer Datenbank rumschlagen" verschiebt, weil du die Datenbank mit einem Klick "as a service" bekommst.

Schreibe ich weil ich hoffe dass wir immer noch in einer brainstorming Session für die FAQ "Highscoreliste, wie?" sind, und man den Thread vielleicht irgendwann für dritte verlinken will. Ich bekomme von AWS nichts dafür, der Tradeoff für Produktionssysteme kann woanders liegen und ich kann verstehen, wenn einer zögert AWS die private Kreditkarte zu geben. Kostenkontrolle in der Cloud ist bekanntlich die Hölle, aber der Traffic von dem wir hier reden sollte komfortabel in 10 cent im Monat passen, eher weniger.
Antworten