El juego de la Serpiente, explicado: historia, estrategia, matemáticas de la puntuación y cómo lo reconstruimos para la web moderna
Casi todo el mundo que lee esto ha jugado a la Serpiente. En un teléfono Nokia esperando el autobús. En una calculadora gráfica durante una clase que había dejado de tener sentido. En una pestaña del navegador que se suponía que era una hoja de cálculo. Es uno de los pocos videojuegos que cruza de verdad las generaciones, y lo hace sin pedirte casi nada: cuatro direcciones, una línea que crece, un trozo de comida.
Esa aparente sencillez es una trampa, y es la razón por la que pasamos tanto tiempo reconstruyéndolo. La Serpiente parece un proyecto de principiante. No lo es. Un juego de la Serpiente que se siente bien —que nunca se come una pulsación, que nunca te mata por un giro que hiciste correctamente, que nunca se entrecorta, que nunca se vuelve más fácil o más difícil según la frecuencia de refresco de tu pantalla— es una pieza de ingeniería realmente exigente. La mayoría de las versiones que encuentras en internet fallan en al menos dos de esas cosas.
Este artículo es la versión larga de todo lo que aprendimos. Cubre de dónde viene la Serpiente, qué significan de verdad las reglas, las matemáticas exactas que hay detrás de la puntuación en nuestra versión, las tablas de tiempos que necesitas para jugar bien, las estrategias que separan una puntuación de 200 de una de 2.000, la sorprendente informática que se esconde dentro de una cuadrícula de 21×21, y las decisiones de ingeniería que marcan la diferencia entre un juguete y una herramienta. Si solo quieres mejorar en el juego, salta a la sección de estrategia. Si quieres entenderlo, empieza por el principio.
Código para insertar el juego de la Serpiente en tu web:
Acabas de recorrer toda la arquitectura de este juego: la cuadrícula fija de 21×21 que mantiene las puntuaciones comparables en cualquier tamaño de pantalla, los tres modos distintos (Muros, Portal y Laberinto con cinco disposiciones rotativas), las cinco velocidades, cada una con su propia curva de aceleración y su suelo, el sistema de puntuación con su multiplicador de combo que premia la agresividad, las bayas doradas que caducan a los siete segundos, los momentos de subida de nivel que cambian el juego cada quinta baya, y las sutiles decisiones de ingeniería que hacen que esta versión se sienta receptiva y no meramente funcional. Has visto las tablas de estrategia, las matemáticas del tiempo y la explicación honesta de por qué importa la regla de la cola que se libera. Ahora llega la parte práctica: poner ese mismo motor en tu propio sitio, para que tus visitantes puedan jugar sin salir nunca de tus páginas.
Puedes copiar el código de abajo e insertarlo en tu web —en artículos, barras laterales, pies de página o donde quieras que tus visitantes vivan un momento de juego concentrado y estratégico—. El juego funciona por completo en el navegador, dentro de un contenedor aislado que no puede leer ni tocar la página que lo rodea. No se transmite, almacena ni registra ningún dato de la partida. Los cálculos de la cuadrícula ocurren de forma local, las puntuaciones viven en el propio almacenamiento del navegador de tu visitante, y los controles de teclado y táctiles funcionan sin una sola ida y vuelta al servidor. Cierra la pestaña y toda la sesión se evapora. Lo que juegan tus visitantes se queda con ellos, que es exactamente como siempre ha funcionado una partida de la Serpiente: no importa la cuadrícula, sino las decisiones que se toman dentro de la persona que la mira.
El código para insertar está disponible en seis idiomas de interfaz para adaptarse a tu público: inglés - español - francés - árabe - chino - hindi. El ajuste de idioma controla las etiquetas, los botones y las instrucciones de la herramienta, y también determina en qué idioma aparece la interfaz del juego. El juego en sí es el mismo para cualquier visitante del mundo, pero el idioma en que se muestra depende por completo de la elección de tu visitante, detectada automáticamente desde su navegador en la primera visita y recordada después. Para el árabe, todo el diseño se invierte a derecha-izquierda, reflejando la interfaz para que la experiencia se sienta nativa.
Cambia el idioma de la interfaz modificando el parámetro en la URL: ?lang=es
Idiomas disponibles: en - es - fr - ar - zh - hi
1- Código de iFrame aislado (ideal para artículos y páginas):
Si publicas una guía, un análisis de estrategia o un artículo en profundidad sobre diseño de juegos, la toma de decisiones bajo presión o las matemáticas del juego óptimo —exactamente como el que estás leyendo ahora—, este método coloca el juego totalmente funcional directamente en el flujo de tu contenido. El iframe aislado mantiene la herramienta contenida, de modo que tu diseño se mantiene limpio y tus lectores pueden jugar una ronda sin recargar la página. Todas las funciones operan tal como se han descrito: los tres modos (Muros, Portal, Laberinto), las cinco velocidades (Calma, Clásica, Ágil, Frenética y un nivel adicional), el sistema de puntuación con su multiplicador de combo, las bayas doradas, los momentos de subida de nivel y los controles de teclado y táctiles, todo dentro de una pequeña habitación autónoma en tu sitio.
<iframe data-tooliqo src="https://tools.tooliqo.co/snake-game/?lang=es"
title="Tooliqo — snake-game"
style="width:100%;border:0;height:720px" height="720" loading="lazy" scrolling="no"
allowfullscreen allow="fullscreen; clipboard-write"></iframe>
<script src="https://tools.tooliqo.co/embed.js" async></script>
2- Script flexible (apto para barras laterales y plantillas):
Para barras laterales, pies de página o zonas de widgets, esta integración más ligera carga el juego bajo demanda y se ajusta a su contenedor. Es el mismo motor, los mismos tres modos, las mismas cinco velocidades, el mismo soporte de seis idiomas, el mismo sistema de puntuación, las mismas bayas doradas, la misma mecánica de subida de nivel; solo empaquetado para lugares donde un iframe podría resultar pesado. Ponlo en tu plantilla y el juego aparecerá donde quieras, cuando quieras. Tus visitantes pueden perseguir puntuaciones altas, dominar el modo Laberinto o simplemente jugar una ronda rápida sin salir nunca de tu sitio.
<div class="tooliqo-tool" data-tool="snake-game" data-lang="es"
data-height="720"></div> <script src="https://tools.tooliqo.co/embed.js" async></script>
Nota: Ambos métodos cargan el mismo juego, aquel cuyos tres modos, cinco velocidades, puntuación por combos, bayas doradas, momentos de subida de nivel y seis idiomas acabas de leer. La herramienta respeta el modo oscuro y los ajustes de movimiento reducido en los dispositivos de tus visitantes. Sin marcas de agua, sin límites diarios, sin recopilación de datos. Solo el juego, haciendo lo que hace, en tu sitio. Y si un visitante juega una ronda, pierde contra su propia cola, lo intenta de nuevo y por fin bate su récord, la herramienta habrá hecho aquello para lo que fue creada. El resto depende de él, que siempre fue el objetivo.
Qué cubre esta guía
- Las reglas de la Serpiente, y por qué están tan bien diseñadas
- Una historia completa: de Blockade en 1976 a slither.io y más allá
- Por dentro de nuestro juego de la Serpiente: qué construimos y por qué
- La referencia completa de la puntuación, con todas las fórmulas y tablas
- Tablas de velocidad, tiempo y conversión de la ventana de reacción
- Los tres modos: Muros, Portal y Laberinto
- Estrategia: cómo mejorar de verdad en la Serpiente
- Las matemáticas de la Serpiente, incluido por qué nuestro tablero no tiene ciclo perfecto
- Bajo el capó: cómo construir un juego de la Serpiente que no le mienta al jugador
- Idiomas, accesibilidad y jugar en cualquier pantalla
- Referencia completa de controles
- Preguntas frecuentes
- Glosario de términos de la Serpiente
Las reglas de la Serpiente, y por qué están tan bien diseñadas
El conjunto completo de reglas de la Serpiente cabe en cuatro frases. Controlas una línea formada por celdas conectadas. La cabeza avanza una celda cada vez y nunca se detiene. Puedes dirigirla arriba, abajo, izquierda o derecha, pero nunca directamente hacia atrás, contra tu propio cuello. Cuando la cabeza alcanza un trozo de comida, la serpiente crece una celda y aparece una nueva en otro lugar; cuando la cabeza choca contra un muro o contra cualquier parte de su propio cuerpo, la partida termina.
Lo que hace de esto un gran diseño, y no meramente uno sencillo, es el bucle de retroalimentación. En casi cualquier otro juego de recreativa, mejorar en el juego hace que el juego sea más fácil. En la Serpiente, cada éxito hace más difícil el momento siguiente, porque la recompensa es el obstáculo. La manzana que comiste hace tres minutos es ahora un muro que tienes que rodear. Nada más en el diseño de juegos temprano comprimió el riesgo y la recompensa en un único objeto de forma tan limpia.
Hay una segunda pieza de diseño, más sutil, en funcionamiento. Como la serpiente nunca se detiene, no puedes pararte a pensar dentro del mundo del juego. Cada segundo de vacilación es una celda de movimiento hacia delante que no planeaste. La Serpiente no es, por tanto, un juego de reflejos que finge ser un puzle; es un juego de puzle jugado a un ritmo fijo, algo mucho más raro e interesante.
Por último, la Serpiente tiene una curva de habilidad casi perfecta. Un principiante total puede sobrevivir treinta segundos y comer tres manzanas. Un jugador experimentado puede llenar un tercio del tablero. Un jugador que entiende la geometría puede, en principio, llenar el tablero entero. La distancia entre esos resultados es enteramente conocimiento y planificación, no hardware, no suerte y no dinero.
Una historia completa de la Serpiente: de Blockade al navegador moderno
1976: Blockade, el ancestro que nadie llamó Serpiente
El género comienza en noviembre de 1976 con una máquina recreativa llamada Blockade, desarrollada en Gremlin Industries, en San Diego, y diseñada por Lane Hauck, con trabajo de programación de Ago Kiss. Era en blanco y negro, era para dos jugadores, y la palabra «serpiente» no aparecía por ninguna parte. Cada jugador dirigía un marcador por la pantalla con cuatro botones direccionales; el marcador dejaba un rastro sólido tras de sí, y perdía quien se estrellara primero contra un muro o un rastro.
Según se cuenta, la idea surgió de que Hauck experimentaba en lenguaje ensamblador con un concepto simple: un objeto en movimiento que jamás pudiera volver a visitar un lugar donde ya había estado. Gremlin lo mostró en la feria de la Music Operators of America en Chicago en 1976, donde fue recibido extremadamente bien; tan bien que varios otros fabricantes tenían ya sus propias versiones en el mercado antes de que Gremlin pudiera distribuir en volumen. El primer gran juego de la Serpiente fue clonado antes incluso de salir.
De 1977 a 1982: la oleada de clones y el nacimiento de la Serpiente para un jugador
Atari lanzó Surround para la Atari 2600 en 1977 como uno de los títulos de estreno de la consola; Sears vendió el mismo juego con el nombre Chase. En los ordenadores domésticos, una versión llamada Worm apareció en la TRS-80 en 1978, escrita por P. Trefonas y distribuida a través de la revista CLOAD, con versiones para Commodore PET y Apple II a continuación.
El cambio decisivo llegó en diciembre de 1982, cuando Rock-Ola lanzó Nibbler. Este es el momento en que el género se convierte en el juego que reconocemos. Nibbler era para un jugador, tenía treinta y dos laberintos distintos y, sobre todo, tenía comida: la serpiente crecía porque la alimentabas, no simplemente porque pasaba el tiempo. Casi todo juego de la Serpiente desde entonces es descendiente de Nibbler más que de Blockade.
Nibbler produjo además una de las mejores historias de la historia del arcade. Fue el primer juego recreativo con un contador de puntuación de nueve dígitos, lo que significaba que una puntuación de mil millones era teóricamente posible, y Rock-Ola ofreció una máquina gratis al primer jugador que le diera la vuelta al contador. Tom Asaki estuvo cerca en el salón recreativo Twin Galaxies de Ottumwa, Iowa, alcanzando una vez los 793 millones antes de que el joystick se rompiera físicamente. En enero de 1984, Tim McVey jugó durante más de cuarenta horas con una sola moneda y terminó con 1.000.042.270 puntos: la primera puntuación de mil millones de puntos en la historia de los videojuegos. La ciudad de Ottumwa declaró el 28 de enero de 1984 «Día de Tim McVey», convirtiéndolo en el primer jugador de videojuegos con una fiesta cívica en su honor. Toda la saga quedó documentada más tarde en la película Man vs Snake.
1991: la Serpiente escapa al sistema operativo
Cuando Microsoft distribuyó MS-DOS 5.0 en 1991, incluía QBasic, y QBasic venía con un programa de ejemplo llamado NIBBLES.BAS. Para un número enorme de personas que más tarde se hicieron programadores, este fue el primer juego cuyo código fuente llegaron a leer. Es difícil exagerar cuánto importó eso: la Serpiente se convirtió no solo en un juego, sino en el «primer programa de verdad» canónico, aquello que construías para demostrarte a ti mismo que eras capaz de construir cosas.
Por la misma época, la Serpiente se extendió a las calculadoras gráficas. Las máquinas de Texas Instruments que dominaban las aulas tenían justo la pantalla y justo el procesador para ejecutarla, y ninguna de las distracciones que habrían hecho que algo más ambicioso mereciera la pena.
1997: el Nokia 6110 y la mayor audiencia que un juego había tenido jamás
En diciembre de 1997 Nokia lanzó el 6110, un teléfono de empresa con una pantalla monocroma de apenas 84 por 48 píxeles. El equipo de marketing de Nokia había pedido a un ingeniero de software llamado Taneli Armanto que construyera unos cuantos juegos pequeños para él. Produjo tres: Memory, Logic y Snake.
Armanto diseñó dentro de restricciones brutales: dos tonos, píxeles oscuros sobre un LCD de tinte verde, un teclado numérico en lugar de un joystick y un procesador sin nada de sobra. Esas restricciones son exactamente por qué el juego perduró. No había nada que quitar. Se estima que la Serpiente original estuvo en unos 350 millones de dispositivos; entre 1997 y 2007 Nokia distribuyó más de 400 millones de teléfonos con alguna versión de ella preinstalada. Durante una etapa a principios de la década de 2000, más gente en la Tierra jugaba a la Serpiente en un día dado que a cualquier otro videojuego.
Un detalle del diseño de Armanto merece ser mucho más conocido, porque tomamos prestada la filosofía que hay tras él. Introdujo deliberadamente un pequeñísimo retardo justo antes de un choque: un puñado de milisegundos en los que una pulsación tardía todavía podía salvarte. Es una pieza de diseño pequeña y humana que reconoce en voz baja que el jugador es un ser humano con un sistema nervioso, no una máquina de estados.
Snake II llegó al Nokia 3310 en 2000, en un teléfono que acabó vendiendo más de 126 millones de unidades. Añadió las tres funciones que la mayoría de las versiones modernas siguen copiando: un campo de juego envolvente donde sales por un borde y vuelves a entrar por el opuesto, obstáculos de laberinto dentro de la arena, y comida extra con tiempo limitado que vale puntos adicionales. Nuestro modo Portal, el modo Laberinto y las bayas doradas son descendientes directos de Snake II, y lo decimos con gusto.
De 2016 en adelante: slither.io y la era del navegador
En marzo de 2016 un desarrollador autodidacta llamado Steve Howse lanzó slither.io para navegadores, iOS y Android. Tomó el concepto de la Serpiente, lo hizo masivamente multijugador, hizo que las serpientes fueran suaves y curvas en lugar de encajadas en una cuadrícula, e invirtió la regla central: mueres cuando tu cabeza choca contra otro jugador, pero puedes cruzarte a ti mismo con libertad. Impulsado con fuerza por grandes canales de YouTube, encabezó la App Store, se convirtió en uno de los sitios web más visitados de la red aquel verano y superó los cien millones de descargas solo en Android.
slither.io demostró algo importante sobre el género. La Serpiente no es un juego concreto; es una mecánica —una línea que crece y que no debe intersecar nada— y esa mecánica puede sostener una enorme variedad de diseños. La versión clásica de cuadrícula no desapareció; simplemente se convirtió en la versión «canónica» a la que recurren todos los sitios de juegos de navegador, todos los huevos de Pascua de los buscadores y todos los tutoriales de aprender a programar.
La cronología de un vistazo
| Año | Título o evento | Plataforma | Por qué importó |
|---|---|---|---|
| 1976 | Blockade (Gremlin Industries, diseñado por Lane Hauck) | Recreativa | Creó la mecánica del rastro que te mata; solo dos jugadores |
| 1977 | Surround (también vendido como Chase) | Atari 2600 | Llevó el concepto al hogar como título de estreno |
| 1978 | Worm, de P. Trefonas | TRS-80 | Primera versión de ordenador personal ampliamente difundida |
| 1982 | Nibbler (Rock-Ola) | Recreativa | Un jugador, crecimiento por comida, 32 laberintos; la verdadera plantilla |
| 1984 | Tim McVey logra 1.000.042.270 en Nibbler | Recreativa | Primera puntuación de mil millones en la historia de los videojuegos |
| 1991 | NIBBLES.BAS se incluye con QBasic en MS-DOS 5.0 | PC | Se convirtió en el primer código fuente de un juego que leyó una generación |
| 1997 | Snake, de Taneli Armanto | Nokia 6110 | Unos 350 millones de dispositivos; inició el juego móvil |
| 2000 | Snake II | Nokia 3310 | Añadió bordes envolventes, laberintos y comida extra |
| 2016 | slither.io, de Steve Howse | Navegador, iOS, Android | Reinvención masivamente multijugador; fenómeno global |
| Hoy | Versiones nativas de navegador como esta | Cualquier dispositivo | Sin instalación, sin cuenta, juego instantáneo, accesibilidad completa |
Por dentro de nuestro juego de la Serpiente: qué construimos y por qué
Nuestra versión se construyó desde cero como un único archivo autónomo, sin bibliotecas externas, sin fuentes web y sin peticiones de red. Esa restricción fue deliberada. Un juego insertado dentro de un artículo tiene que cargar al instante, no debe ralentizar jamás la página en la que se aloja, y nunca debe romperse porque un servidor de terceros tuviera un mal día.
Visualmente fuimos en una dirección que la mayoría de los juegos de la Serpiente no toman. El aspecto por defecto del género es verde neón sobre negro, un cliché de recreativa fácil de reproducir y difícil de hacer que parezca meditado. Construimos un «vivario» en su lugar: un campo de juego de color arena cálido dentro de una carcasa de verde petróleo profundo, con una serpiente de jade que tiene un cuerpo que se estrecha, una cabeza de verdad, ojos que siguen la dirección del movimiento y una lengua que asoma de vez en cuando. La comida es una baya con tallo y brillo en lugar de un cuadrado.
La mayor decisión visual, sin embargo, no es un color. Es el movimiento. En la mayoría de las implementaciones de la Serpiente la serpiente se teletransporta de celda en celda, porque el renderizador dibuja exactamente el estado del juego y el estado del juego es una lista de coordenadas de cuadrícula. La nuestra interpola: entre un movimiento lógico y el siguiente, cada segmento se desliza suavemente desde donde estaba hasta donde va. La lógica del juego sigue siendo una cuadrícula estricta —eso importa para la justicia—, pero la presentación es continua. Es la diferencia entre un prototipo y un producto, y cuesta quizá treinta líneas de código.
Resumen de funciones
| Área | Detalle |
|---|---|
| Tablero | Cuadrícula fija de 21 × 21 (441 celdas) en todo tamaño de pantalla, para que las puntuaciones sigan siendo comparables |
| Modos | Muros, Portal, Laberinto (cinco disposiciones de laberinto rotativas) |
| Velocidades | Calma, Clásica, Ágil, Frenética; cada una con su propia curva de aceleración y su suelo |
| Puntuación | Bonus de nivel, multiplicador de combo de hasta cinco veces, bayas doradas que valen el triple |
| Récords | Mejor puntuación guardada por separado para cada combinación de modo y velocidad |
| Estadísticas | Partidas jugadas, bayas comidas, serpiente más larga, tiempo total jugado |
| Controles | Teclas de flecha, WASD, teclas AZERTY, panel en pantalla y gestos de deslizamiento |
| Pantalla | Temas claro y oscuro, pantalla completa real con diseño de dos columnas en pantallas anchas |
| Idiomas | Inglés, francés, español, chino, hindi y árabe con soporte de derecha a izquierda |
| Audio | Tonos sintetizados generados en el navegador, apagados por defecto, con respuesta háptica en el móvil |
| Accesibilidad | Operable con teclado, anuncios para lectores de pantalla, soporte de movimiento reducido |
Por qué la cuadrícula nunca cambia de tamaño
Esta es la decisión de diseño sobre la que más discutimos, así que merece una explicación. Muchos juegos de la Serpiente de navegador escalan la cuadrícula con la ventana: una pantalla más grande obtiene más celdas. Parece generoso. En realidad es injusto, porque significa que una puntuación de 500 en un teléfono y una de 500 en un ordenador miden juegos distintos. Un tablero más grande es más fácil: más espacio para maniobrar, más pista antes de que tu propia cola se convierta en un problema.
Fijamos la cuadrícula en 21 por 21 y escalamos en su lugar el tamaño de la celda. En un teléfono cada celda podría medir dieciséis píxeles; en pantalla completa en un monitor grande cada celda puede llegar a casi cincuenta. El tablero ocupa el espacio que haya disponible, pero el juego es idéntico en todas partes. Tu mejor marca personal significa lo mismo en cada dispositivo que tienes.
La elección de 21 en lugar de 20 también fue deliberada: un número impar de filas y columnas da una verdadera celda central, lo que hace que la posición de inicio sea simétrica. Como veremos más adelante, también tiene una consecuencia matemática realmente interesante.
La referencia completa de la puntuación
Todo en el sistema de puntuación usa aritmética de enteros, lo que significa que cada puntuación es exactamente reproducible y no hay sorpresas de coma flotante. Aquí está todo el sistema, escrito por extenso.
Las ecuaciones centrales
| Magnitud | Ecuación | Notas |
|---|---|---|
| Nivel | nivel = 1 + entero(bayas ÷ 5) | Bayas contadas desde que empezó la partida |
| Valor base de una baya | base = 10 + 2 × (nivel − 1) | Sube 2 puntos por nivel, para siempre |
| Multiplicador de combo | multiplicador = mín(5, 1 + entero(cadena ÷ 3)) | La cadena se reinicia si pasan más de 5 segundos entre bayas |
| Puntos otorgados | ganancia = base × multiplicador × oro | oro = 3 para una baya dorada, si no 1 |
| Intervalo de movimiento | paso = máx(suelo, inicio − (nivel − 1) × decremento) | Milisegundos entre movimientos lógicos |
| Velocidad de la serpiente | celdas por segundo = 1000 ÷ paso | Conversión directa desde el intervalo de movimiento |
| Tiempo de cruce del tablero | segundos = 21 × paso ÷ 1000 | Tiempo para recorrer todo el ancho del tablero |
| Distancia de reacción | celdas = tiempo de reacción ÷ paso | Cuánto avanza la serpiente mientras reaccionas |
| Longitud de la serpiente | longitud = 3 + bayas | La serpiente siempre empieza con tres celdas |
Las constantes de un vistazo
| Constante | Valor | Efecto |
|---|---|---|
| Tamaño de la cuadrícula | 21 × 21 = 441 celdas | El campo de juego completo |
| Longitud inicial | 3 celdas | Cabeza más dos segmentos de cuerpo |
| Puntos base | 10 | Valor de una baya en el nivel 1 sin combo |
| Bonus de nivel | +2 puntos por nivel | Se compone con el multiplicador |
| Bayas por nivel | 5 | Cada 5 bayas suben el nivel en 1 |
| Ventana de combo | 5.000 ms | Máximo intervalo entre bayas para mantener una cadena |
| Paso de combo | 3 bayas | Cada 3 bayas encadenadas suman 1 al multiplicador |
| Techo de combo | ×5 | El multiplicador nunca supera cinco |
| Pago de baya dorada | ×3 | Se aplica sobre el multiplicador de combo |
| Vida de la baya dorada | 7.000 ms | Luego se desvanece y desaparece |
| Frecuencia de la baya dorada | Cada 4.ª baya | Solo cuando no hay ya una en el tablero |
Progresión de niveles
| Nivel | Bayas comidas | Longitud de la serpiente | Valor base de la baya | Valor con combo ×5 | Baya dorada con ×5 |
|---|---|---|---|---|---|
| 1 | 0–4 | 3–7 | 10 | 50 | 150 |
| 2 | 5–9 | 8–12 | 12 | 60 | 180 |
| 3 | 10–14 | 13–17 | 14 | 70 | 210 |
| 4 | 15–19 | 18–22 | 16 | 80 | 240 |
| 5 | 20–24 | 23–27 | 18 | 90 | 270 |
| 6 | 25–29 | 28–32 | 20 | 100 | 300 |
| 7 | 30–34 | 33–37 | 22 | 110 | 330 |
| 8 | 35–39 | 38–42 | 24 | 120 | 360 |
| 9 | 40–44 | 43–47 | 26 | 130 | 390 |
| 10 | 45–49 | 48–52 | 28 | 140 | 420 |
| 15 | 70–74 | 73–77 | 38 | 190 | 570 |
| 20 | 95–99 | 98–102 | 48 | 240 | 720 |
| 30 | 145–149 | 148–152 | 68 | 340 | 1.020 |
El multiplicador de combo
El combo es la parte de la puntuación que la mayoría de los jugadores ignora, y vale más que todo lo demás junto. Cada baya comida dentro de los cinco segundos siguientes a la anterior extiende tu cadena. Cada tercera baya de la cadena sube el multiplicador en uno, hasta cinco.
| Bayas en la cadena actual | Multiplicador | Valor de la baya en el nivel 1 | Valor de la baya en el nivel 10 |
|---|---|---|---|
| 1.ª a 3.ª | ×1 | 10 | 28 |
| 4.ª a 6.ª | ×2 | 20 | 56 |
| 7.ª a 9.ª | ×3 | 30 | 84 |
| 10.ª a 12.ª | ×4 | 40 | 112 |
| 13.ª en adelante | ×5 | 50 | 140 |
Matriz completa de puntos por baya
| Nivel | ×1 | ×2 | ×3 | ×4 | ×5 |
|---|---|---|---|---|---|
| 1 | 10 | 20 | 30 | 40 | 50 |
| 2 | 12 | 24 | 36 | 48 | 60 |
| 3 | 14 | 28 | 42 | 56 | 70 |
| 4 | 16 | 32 | 48 | 64 | 80 |
| 5 | 18 | 36 | 54 | 72 | 90 |
| 6 | 20 | 40 | 60 | 80 | 100 |
| 7 | 22 | 44 | 66 | 88 | 110 |
| 8 | 24 | 48 | 72 | 96 | 120 |
| 9 | 26 | 52 | 78 | 104 | 130 |
| 10 | 28 | 56 | 84 | 112 | 140 |
Un ejemplo resuelto a partir de una partida real
Cuando probamos el juego terminado escribimos un jugador automático que lee la posición de la baya directamente del lienzo renderizado y se dirige hacia ella. En una partida grabada comió cinco bayas y terminó con una puntuación de exactamente 70, una longitud de 8 y el nivel 2. Ese número merece un repaso, porque muestra todo el sistema en una sola línea.
- Baya 1: nivel 1, posición 1 de la cadena, multiplicador ×1 → 10 puntos (total acumulado 10)
- Baya 2: nivel 1, posición 2 de la cadena, multiplicador ×1 → 10 puntos (total 20)
- Baya 3: nivel 1, posición 3 de la cadena, multiplicador ×1 → 10 puntos (total 30)
- Baya 4: nivel 1, posición 4 de la cadena, multiplicador ×2 → 20 puntos (total 50)
- Baya 5: nivel 1, posición 5 de la cadena, multiplicador ×2 → 20 puntos (total 70), y el nivel avanza entonces a 2
Fíjate en que la cuarta baya vale el doble que la primera aunque nada del tablero haya cambiado. Ese es todo el argumento estratégico para jugar de forma agresiva: la vacilación no solo desperdicia tiempo, sino que reinicia activamente tus ingresos.
Puntos de referencia y el máximo teórico
La tabla de abajo muestra cuánto vale un número dado de bayas si no construyes ningún combo: trátalos como el suelo, no como el objetivo. Un jugador que mantenga un multiplicador de cinco veces durante casi toda una partida acabará cerca de cinco veces estas cifras.
| Bayas comidas | Longitud de la serpiente | Nivel alcanzado | Puntuación sin combo | Puntuación con ×5 sostenido |
|---|---|---|---|---|
| 10 | 13 | 3 | 110 | 550 |
| 25 | 28 | 6 | 350 | 1.750 |
| 50 | 53 | 11 | 950 | 4.750 |
| 100 | 103 | 21 | 2.900 | 14.500 |
| 200 | 203 | 41 | 9.800 | 49.000 |
| 438 (partida perfecta) | 441 (tablero lleno) | 88 | 42.312 | 211.560 |
Esa última fila es el techo. El tablero contiene 441 celdas, la serpiente empieza con 3, así que una partida perfecta come 438 bayas y termina con la serpiente ocupando cada una de las celdas. En ese punto el nivel es 88 y cada baya vale 184 puntos antes del multiplicador. Nadie lo ha hecho. Si algún día lo consigues, la cifra de «Más larga» en tu panel de récords marcará 441 y no quedará ningún sitio adonde moverse.
Velocidad, tiempo y ventanas de reacción
Cada ajuste de dificultad se define por tres números: el intervalo entre movimientos en el nivel 1, cuántos milisegundos se encoge ese intervalo por nivel, y el suelo por debajo del cual nunca baja.
| Ajuste | Intervalo inicial | Reducción por nivel | Intervalo más rápido | Nivel en que se alcanza la velocidad máxima |
|---|---|---|---|---|
| Calma | 170 ms | 6 ms | 110 ms | 11 |
| Clásica | 130 ms | 6 ms | 80 ms | 10 |
| Ágil | 100 ms | 5 ms | 60 ms | 9 |
| Frenética | 78 ms | 4 ms | 45 ms | 10 |
Intervalo de movimiento por nivel
| Nivel | Calma | Clásica | Ágil | Frenética |
|---|---|---|---|---|
| 1 | 170 | 130 | 100 | 78 |
| 2 | 164 | 124 | 95 | 74 |
| 3 | 158 | 118 | 90 | 70 |
| 4 | 152 | 112 | 85 | 66 |
| 5 | 146 | 106 | 80 | 62 |
| 6 | 140 | 100 | 75 | 58 |
| 7 | 134 | 94 | 70 | 54 |
| 8 | 128 | 88 | 65 | 50 |
| 9 | 122 | 82 | 60 | 46 |
| 10 y superior | 116 y luego 110 | 80 | 60 | 45 |
Convertir los milisegundos en algo que puedas sentir
Un número como «80 milisegundos por movimiento» no significa nada hasta que lo conviertes en celdas por segundo y en tiempo de cruce del tablero. Esta tabla lo hace, y luego hace algo más útil: muestra cuánto avanza la serpiente durante una reacción humana típica. El tiempo de reacción visual simple en adultos suele estar en algún punto en torno a los 200 o 250 milisegundos. Hemos usado 250 milisegundos como la cifra conservadora.
| Ajuste y nivel | Intervalo | Celdas por segundo | Segundos para cruzar el tablero | Celdas recorridas mientras reaccionas |
|---|---|---|---|---|
| Calma, nivel 1 | 170 ms | 5,9 | 3,57 | 1,5 |
| Calma, velocidad máxima | 110 ms | 9,1 | 2,31 | 2,3 |
| Clásica, nivel 1 | 130 ms | 7,7 | 2,73 | 1,9 |
| Clásica, velocidad máxima | 80 ms | 12,5 | 1,68 | 3,1 |
| Ágil, nivel 1 | 100 ms | 10,0 | 2,10 | 2,5 |
| Ágil, velocidad máxima | 60 ms | 16,7 | 1,26 | 4,2 |
| Frenética, nivel 1 | 78 ms | 12,8 | 1,64 | 3,2 |
| Frenética, velocidad máxima | 45 ms | 22,2 | 0,95 | 5,6 |
Lee con atención la última columna, porque contiene la idea más importante de todo este artículo. A la velocidad máxima de Frenética, para cuando has visto un problema y has movido el dedo, la serpiente ya ha recorrido más de cinco celdas: una cuarta parte del ancho del tablero. No puedes reaccionar para salir de la Serpiente rápida. Solo puedes planificar para salir de ella. Cada buen jugador está jugando de hecho dos o tres segundos en el futuro, y el presente visible solo está ahí para confirmar que el plan sigue siendo válido.
La ventana de la baya dorada
Una baya dorada vive exactamente siete segundos. Que puedas alcanzarla depende por entero de tu intervalo de movimiento actual. El peor caso en un tablero de 21 × 21 es un viaje de esquina a esquina, que es una distancia de Manhattan de 40 celdas.
| Ajuste y nivel | Intervalo | Movimientos disponibles en 7 segundos | El peor caso son 40 celdas: ¿alcanzable? |
|---|---|---|---|
| Calma, nivel 1 | 170 ms | 41 | Por los pelos, con un camino perfectamente despejado |
| Calma, velocidad máxima | 110 ms | 63 | Con comodidad |
| Clásica, nivel 1 | 130 ms | 53 | Sí, con margen para un rodeo |
| Clásica, velocidad máxima | 80 ms | 87 | Con facilidad |
| Ágil, nivel 1 | 100 ms | 70 | Con facilidad |
| Frenética, velocidad máxima | 45 ms | 155 | Casi siempre |
Esto produce una conclusión realmente contraintuitiva: las bayas doradas son más difíciles de recoger en el ajuste más lento. Calma te da más tiempo de pensar por movimiento, pero menos movimientos dentro de un temporizador fijo de siete segundos. Si persigues puntos extra en lugar de supervivencia, Clásica o Ágil son mejores cotos de caza que Calma.
La ventana de combo en movimientos, no en segundos
La misma lógica se aplica a la ventana de combo de cinco segundos, y el efecto es aún más fuerte. La distancia de Manhattan media entre dos celdas al azar en un tablero de 21 × 21 es de casi exactamente 14 celdas, así que ese es el viaje típico entre una baya y la siguiente.
| Ajuste y nivel | Intervalo | Movimientos dentro de la ventana de 5 segundos | Margen sobre el viaje medio de 14 celdas |
|---|---|---|---|
| Calma, nivel 1 | 170 ms | 29 | Alrededor de 2,1 veces |
| Clásica, nivel 1 | 130 ms | 38 | Alrededor de 2,7 veces |
| Ágil, nivel 1 | 100 ms | 50 | Alrededor de 3,6 veces |
| Frenética, nivel 1 | 78 ms | 64 | Alrededor de 4,6 veces |
| Frenética, velocidad máxima | 45 ms | 111 | Alrededor de 7,9 veces |
En otras palabras, los ajustes rápidos no son solo más arriesgados: son también donde viven las puntuaciones más altas, porque hacen realistas los multiplicadores de cinco veces sostenidos. Calma es el ajuste con el que aprender. No es el ajuste con el que batir récords.
Los tres modos
Muros
El conjunto de reglas original de 1997. El borde es sólido; tocarlo termina la partida. Esta es la versión más pura del juego y aquella con la que debería medirse tu puntuación si quieres compararte con los clásicos. El modo Muros castiga la deriva: sin escapatoria en los bordes, el perímetro se convierte en el terreno más peligroso del tablero en lugar del más seguro.
Portal
Heredado de Snake II en el Nokia 3310. Sal por cualquier borde y reentras por el opuesto. Esto parece hacer el juego más fácil, y durante los primeros treinta segundos lo hace. Luego lo vuelve considerablemente más difícil, por una razón que la mayoría de los jugadores nunca articula: en el modo Muros tu propio cuerpo y el borde forman una única barrera conectada, así que el tablero tiene un dentro y un fuera simples. En el modo Portal el tablero es topológicamente un toro, tu cuerpo puede envolverlo, y la región en la que te has atrapado a ti mismo es mucho menos obvia. Las partidas largas de Portal exigen verdadera imaginación espacial.
El modo Portal es también donde las puntuaciones más altas son teóricamente posibles, porque el borde ya no es un peligro y cada baya es alcanzable por dos rutas en lugar de una; a veces el camino que envuelve el tablero es más corto que el directo, lo que importa enormemente para mantener viva una cadena.
Laberinto
Cinco disposiciones de piedra rotan a medida que subes de nivel, y la distribución cambia bajo tus pies cada cinco bayas. Las disposiciones son simétricas y deterministas —el mismo nivel produce siempre los mismos muros—, así que pueden aprenderse en lugar de meramente sobrevivirse. Dos reglas te protegen: nunca se coloca una piedra en el borde del tablero, y la fila central donde aparece la serpiente se mantiene siempre despejada.
El modo Laberinto cambia la habilidad fundamental que se pone a prueba. Muros y Portal tratan de gestionar el espacio que consume tu propio cuerpo. Laberinto trata de encontrar rutas bajo presión de tiempo, lo cual está mucho más cerca de lo que hacía Nibbler en 1982 que de lo que hacía Nokia en 1997.
| Modo | Bordes | Obstáculos | Mejor para | Riesgo principal |
|---|---|---|---|---|
| Muros | Mortales | Ninguno | Aprender y comparar puntuaciones con justicia | Acorralarte contra el borde |
| Portal | Envolventes | Ninguno | Partidas largas y puntuaciones altas | Perder la pista de en qué región estás |
| Laberinto | Mortales | Cinco disposiciones rotativas | Planificación de rutas y variedad | Que el tablero cambie de forma a mitad de partida |
Estrategia: cómo mejorar de verdad en la Serpiente
La mayoría de los consejos sobre la Serpiente en internet se reducen a «ten cuidado» y «no te estrelles». Aquí va algo más útil. Están ordenados a grandes rasgos según el punto de tu desarrollo en el que empiezan a importar.
1. Deja de perseguir la baya
Los principiantes dirigen la serpiente directamente hacia la comida. Esto funciona hasta que la serpiente mide unas diez celdas, y entonces empieza a matarte, porque una ruta directa optimiza para la baya actual e ignora dónde estará tu cola después. Los jugadores intermedios se hacen una pregunta distinta: no «¿cómo llego allí?», sino «¿qué aspecto tendrá el tablero una vez que lo haya hecho?».
La versión práctica de esta regla es sencilla. Antes de comprometerte con una ruta, comprueba que hay una manera de salir de la ubicación de la baya. Comerte una baya en un callejón sin salida es como terminan las buenas partidas.
2. Mantén tu cuerpo pegado a los bordes
El espacio en la Serpiente no es intercambiable. Cien celdas libres dispersas en bolsas no valen nada; cien celdas libres en una única región abierta son una partida entera. La manera de mantener tu espacio libre de una pieza es mantener tu cuerpo a lo largo del perímetro y dejar que el centro siga abierto, en lugar de al revés. Una serpiente enroscada alrededor del exterior del tablero deja un único agujero grande. Una serpiente que deambula por el centro trocea el tablero en fragmentos.
3. Aprende el zigzag
El patrón clásico de llenado de espacio —a veces llamado bustrofedón, del griego «como ara el buey»— consiste en recorrer toda la longitud de una fila, bajar una, volver, y repetir. Parece lento y lo es, pero te garantiza barrer cada celda de una región sin cortarte nunca el paso. Cuando una baya aparece lejos y tu serpiente es larga, caminar en zigzag hacia ella es casi siempre más seguro que tomar la línea directa.
4. Sigue tu propia cola
Si alguna vez no sabes qué hacer, persigue tu propia cola. Como la cola se aleja una celda cada vez que la cabeza se mueve, una serpiente que sigue su propia cola puede sobrevivir indefinidamente. Esta es la maniobra de emergencia: cuando el tablero pinta mal y no ves un plan, ponte detrás de tu cola y gánate tiempo mientras aparece una nueva baya en un sitio mejor.
5. Entiende la regla de la cola que se libera
Aquí va una regla que la mayoría de las implementaciones aciertan mal y que, por tanto, la mayoría de los jugadores nunca aprenden a explotar. Cuando la serpiente se mueve y no come, la cola deja su celda en el mismo instante en que la cabeza entra en una nueva. Eso significa que la celda ocupada ahora por el extremo de tu cola es segura para entrar: estará vacía para cuando llegues.
Nuestra versión implementa esto correctamente. La consecuencia es que puedes ejecutar giros genuinamente cerrados que parecen imposibles, siguiendo tu propio cuerpo una celda por detrás de él. Pero fíjate en la excepción: si comes una baya en ese mismo movimiento, la serpiente crece y la cola no se libera. Entrar en la celda de tu cola mientras comes es mortal. Los jugadores experimentados lo interiorizan como «los giros cerrados son seguros salvo que haya comida en medio».
6. Juega el combo, no la baya
Dadas las tablas de arriba, la aritmética es cruda. Un jugador calmado y cuidadoso que come una baya cada ocho segundos puntúa a ×1 para siempre. Un jugador agresivo que come una cada tres segundos está a ×5 en trece bayas y gana cinco veces más por baya de ahí en adelante. El jugador agresivo morirá antes. También terminará con una puntuación varias veces más alta.
La regla práctica: en cuanto aparezca una baya, empieza a moverte hacia ella. No termines primero tu bucle actual. No esperes a ver adónde va: no va a ninguna parte.
7. Rodea las bayas doradas, no te desvíes hacia ellas
Una baya dorada vale tres ordinarias, lo cual es excelente, pero aparece en una celda al azar y caduca en siete segundos. Si queda más o menos de camino, tómala. Si recogerla rompiera tu combo sobre la baya ordinaria, sáltala. Tres veces una baya vale menos que el multiplicador de cinco veces que perderías.
8. Gestiona el momento de subida de nivel
Cada quinta baya, el juego acelera, y en el modo Laberinto los muros también cambian. Ese instante es el momento más peligroso de cualquier partida. Si te acercas a tu quinta, décima o decimoquinta baya, asegúrate de llegar con espacio abierto por delante en lugar de en un rincón cerrado.
Errores comunes y sus soluciones
| Error | Por qué te mata | Solución |
|---|---|---|
| Tomar la línea directa hacia cada baya | Deja tu cuerpo disperso por el centro del tablero | Traza rutas por el perímetro y entra en el centro solo a recoger |
| Girar dos veces en un mismo intervalo de movimiento | El segundo giro es lo que de verdad ocurre; el primero se descarta | Una pulsación decisiva por movimiento, no una ráfaga de toques |
| Entrar en pánico cuando la serpiente se hace larga | El pánico produce decisiones de corto alcance, que fragmentan el tablero | Recurre a seguir tu propia cola hasta que aparezca un plan |
| Comer una baya en un rincón | Llegas con una única salida, y tu nuevo segmento la bloquea | Acércate a los rincones a lo largo del muro, no perpendicular a él |
| Jugar en Calma para puntuar alto | Menos movimientos por segundo significa menos movimientos dentro de la ventana de combo | Aprende en Calma, puntúa en Clásica o Ágil |
| Ignorar los momentos de subida de nivel | La velocidad cambia mientras estás a mitad de maniobra | Cuenta tus bayas; llega a cada quinta en espacio abierto |
Las matemáticas de la Serpiente
La Serpiente parece un juego de reflejos y se comporta como un problema de teoría de grafos. Esta sección es opcional, pero contiene un hecho sobre nuestro tablero concreto que no hemos visto discutido en ninguna parte, y cambia cómo tendría que jugarse una partida perfecta.
La Serpiente como grafo de cuadrícula
Modela el tablero como un grafo: cada celda es un vértice, y dos vértices están conectados si sus celdas son ortogonalmente adyacentes. La serpiente es un camino a través de este grafo que se mueve un paso por turno, no puede invertir, y crece un vértice cada vez que aterriza sobre comida. Casi cualquier pregunta interesante sobre la Serpiente se convierte en una pregunta sobre caminos y ciclos en grafos de cuadrícula.
Por qué «solo sigue un ciclo» es la estrategia perfecta estándar
La forma mejor conocida de garantizar que una serpiente nunca muera es encontrar un ciclo hamiltoniano —un bucle cerrado que visita cada celda exactamente una vez— y simplemente seguirlo para siempre. Como el bucle cubre cada celda, toda la comida acaba cayendo delante de ti; como es un único bucle cerrado y la serpiente es más corta que el bucle, nunca puedes chocar contra ti mismo. Es perfecto, y es insoportablemente lento, pero siempre gana.
Por qué nuestro tablero de 21 × 21 no tiene tal ciclo
Aquí viene la parte interesante. Colorea el tablero como un tablero de ajedrez. Cada movimiento lleva a la serpiente de una celda clara a una oscura o viceversa, así que cualquier bucle cerrado debe alternar colores, lo que significa que un ciclo hamiltoniano solo puede existir si el número de celdas claras es igual al número de celdas oscuras.
En un tablero de 21 × 21 hay 441 celdas: 221 de un color y 220 del otro. No son iguales, y no pueden serlo, porque 441 es impar. Por lo tanto, en nuestro tablero no existe ningún ciclo hamiltoniano en absoluto. La clásica estrategia del «bucle seguro» es matemáticamente imposible aquí.
Lo que sí existe es un camino hamiltoniano: una ruta abierta a través de las 441 celdas. Así que una partida perfecta sigue siendo posible, pero no puede ser un bucle irreflexivo. Cualquier jugador o algoritmo que intente llenar el tablero tendría que, o bien trabajar dentro de una subregión de 20 × 21 de 420 celdas, que es par y sí admite un ciclo, y tratar la fila restante por separado, o bien planificar un camino abierto y recolocarse al final. Esto no es un accidente de nuestro diseño; es una propiedad de todo tablero de la Serpiente de dimensiones impar por impar, incluidos muchísimos de los que encontrarás en internet.
| Tablero | Celdas totales | Reparto de colores | ¿Ciclo hamiltoniano posible? |
|---|---|---|---|
| 20 × 20 | 400 | 200 / 200 | Sí |
| 21 × 21 (este juego) | 441 | 221 / 220 | No; solo un camino abierto |
| Subtablero de 20 × 21 | 420 | 210 / 210 | Sí |
| Cualquier tablero impar × impar | Impar | Desigual por uno | No |
¿Cómo de difícil es la Serpiente, formalmente?
Lo bastante difícil como para que los informáticos hayan publicado sobre ella. En 2016, Marzio De Biasi y Tim Ophelders presentaron un artículo titulado «The Complexity of Snake» en la International Conference on Fun with Algorithms, ampliado más tarde en Theoretical Computer Science. Demostraron que decidir si una serpiente puede recoger toda la comida en un grafo de cuadrícula sólido es NP-difícil, y que en grafos de cuadrícula generales el problema es PSPACE-completo, igual que la pregunta más simple de si una serpiente puede pasar de una configuración a otra, incluso sin nada de comida en el tablero.
Dicho llanamente: no hay ningún algoritmo eficiente conocido que juegue a la Serpiente de forma óptima, y hay buenas razones para creer que ninguno existe. Cuando sientas que una posición no tiene solución, puede que tengas objetivamente razón. El problema también ha atraído a investigadores en robótica, porque una serpiente que no debe colisionar con su propio cuerpo es un modelo razonable para la planificación de movimiento con robots articulados con forma de serpiente.
Algunos números sobre el tablero
| Magnitud | Valor |
|---|---|
| Celdas totales | 441 |
| Celdas del perímetro | 80 |
| Celdas interiores | 361 (una región de 19 × 19) |
| Celdas libres al inicio de una partida | 437 (441 menos 3 segmentos de serpiente y 1 baya) |
| Distancia de Manhattan máxima entre dos celdas | 40 |
| Distancia de Manhattan media entre dos celdas al azar | Aproximadamente 14,0 |
| Longitud máxima de la serpiente | 441 |
| Bayas en una partida perfecta | 438 |
| Nivel final en una partida perfecta | 88 |
Bajo el capó: construir una Serpiente que no le miente al jugador
Esta sección es para desarrolladores, y para cualquiera que sienta curiosidad por qué algunos juegos de la Serpiente de navegador se sienten bien y otros se sienten baratos. Cada punto de abajo es un fallo que, o bien corregimos, o bien diseñamos deliberadamente para sortear.
Paso de tiempo fijo en lugar de setInterval
La forma ingenua de ejecutar un juego de la Serpiente es llamar a una función de movimiento con un temporizador. Parece funcionar. Está mal de tres maneras: los temporizadores del navegador derivan, se estrangulan en las pestañas de fondo, y el intervalo nunca coincide con el refresco de la pantalla, así que la animación se entrecorta.
El enfoque correcto es un acumulador de paso de tiempo fijo. En cada fotograma de animación, mide cuánto tiempo real ha transcurrido, súmalo a un acumulador, y ejecuta tantos movimientos lógicos como ese tiempo contenga. La lógica del juego avanza en incrementos exactos e idénticos con independencia de la tasa de fotogramas; solo el dibujo sigue a la pantalla. Importan dos salvaguardas adicionales: acota el tiempo transcurrido para que una pestaña en segundo plano no acelere la serpiente hasta estrellarla contra un muro al volver, y limita el número de movimientos de recuperación por fotograma para que un dispositivo lento no entre en espiral.
| Enfoque | Comportamiento en un monitor de 144 Hz | Comportamiento en una pestaña de fondo | Justicia |
|---|---|---|---|
| setInterval | Se entrecorta; el tiempo de movimiento deriva del tiempo de pantalla | Estrangulado de forma impredecible | La velocidad varía según el dispositivo |
| Un movimiento por fotograma de animación | Corre a 144 movimientos por segundo | Se detiene por completo | Completamente injusto |
| Acumulador de paso de tiempo fijo | Suave, con tasa de movimiento exactamente correcta | Acotado, y luego se reanuda limpiamente | Idéntico en todas partes |
La cola de entradas, y el fallo que mata a todo primer borrador
Casi todo juego de la Serpiente casero contiene el mismo fallo fatal. El jugador se mueve a la derecha, pulsa rápido arriba y luego izquierda, y ambas entradas se aplican antes del siguiente movimiento, de modo que la serpiente se invierte contra su propio cuello y muere sin razón visible. Es la fuente más común de quejas de «este juego está roto», y no es culpa del jugador.
La solución es poner las entradas en cola en lugar de aplicarlas de inmediato. Cada movimiento lógico consume como mucho una dirección de la cola, y rechaza cualquier dirección que sea la inversa exacta de la actual. El jugador puede almacenar un giro un poco antes de tiempo —lo cual se siente receptivo—, pero nunca puede plegar la serpiente por la mitad por accidente.
La colisión, hecha con exactitud
Como se describió en la sección de estrategia, la cola libera su celda en cualquier movimiento que no haga crecer a la serpiente. Una implementación correcta comprueba el objetivo de la cabeza contra todos los segmentos del cuerpo excepto el último, salvo que el movimiento sea de comer, en cuyo caso cuenta cada segmento. Equivocarse en cualquiera de las dos direcciones produce un juego que se siente o bien injustamente duro o bien sospechosamente indulgente. Verificamos este comportamiento con pruebas automatizadas antes de publicar.
Renderizado interpolado sobre una cuadrícula discreta
La lógica corre sobre coordenadas enteras de celda; el dibujo corre sobre posiciones fraccionarias. Entre movimientos, cada segmento se dibuja en una mezcla de donde estaba y adonde va, ponderada por cuán avanzados estamos en el intervalo actual. El resultado es una serpiente que se desliza en lugar de saltar, sin ningún compromiso con la justicia de la cuadrícula subyacente.
Una sutileza: en el modo Portal un segmento puede envolver de un borde del tablero al otro, e interpolar esa transición dibujaría una raya recta a través de la pantalla. La solución es detectar cualquier salto más largo que una celda y ajustar en lugar de mezclar, y romper el camino del cuerpo dibujado en ese punto.
Colocación de comida sin muestreo por rechazo
El enfoque común es elegir una celda al azar, comprobar si está ocupada, y volver a intentarlo si lo está. Esto funciona bien al principio y se vuelve patológico al final: cuando la serpiente llena casi todo el tablero, el bucle puede correr cientos de veces, y si el tablero está completamente lleno nunca termina. Nosotros construimos la lista de celdas realmente libres y elegimos de ella de forma uniforme. Es a la vez más rápido en el peor caso y demostrablemente terminante.
No romper la página en la que vive
Un juego insertado tiene obligaciones con su anfitrión. El nuestro nunca registra un gestor de teclado global que robe las teclas de flecha a la página: la entrada solo se captura mientras estás interactuando de verdad con el juego, y se libera en cuanto haces clic en otro lugar, pausándose a sí mismo al hacerlo. Se pausa cuando la pestaña se oculta y cuando se sale de la vista al desplazarse. Todo su estilo está aislado para que no pueda filtrarse al artículo que lo rodea, y nada del sitio circundante puede filtrarse hacia dentro.
Dos fallos reales que encontramos probando
Seremos honestos sobre estos, porque los artículos como este suelen fingir que el desarrollo transcurre sin fricciones. Durante las pruebas finales, un navegador automatizado encontró dos problemas que el juego manual había pasado por alto.
El primero fue una colisión de nombres de variable: una referencia recién añadida al elemento del tablero eclipsaba la función del bucle de renderizado con el mismo nombre, lo que desactivaba en silencio todo el juego. Lanzaba un único error de consola y nada se movía. La lección es poco glamorosa y universal: nombra las cosas con cuidado, y ejecuta lo que has publicado.
El segundo fue más sutil y más instructivo. Para dimensionar el tablero estábamos midiendo el ancho del mismísimo elemento cuyo ancho estábamos fijando, lo que crea un bucle de realimentación: el tablero puede encogerse pero nunca puede volver a crecer. La solución fue estructural: un elemento mide el espacio disponible y nunca se le fija el tamaño; un elemento separado dentro de él es el tablero y se dimensiona en píxeles. Si te llevas una única idea arquitectónica de este artículo, que sea esa: nunca midas una caja cuyas dimensiones controlas.
Idiomas, accesibilidad y jugar en cualquier pantalla
El juego se ofrece en seis idiomas, con el inglés como fuente. Detecta el apropiado automáticamente comprobando, por orden: un parámetro de idioma explícito en la dirección de la página, un atributo en el propio elemento del juego, el idioma declarado por la página, la localización en los metadatos sociales de la página, la declaración de idioma del contenido, y por último la propia preferencia del navegador. Si ninguno de estos produce un idioma soportado, recurre al inglés. Siempre puedes anular el resultado con el selector de la esquina.
| Idioma | Código | Título en ese idioma | Dirección del texto |
|---|---|---|---|
| Inglés | en | Snake | De izquierda a derecha |
| Francés | fr | Snake | De izquierda a derecha |
| Español | es | Snake | De izquierda a derecha |
| Chino | zh | 贪吃蛇 | De izquierda a derecha |
| Hindi | hi | स्नेक | De izquierda a derecha |
| Árabe | ar | لعبة الثعبان | De derecha a izquierda |
El árabe cambia toda la interfaz a derecha-izquierda, con una excepción deliberada: el panel de dirección mantiene su disposición física, porque «izquierda» en un mando de juego significa izquierda en la pantalla sin importar el idioma en que leas.
En cuanto a accesibilidad, el juego es totalmente operable desde el teclado, cada control es un botón real con una etiqueta adecuada, y los cambios de puntuación y el fin de una partida se anuncian a los lectores de pantalla mediante una región activa. Si tu sistema está configurado para reducir el movimiento, la animación decorativa, la sacudida del choque y los efectos de pulso están todos desactivados, mientras que el juego en sí queda intacto.
En cuanto a la capacidad de respuesta, el diseño se adapta al ancho del juego en lugar del ancho del navegador, lo que importa, porque un juego insertado dentro de una columna de artículo estrecha debería comportarse como un juego estrecho incluso en un monitor ancho. En pantalla completa en una pantalla apaisada cambia a una disposición de dos columnas con el tablero a un lado y los controles al otro, y el tablero puede crecer hasta más de mil píxeles de ancho.
Referencia completa de controles
| Entrada | Acción | Notas |
|---|---|---|
| Teclas de flecha | Dirigir | La disposición estándar |
| W, A, S, D | Dirigir | Para teclados QWERTY |
| Z, Q, S, D | Dirigir | Para teclados AZERTY |
| Espacio | Pausar o reanudar | También inicia una partida desde la pantalla de título |
| R | Reiniciar | Empieza una partida nueva de inmediato |
| F | Pantalla completa | Activa y desactiva |
| M | Silenciar | El sonido está apagado por defecto |
| Intro | Confirmar | Activa el botón de la tarjeta actual |
| Escape | Salir de pantalla completa | Comportamiento estándar del navegador |
| Deslizar sobre el tablero | Dirigir | Los deslizamientos encadenados se reconocen sin levantar el dedo |
| Tocar el tablero | Iniciar o reanudar | Como meter una moneda en una máquina recreativa |
| Panel en pantalla | Dirigir | Aparece automáticamente en dispositivos táctiles |
Preguntas frecuentes
¿Quién inventó el juego de la Serpiente?
Ninguna persona sola, y por eso la pregunta sigue recibiendo respuestas distintas. La mecánica la creó Lane Hauck en Gremlin Industries para el juego recreativo de 1976 Blockade. El formato de un jugador que come comida que ahora llamamos Serpiente lo estableció Nibbler de Rock-Ola en 1982. La versión que la hizo famosa en todo el mundo la escribió Taneli Armanto en Nokia para el 6110 en 1997. Las tres respuestas son defendibles; son respuestas a preguntas distintas.
¿Cuál es la puntuación más alta posible en este juego?
211.560, lograda comiendo las 438 bayas disponibles mientras se mantiene un multiplicador de cinco veces durante toda la partida e ignorando las bayas doradas. En la práctica, las bayas doradas empujarían una partida teóricamente perfecta aún más arriba. Una partida humana muy fuerte en Clásica suele situarse en algún punto entre 2.000 y 10.000.
¿El juego se acelera para siempre?
No. Cada dificultad tiene un suelo. Clásica toca fondo en 80 milisegundos por movimiento en el nivel 10 y nunca va más rápido; Frenética toca fondo en 45 milisegundos. Todo lo que viene después de ese punto se vuelve más difícil puramente porque tu serpiente es más larga, que es el tipo honesto de dificultad.
¿Una serpiente más larga vale más puntos?
De forma indirecta. La longitud en sí no puntúa, pero la longitud sigue a las bayas comidas, las bayas comidas determinan tu nivel, y el nivel eleva el valor base de cada baya futura en dos puntos. El multiplicador, sin embargo, no tiene nada que ver con la longitud: trata puramente de cuán rápido comes.
¿Por qué mi puntuación es más baja en Calma que en Clásica?
Porque la ventana de combo se mide en segundos, no en movimientos. Una serpiente más lenta cubre menos terreno en cinco segundos, así que las cadenas se rompen más a menudo. Calma es más fácil de sobrevivir y más difícil de puntuar. Esto sorprende a casi todo el mundo.
¿Mis puntuaciones y estadísticas se envían a alguna parte?
No. Todo —mejores puntuaciones por modo, partidas jugadas, bayas comidas, serpiente más larga, tiempo total— se almacena localmente en tu propio navegador. No hay cuenta, ni servidor, ni tabla de clasificación ni rastreo. Borrar los datos de tu navegador borra tus récords, y el botón de reinicio del panel de récords hace lo mismo deliberadamente.
¿Puedo jugar con el teclado en un teléfono, o con toque en un portátil?
Sí a ambas cosas. El panel de dirección aparece automáticamente en dispositivos táctiles, pero el teclado permanece activo si hay uno conectado, y los portátiles con pantalla táctil pueden deslizar sobre el tablero.
¿Por qué se pausa el juego cuando hago clic en otra parte de la página?
Deliberadamente. Un juego insertado que sigue consumiendo tus teclas de flecha después de que hayas pasado a leer el artículo es una molestia. Cuando interactúas con algo fuera del juego, este libera el teclado y se pausa a sí mismo para que no vuelvas a una serpiente muerta.
¿Cuál es la forma más rápida de mejorar?
Juega veinte partidas en Clásica en el modo Muros y, en cada una, oblígate a trazar rutas por el perímetro en lugar de por el centro. Se sentirá más lento y tus primeras puntuaciones bajarán. Para la décima partida serán más altas de lo que eran antes, porque habrás dejado de fragmentar el tablero.
Glosario
| Término | Significado |
|---|---|
| Tic | Un movimiento lógico de la serpiente, una celda hacia delante |
| Intervalo de movimiento | El tiempo en milisegundos entre dos tics |
| Paso de tiempo fijo | Ejecutar la lógica del juego en incrementos de tiempo exactos e idénticos con independencia de la tasa de fotogramas |
| Interpolación | Dibujar un segmento a medio camino entre su celda anterior y la actual para un movimiento suave |
| Cola de entradas | Un búfer corto de cambios de dirección pendientes, consumido uno por tic |
| Liberación de la cola | La regla de que el último segmento deja su celda en cualquier movimiento que no sea de comer |
| Cadena de combo | Bayas consecutivas comidas dentro de la ventana de cinco segundos |
| Modo Portal o envolvente | Un campo de juego donde salir por un borde te devuelve por el opuesto |
| Grafo de cuadrícula | Un grafo cuyos vértices son celdas de cuadrícula y cuyas aristas unen celdas adyacentes |
| Ciclo hamiltoniano | Una ruta cerrada que visita cada celda exactamente una vez |
| Camino hamiltoniano | Una ruta abierta que visita cada celda exactamente una vez |
| Bustrofedón | Un patrón de barrido de ida y vuelta que llena una región sin auto-atraparse |
| Distancia de Manhattan | El número de pasos horizontales más verticales entre dos celdas |
| NP-difícil | Al menos tan difícil como los problemas más difíciles verificables en tiempo polinómico |
| PSPACE-completo | Entre los problemas más difíciles solubles con una cantidad polinómica de memoria |
Por qué seguimos construyendo cosas como esta
Hay una versión de este artículo que termina con una frase sobre la nostalgia, y no estaría equivocada. La Serpiente cumple cincuenta años esta década. Un número enorme de personas tiene un recuerdo concreto asociado a ella: un teléfono concreto, un aula concreta, una pantalla concreta de tinte verde.
Pero la nostalgia no es la razón por la que el juego sigue mereciendo ser bien construido. La Serpiente sobrevive porque es uno de los poquísimos juegos donde las reglas son completamente visibles y la profundidad está completamente oculta. No se te oculta nada. No hay desbloqueo, ni metaprogresión, ni estadística que no se te haya mostrado. Todo lo que necesitas para alcanzar una partida perfecta está en la pantalla desde el primer segundo, y aun así no puedes hacerlo, porque la dificultad nunca estuvo en la información, estuvo en la planificación.
Ese es un tipo de diseño de juegos raro y honesto, y merece el esfuerzo de un paso de tiempo fijo, una regla de colisión correcta, una cola de entradas que respeta al jugador y una serpiente que se desliza en lugar de saltar. Todo lo de este artículo —cada tabla, cada fórmula, cada milisegundo— existe para que, cuando pierdas, sepas que fue tu decisión la que perdió.
Ahora ve y supera los 2.000 en Clásica. Traza rutas por los bordes. No pares por las bayas doradas.
