Salon 24h/24
Équipes, capitaines et choix
Les règles du PickController : équipes toujours égales, capitaines, rotation du champion, AFK et commandes.
Le PickController du salon 24h/24 forme et fait tourner les équipes. Tout est calculé à partir de maxTeamSize (N), et l'objectif central est qu'aucune partie ne démarre déséquilibrée (pas de 2v1, 3v1 ou 3v4).
La règle d'or : des équipes toujours égales
Avant chaque partie, le contrôleur calcule combien d'équipes utiliser et de quelle taille :
équipes utilisées = min(nombre d'équipes du mode, joueurs disponibles)
taille m = min(N, ⌊joueurs disponibles / équipes utilisées⌋)Ceux qui restent attendent en spec. Quelques exemples avec le football (2 équipes) et N = 2 :
| Joueurs disponibles | Partie | Attendent en spec |
|---|---|---|
| 1 | solo | 0 |
| 2 | 1v1 | 0 |
| 3 | 1v1 | 1 |
| 4 | 2v2 | 0 |
| 5 | 2v2 | 1 |
Avant d'envoyer chaque startGame, le contrôleur vérifie aussi les équipes réelles du salon par rapport à l'attendu. Si quelqu'un a changé d'équipe à la dernière seconde, il corrige et réessaie au lieu de démarrer de travers.
Capitaines et choix
- Le 1er joueur va en bleu et le 2e en rouge : ce sont les capitaines.
- Les suivants attendent en spec, sans interrompre la partie.
- Quand le spec complète les équipes, la partie s'arrête et le capitaine de l'équipe la moins fournie (égalité : le bleu) choisit en tapant le numéro du joueur dans le chat, sans aucune commande, en 30 s. Sans réponse, le premier de la liste est choisi.
- S'il ne reste qu'un seul candidat, il entre tout seul, sans choix.
Ana (blue), tapez le numéro du joueur que vous voulez choisir :
Disponibles : 1 - Carla, 2 - DiegoAvec N = 3 et 6 joueurs, les capitaines alternent : bleu, rouge, bleu, et le dernier candidat entre tout seul.
Fin de partie : le vainqueur reste en bleu
À la fin de chaque partie, un joueur sur le terrain indique le vainqueur avec !win blue ou !win red (sans réponse en 20 s, le bleu reste). Ensuite :
- Toute l'équipe perdante va en fin de file du spec.
- Le vainqueur reste toujours en bleu : si le rouge a gagné, toute l'équipe passe en bleu.
- Le premier de la file devient capitaine du rouge et choisit les autres parmi les joueurs du spec.
Exemple avec N = 2 et un joueur en plus qui attend (Eva) :
bleu : Ana, Carla rouge : Bruno, Diego spec : Eva
> le rouge gagne
bleu : Bruno, Diego rouge : Eva (capitaine) spec : Ana, Carla
> Eva tape : 2 (Carla)
bleu : Bruno, Diego rouge : Eva, Carla spec : AnaQuand quelqu'un part en pleine partie
La partie s'arrête pour ne jamais continuer déséquilibrée. S'il y a du monde en spec, ce dernier comble la place (avec un choix du capitaine, s'il y a le choix). Sans remplaçant, les équipes sont rééquilibrées : celui qui dépasse la taille retourne au début de la file et la partie redémarre, par exemple en 1v1.
AFK
| Situation | Ce qui se passe |
|---|---|
!afk en spec | Le joueur passe AFK : il n'est pas choisi et ne complète pas les équipes |
!afk de nouveau | Sort de l'AFK et va en fin de file |
!afk pendant une partie, par quelqu'un qui joue | Refusé : celui qui joue ne peut pas passer AFK |
!afk entre deux parties, par quelqu'un qui était sur le terrain | Passe en spec comme AFK et sa place est comblée |
| 12 s sans bouger ni écrire, en partie | Simplement prévenu ; passe AFK à la fin de la partie |
Les messages du bot suivent le format o jogador X agora está afk! et o jogador X saiu do afk!.
Commandes
| Commande | Qui l'utilise | Ce qu'elle fait |
|---|---|---|
!afk | tout joueur | Bascule l'AFK |
<n> (juste le numéro) | capitaine dont c'est le tour | Choisit le joueur n° n de la liste (!pick <n> reste accepté) |
!win blue · !win red | joueur sur le terrain | Indique le vainqueur |
!start · !stop | joueur sur le terrain | Démarre ou arrête la partie (!stop retient le redémarrage jusqu'au prochain !start) |
!ping | tout joueur | Répond Pong! |
Protections
- Équipes verrouillées. Le bot appelle
room.lockTeams(): les joueurs ne changent pas d'équipe seuls. - Annulation en secours. Si malgré tout quelqu'un quitte une équipe ou en rejoint une de lui-même, le contrôleur annule ou traite cela comme un départ.
- Commandes réservées à ceux qui jouent.
!start,!stopet!winvenant de spectateurs sont refusés. - Autres modes. Dans les modes à 4 équipes (classic, arrows...), la première équipe est fixe et les autres tournent à chaque partie, avec les mêmes règles de taille égale.
Comment c'est testé
Le contrôleur tourne face à un faux salon qui imite le serveur (écho des changements d'équipe, début et fin de partie asynchrones). En plus de dizaines de scénarios, un fuzz exécute des centaines de séquences aléatoires d'arrivées, départs, !afk, choix, !win, changements d'équipe et commandes, et vérifie à chaque partie démarrée que les équipes sont égales, ne dépassent pas N et n'ont aucun AFK sur le terrain, et qu'à la fin tous les joueurs sont dans l'équipe enregistrée par le contrôleur.