W Wiki · Caverne

Produit

Battle de gooning

Produit · Gameplay

Battle de gooning

Sessions compétitives 2 à 4 joueurs — PvP libre ou PvE sur un lien du registre. Chrono par participant, lobby par code, battles publiques ou privées, spectateurs sans compte.

Accès

EntréeRoute / UI
Modal chronoTableau de bord → « Lancer le chrono » → onglet Battle
Page publique join / spectateur/battle-gooning (alias /battles) — join membre ou ?watch=ID / ?battle_id=ID sans login
Registre PvEBouton « Battle sur ce lien » sur une fiche lien
Bannière dashboardNouveauté « Battle de gooning » + tutoriel intégré
Invitations amisBannière dashboard-battle-invite-banner sur le tableau de bord

Modes

  • PvP libre (standalone) — chacun goone à sa sauce ; critères Mix / Durée / Liens ouverts
  • PvE lien registre (pve_link) — même lien pour tous ; victoire à la durée ; lien via roulette favoris, aléatoire ou fiche registre

Configuration lobby

ParamètreValeurs
Joueurs max2, 3 ou 4
TimerDéfaut site · durée fixe · fourchette min–max (ex. 20–30 min, tirage au lancement)
VisibilitéPrivée (code uniquement) · Publique (listée sur /battle-gooning et spectatable)
Code join6 caractères alphanumériques — l'hôte peut le régénérer en lobby (POST regenerate-code)
Opt-in pseudo publicCase à cocher lobby / profil — setting battle_show_name_public (défaut masqué)

Page publique & anonymat

Sur /battle-gooning, hero refondu et slides d'intro (gb_public_intro_v1 en localStorage). Les battles publiques en attente apparaissent dans un select ; les pseudos sont masqués (format M***o : première + dernière lettre visibles). Rejoindre nécessite une session membre ; la redirection login conserve le contexte (?code=, ?watch=, battle active).

Si un participant a activé battle_show_name_public, son pseudo complet est visible des spectateurs et visiteurs publics (sauf mode score caché → « Anonyme »).

Mode spectateur public (sans compte)

Accès direct : /battle-gooning?watch=ID ou ?battle_id=ID pour une battle publique (waiting, active ou finished).

  • Pseudos masqués (M***o) sauf opt-in battle_show_name_public
  • Liens registre PvE : libellé « Lien masqué » / « Contenu registre masqué » — pas d'URL exposée
  • Classement live, indicateur chrono actif par joueur (session_open)
  • Réactions emoji : 🔥 👏 😂 💀 🏆 👀 — toggle par visiteur (visitor_key session ou u:{user_id})
Action APIMéthodeAuth
public-listGETNon — battles publiques en attente
public-spectator-listGETNon — battles publiques actives + en attente
public-spectator-watchGETNon — détail battle + participants masqués (battle_id ou join_code)
public-spectator-reactPOSTNon — body JSON { battle_id, emoji }

Invitations amis

Depuis le lobby (hôte, statut waiting), panneau « Inviter un ami » : liste amis via /api/friends, envoi POST battle-invite-friend. Le destinataire voit une bannière sur le tableau de bord (dashboard-battle-invite-banner) alimentée par GET pending-invites ; actions Rejoindre / Ignorer (POST battle-invite-dismiss).

Barre de statut battle

Pendant une battle (waiting ou active), bandeau sticky .gb-banner sur le registre (#gbRegistreBanner) : kicker « Battle gooning · En cours » (ou « En attente »), mode, leader + score ou code lobby, bouton Chrono pour rouvrir le modal. Masqué une fois la battle terminée.

Chrono, victoire & scores

  • Chrono par participant — chaque joueur démarre/arrête sa session ; arrêt via « J'ai terminé » fige durée et comptage liens à participantEndedAt
  • Alertes adversaires — toast + popup quand un adversaire termine ; rappel modal si d'autres ont déjà fini alors que ton chrono tourne encore ; alertes timer (5 min / 1 min)
  • Clôture battle — automatique quand toutes les sessions sont arrêtées ; hôte peut forcer (battle-end)
  • Critère Mix — score effectif = durée + (liens × 30 s bonus) ; critère Liens ou Durée selon config
  • Vainqueur — meilleur tuple selon critère ; égalité parfaite → winner_user_id null, flag is_tie (pas de victoire auto hôte)
  • Recap — classement par participant (durée, liens, score mix, rang) ; victoire ou message égalité

Tracking clics registre (critère Liens / Mix)

En PvP, le score LIENS compte les clics registre ouverts pendant la session de chaque participant, via le raccourcisseur du site — y compris pour les membres premium. Voir aussi Registre gooning.

API authentifiée (/api/gooning-battle)

ActionMéthodeRôle
battle-createPOSTCréer lobby
battle-joinPOSTRejoindre (code ou battle publique)
battle-startPOSTLancer (hôte, ≥ 2 joueurs)
battle-statusGETPolling lobby / scores (participant)
battle-leavePOSTQuitter lobby (pas en active)
battle-endPOSTClôture anticipée (hôte)
regenerate-codePOSTNouveau code join (hôte, waiting)
battle-random-link / battle-favorite-linksGETLiens PvE (roulette / favoris registre)
pending-invitesGETInvitations battle reçues
battle-invite-friendPOSTInviter un ami au lobby
battle-invite-dismissPOSTIgnorer une invitation
battle-show-name-publicPOSTOpt-in pseudo visible spectateurs ({ enabled: bool })

Arrêt chrono individuel : bouton J'ai terminé dans le widget chrono (ou arrêt depuis le QR mobile).

Tutoriel pas à pas : Tuto Battle gooning · Registre PvE : Registre gooning