# VotaLaJugada

Web pública y ranking: https://votalajugada.j8.cl/

Control privado: https://tv.j8.cl/ajustes/votalajugada/juego/

## Comandos del chat

| Comando | Función |
| --- | --- |
| `!p blancas` | Elegir blancas, permanentemente en este canal. Comando recomendado. |
| `!p negras` | Elegir negras, permanentemente en este canal. Comando recomendado. |
| `!p b` / `!p n` | Alternativas cortas para blancas/negras si YouTube retiene el mensaje. |
| `!blancas` | Elegir blancas, permanentemente en este canal. |
| `!negras` | Elegir negras, permanentemente en este canal. |
| `!voto e2e4` | Votar jugada en coordenadas UCI. |
| `!p e4` | Alias corto de `!voto`; reemplaza el mismo voto, no añade otro. |
| `!voto Nf3` | También se admite SAN, nombres de piezas en inglés. |
| `!voto e1g1` / `!voto O-O` | Enroque corto cuando es legal. |
| `!voto e7e8q` | Promoción a dama; `r`, `b`, `n` para torre, alfil o caballo. |
| `!tablas` | Votar reclamar tablas si hay triple repetición o 50 jugadas. |
| `!equipo` | Consultar tu equipo. |
| `!ranking` | Consultar puntos y victorias. |
| `!ayuda` | Resumen de comandos. |
| `!comandos` | Manual corto: equipo, casilla de salida y llegada, turno y plazo. |

El bot saluda con estas instrucciones cuando una persona escribe su primer mensaje nuevo en la emisión. Solo una bienvenida por persona y evento; no reproduce bienvenidas del historial. No asigna equipo ni votos automáticamente. Las respuestas usan la autorización independiente de @VotaLaJugada; si YouTube rechaza esa identidad, se permite responder desde ElGamer7876 como alternativa.

Solo se admiten votos desde identidades verificadas del chat oficial de esta emisión. La web es de consulta: no permite votar con un nombre inventado. El nombre puede cambiar sin borrar el equipo. La asignación se guarda por plataforma, canal emisor e ID estable del espectador; no se utiliza el correo de Google.

Una persona del equipo del turno basta para comenzar la votación. El primer voto legal abre **15 segundos**; los demás votos no extienden ese plazo. Una persona tiene un voto por turno y puede reemplazarlo. Gana la jugada con más votos; empates por sorteo criptográfico entre las jugadas empatadas, con registro interno. Sin votos, se espera. UTC aparece en el vídeo y en la web para comparar retrasos.

## Ajedrez y ranking

Se juega ajedrez clásico con reglas de chessops: enroque, captura al paso, promoción, jaque, mate, ahogado y material insuficiente. Hay tablas automáticas por 75 jugadas y quíntuple repetición. `!tablas` participa en la misma votación de 15 segundos y solo se admite cuando el equipo del turno puede reclamar triple repetición o 50 jugadas.

La partida debe alcanzar **8 medias jugadas** para puntuar. Cada espectador que participe en al menos **2 votaciones resueltas** recibe **2 puntos**, y **3 puntos adicionales** si gana su equipo. Partidas canceladas: cero puntos. Ranking general y mensual por canal; el mes se calcula en UTC. La siguiente partida empieza 45 segundos después del resultado. Durante una pausa administrativa, el contador se congela.

Se guardan las últimas 200 partidas con su votación, resultado y PGN. El histórico público muestra las últimas 20. Los PGN pueden descargarse desde la web. Los equipos y puntos se conservan entre reinicios; los votos y sus plazos también se guardan. Los mensajes repetidos tras una reconexión no vuelven a votar y se descartan mensajes antiguos.

## Emisión y privacidad

El panel permite generar vistas previas sin transmitir, pausar/reanudar la partida, cancelarla y comenzar otra, elegir canal temporal o dedicado, iniciar y finalizar **solo este evento**. El canal principal 24/7 utiliza otros encoders y claves. El estado de chat y emisor se muestra en el panel.

Horizontal: **1280×720, 30 FPS**. Vertical: **720×1280, 30 FPS**, composición propia con tablero completo. El contenido es generado por el tablero y el chat; audio silencioso, sin música ajena. El inicio utiliza `liveBroadcasts.transition` después de que YouTube detecte señal activa. La emisión actual es pública por autorización del propietario. El emisor tiene un servicio independiente para conservar la señal durante las actualizaciones del bot.

Para la emisión dual usa la clave vertical existente, asociada manualmente al evento horizontal en Studio. Se conserva separada de la horizontal. No se crean más eventos verticales independientes. Consulta [la documentación oficial de transmisión dual](https://support.google.com/youtube/answer/2474026?hl=es-419).

OBS como alternativa: fuentes de navegador `https://votalajugada.j8.cl/?overlay=horizontal` (1280×720) y `https://votalajugada.j8.cl/?overlay=vertical` (720×1280). No introduzcas credenciales en esas URL públicas.

## Software y fuentes

Worker propio y web: GPL-3.0-or-later. El ZIP de código y dependencias correspondientes se ofrece en https://votalajugada.j8.cl/source.zip. No contiene secretos, bases de usuarios ni grabaciones.

- [Chessground, tablero de Lichess, GPL-3.0-or-later](https://github.com/lichess-org/chessground).
- [chessops, reglas, Niklas Fiekas y colaboradores, GPL-3.0-or-later](https://github.com/niklasf/chessops).
- [YouTube: chat por streaming, liveChatMessages.streamList](https://developers.google.com/youtube/v3/live/docs/liveChatMessages/streamList).
- [YouTube: inicio/finalización por API, liveBroadcasts.transition](https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/transition).
- Adaptador de chat existente de Social Stream Ninja alojado en el VPS.
- Fuente Manrope, SIL Open Font License; licencia conservada junto a los recursos.

Por ahora el juego recibe comandos desde YouTube. Twitch y Nimo no se consideran conectados a este worker. Las integraciones futuras deben aportar ID estable verificado, no solo el apodo del chat.


## Votación más sencilla
La web y la emisión muestran tres opciones legales de la posición actual. Copia una al chat; por ejemplo `!p Nf3` mueve un caballo a f3 si es legal. También puedes elegir otra jugada legal. Las opciones cambian después de cada jugada. No son recomendaciones de una máquina.

Los números junto a blancas y negras son **jugadores**, no un resultado. Los puntos se conceden al terminar una partida de al menos 8 medias jugadas: necesitas haber participado en al menos 2 votaciones cerradas; recibes 2 puntos por participar y 3 más si gana tu equipo. Elegir equipo no concede puntos.
