Skip to content

feat: cut the online bandwidth to under 2 kB/s per guest with compact commands and frames - #177

Merged
r4mbo7 merged 3 commits into
mainfrom
issue-176-compact-net-encoding
Oct 5, 2026
Merged

r4mbo7 merged 3 commits into
mainfrom
issue-176-compact-net-encoding

Conversation

@r4mbo7

@r4mbo7 r4mbo7 commented Oct 5, 2026

Copy link
Copy Markdown
Owner

Closes #176

Ce que fait la PR

  • src/net/wire.ts : command et frame deviennent des octets (id joueur, un octet de drapeaux, move et aim en entiers 16 bits, actions seulement quand il y en a, tick en varint). Salon, lancement et empreintes restent du JSON lisible. PeerJS passe en sérialisation raw (chaîne ou ArrayBuffer tels quels), le transport mémoire des tests passe par le même encodage.
  • Quantification à la source, en ligne seulement : l'hôte simule quantizeCommand(sa commande), ce que les invités décodent. Le solo et la coop locale ne passent pas par là, leurs empreintes de rejeu ne bougent pas. Lockstep et sim inchangés.
  • Tests : aller-retour et idempotence sur commandes à graine, taille des messages, rejet des messages malformés, test hôte (commande locale quantifiée), et le test à quatre pairs en mémoire (livraisons inégales, aim aléatoire) finit sur une empreinte unique ; il échoue si l'hôte ne quantifie pas.

Mesures (banc ?dev=bench en ligne, courtier local, une minute, octets de charge utile du canal par getStats)

Le rendu logiciel fait varier les ticks par minute : octets par tick, puis ko/s à 29 ticks/s.

Équipe Avant Après
2 joueurs invité envoie 195 o/tick, 5,7 ko/s 16 o/tick, 0,5 ko/s
invité reçoit 286 o/tick, 8,3 ko/s 24 o/tick, 0,7 ko/s
4 joueurs invité envoie 204 o/tick, 5,9 ko/s 17 o/tick, 0,5 ko/s
invité reçoit 534 o/tick, 15,5 ko/s 44 o/tick, 1,3 ko/s
hôte envoie 1 602 o/tick, 46,6 ko/s 131 o/tick, 3,8 ko/s

Cible de moins de 10 ko/s par invité à quatre : 1,8 ko/s envoyés plus reçus.

Preuves

pnpm check vert ; e2e chromium : tous les tests en ligne verts. Quatre tests solo (feedback, full-game, held-input) ont échoué une fois sous charge et passent seuls.

@r4mbo7
r4mbo7 merged commit da7dc8b into main Oct 5, 2026
11 checks passed
@r4mbo7
r4mbo7 deleted the issue-176-compact-net-encoding branch October 5, 2026 18:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

net : encoder les commandes et les trames pour rester sous 20 ko/s par invité à quatre

1 participant