Skip to content

feat: bench four players and record the V0.2 measures and captures - #174

Merged
r4mbo7 merged 2 commits into
mainfrom
issue-149-assemble-v0.2
Oct 5, 2026
Merged

r4mbo7 merged 2 commits into
mainfrom
issue-149-assemble-v0.2

Conversation

@r4mbo7

@r4mbo7 r4mbo7 commented Oct 5, 2026

Copy link
Copy Markdown
Owner

Refs #149

Le jalon reste ouvert : il attend les vérifications de Constantin (liste plus bas).

Ce que fait la PR

  • ?dev=bench&players=4 (src/app/dev.ts, src/app/game.ts) : quatre joueurs sur un écran (VJ, roadie, care, puis une seconde VJ), trois agrès chacun, 300 bad vibes, caméra everyone. Sans le paramètre, le banc à un joueur est inchangé. Tests dans src/app/dev.test.ts. Aucun autre comportement du jeu ne change.
  • README.md (état V0.2, comment jouer à plusieurs en local et en ligne, une capture de partie à quatre), docs/plans/v0.2.md (état, reste à Constantin), ADR 0007 (une ligne « mesuré le 2026-10-05 »).

Mesures (portable i9-12900HK, RTX 3050 Ti, Chromium affiché, 1280x800, 10 s après 4 s de chauffe)

Coût par image, ?dev=bench, 300 bad vibes :

Joueurs Images/s Sim Rendu Interface
1 59,95 0,45 ms 1,25 ms 0,15 ms
4 59,85 (min 59,1) 0,93 ms 1,39 ms 0,21 ms

Ce portable a une carte dédiée : ce n'est pas la mesure demandée (« sans carte dédiée »), elle reste à Constantin. Pour la pire borne, Chromium sans GPU (SwiftShader, sans affichage) : 4,7 images/s à un joueur, 6,5 à quatre, sim 8,3 ms et rendu 2,4 ms par image à quatre ; le logiciel ne dit rien d'un portable réel mais montre que la sim à quatre coûte environ deux fois celle d'un joueur.

Bande passante par invité (courtier local, deux ou quatre pages, une minute, 1 677 ticks, octets de charge utile du canal de données via RTCPeerConnection.getStats(), partie ?dev=bench pour qu'elle dure, cartes choisies automatiquement) :

Équipe L'invité envoie L'invité reçoit Total Hôte envoie
2 joueurs 4,7 ko/s 8,1 ko/s 12,8 ko/s 8,1 ko/s
4 joueurs 4,7 ko/s 15,5 ko/s 20,3 ko/s 46,6 ko/s

La cible R24 (moins de 20 ko/s par invité) tient à deux, et est tout juste franchie à quatre en additionnant envoi et réception (15,5 ko/s dans le sens hôte vers invité). Hors charge utile : l'en-tête SCTP, DTLS et UDP s'y ajoute. Un invité envoie ~165 octets par tick alors que sa commande tient en quelques octets : la sérialisation JSON de PeerJS est la piste, pas modifiée ici (hors périmètre, aucun comportement de jeu).

Connexion locale (courtier local, sans Internet) : transport prêt en 23 à 80 ms chez l'hôte et 130 à 160 ms chez l'invité (online.connectMs) ; de « Créer un salon » au code affiché 1,2 à 2,6 s (chargement de PeerJS compris) ; aller-retour 1 ms ; aucune divergence, empreintes égales. Le courtier public et deux réseaux restent à mesurer.

Captures 1280x800

Poussées sur pr-assets dans issue-149/.

Salon local, quatre places Partie à quatre, de nuit
salon local nuit
Salon en ligne, hôte Salon en ligne, invité
hôte invité
Partie à quatre, aube Fin d'équipe (sunrise)
aube fin

Les parties à quatre viennent du banc, dont j'ai avancé à la main le palier du set pour changer la lumière (state.set). Le plein jour n'existe qu'à l'écran de fin (comme en V0.1) : la capture « jour » de la partie est donc l'aube, et le plein jour est l'écran de fin. Observation : dans le salon local, les quatre champs « Nom » portent le contour de focus en même temps (un curseur par périphérique, vraisemblablement voulu) ; à voir par Constantin.

Preuves

  • pnpm check vert.
  • CI=1 E2E_PORT=4320 E2E_PEER_PORT=9320 pnpm exec playwright test --project chromium --workers 2 : 78 verts.

Reste à Constantin (#149)

  • Partie à distance sur deux réseaux (procédure de la PR feat: play a set online with friends, hosted from a link and kept in lockstep #169) : dix tentatives de connexion (durée, succès ; cible moins de 10 s, 9 fois sur 10), un set entier à deux, puis à trois ou quatre ; aller-retour et bande passante (getStats), divergences (aucune attendue) ; résultats ici et dans l'ADR 0007 (« mesuré le … »).
  • Une partie à deux manettes sur un écran, jouée à la main (« sans explication »).
  • 60 images par seconde à quatre sur son portable sans carte dédiée : ?dev=bench&players=4, coût par image dans la console.
  • main déployé, une partie à distance jouée depuis GitHub Pages.
  • Critères de réussite du document d'exigences :
    • deux réseaux différents, connexion en moins de 10 s, 9 fois sur 10, un set entier sans divergence ;
    • retard sur ses propres gestes (aller-retour plus un tick plus le tampon) sous 150 ms sur une connexion ordinaire ;
    • deux manettes sur un écran : une partie à deux sans explication ;
    • après une partie, un ami dit ce que font le roadie et le care ;
    • un agent qui n'a jamais vu le dépôt ajoute une classe en touchant src/data/, un dessin et un son.
  • Ce qui déçoit devient une issue (feedback ou type:bug) ; si le pair à pair déçoit, une issue selon l'ADR 0007.
  • Fermer le jalon V0.2 et l'issue app : assembler la V0.2, partie à distance jouée, mesures et captures #149.

@r4mbo7
r4mbo7 merged commit ec46d4e into main Oct 5, 2026
11 checks passed
@r4mbo7
r4mbo7 deleted the issue-149-assemble-v0.2 branch October 5, 2026 12:19
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.

1 participant