google / google/codeworld

Coalesce rapid mouse movements in games

Offen
#379 9 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
enhancement
Vorherrschende Sprache
Haskell
Sterne
1.3k
Forks
201
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Games generate a LOT of mouse movement events, which are each propagated to all clients. We should be able to reduce this. For example, suppose each client tracked when it already had a mouse movement sent within the last 50 milliseconds; and if so, coalesced all consecutive mouse events and postponed broadcasting them until 50 milliseconds had passed.

We could also look into a trick similar to the redraw-avoidance. It's less straight-forward, though, because even if the MouseMovement doesn't modify local states, it still needs to be sent because it might matter in whatever (as yet unknown) state the game will be in, in the merged canonical event stream. So that's not great. BUT, if we could introspect that MouseMovement events are _always_ the identity function for a given game, then we could save a lot of traffic.

It's not immediately clear to me how to discover this. @nomeata knows a fair bit about this: any ideas?

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

In der Issue sind keine Dateien, Tests oder Einstiegspunkte angegeben. Beginne damit, die Behandlung von Mausbewegungsereignissen und den Broadcast-Pfad zum Client zu finden, und vergleiche ihn anschließend mit dem hier erwähnten Mechanismus zur Vermeidung von Neuzeichnungen. Als erledigt gilt die Aufgabe, wenn ein sicherer Ansatz zum Zusammenfassen von Ereignissen oder zur Erkennung identischer Ereignisse festgelegt und validiert wurde, dass das Verhalten der Spielereignisse korrekt bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
haskell
Bereich
game-dev, networking
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.