Ball Sort entra en PuzzleHub como un puzzle mucho más visual que Sudoku, Kakuro o Slitherlink, pero comparte con ellos una exigencia que se ha vuelto central en el proyecto: el botón «Nueva partida» tiene que producir una partida en la que podamos confiar.

Eso parece obvio hasta que se genera un estado aleatorio de tubos y colores. Una configuración puede tener el aspecto de un nivel perfectamente normal y estar bloqueada o no haber sido alcanzable nunca desde un estado ordenado. Por eso decidimos no empezar desde el caos.

La idea del generador
Estado resueltoCada color ocupa su propio tubo.
Mezcla inversaDesordenamos con movimientos cuyo camino contrario será legal.
Nivel jugableEl resultado conserva por construcción una ruta de vuelta.

Cómo se juega

Cada tubo contiene una pila vertical de bolas. Solo se puede mover la bola que está arriba. El destino debe tener espacio y estar vacío o mostrar arriba una bola del mismo color. El nivel termina cuando todos los tubos no vacíos están completos y cada uno contiene un único color.

La regla introduce una economía de espacio muy concreta. Un tubo vacío no es desperdicio: es memoria de trabajo. Permite sacar temporalmente un color para liberar otro, rehacer una pila y recuperar movimientos que de otro modo quedarían bloqueados.

En Ball Sort no solo ordenas colores. Administras espacio para poder seguir ordenándolos.

Por qué no barajamos las bolas sin más

Una mezcla aleatoria ignora la topología real del juego. Puede fabricar estados que parecen plausibles pero no tienen relación con las transiciones permitidas. Para evitarlo, el generador parte de la solución: un tubo completo por color y dos tubos vacíos.

Durante la mezcla inversa solo sacamos una bola de una pila cuando debajo no hay otra bola o la siguiente es del mismo color. Después la enviamos a cualquier tubo que tenga espacio. Esa condición parece extraña si la lees como una jugada normal, pero está elegida pensando en la vuelta: al invertir el paso, la bola podrá regresar a un tubo vacío o colocarse sobre una bola de su mismo color, exactamente como exigen las reglas de la partida.

Generar desde una solución cambia la preguntaEn vez de crear caos y preguntar después si se puede arreglar, construimos caos mediante operaciones cuyo recorrido inverso conocemos.

Una garantía constructiva en lugar de un solver

Otros juegos de PuzzleHub necesitan contar soluciones con backtracking, matching o estructuras de grafos. Ball Sort permite una estrategia distinta. No tenemos que descubrir después una solución para cada tablero porque conservamos una secuencia de retorno desde el momento de generarlo.

La garantía es de resolubilidad, no de unicidad ni de dificultad humana. Puede haber muchas formas de resolver el mismo estado y no intentamos demostrar cuál es la más corta. La propiedad que sí queremos asegurar antes de jugar es más básica y muy valiosa: el generador no debe entregar una configuración sin salida por haber mezclado colores arbitrariamente.

Reversible no significa automáticamente interesante

Tener una solución conocida es el suelo, no el techo. Una mezcla de tres movimientos también sería reversible y probablemente se resolvería a simple vista. Por eso la dificultad modifica la profundidad de la mezcla, mientras que el tamaño modifica el número de colores.

La capacidad no cambia: todos los tubos admiten cuatro bolas y todas las configuraciones mantienen dos tubos vacíos. Esta estabilidad hace que el vocabulario del juego sea idéntico al crecer; lo que cambia es cuántos colores debemos desenredar y cuántas operaciones han participado en construir el estado inicial.

Cuatro tamaños y cuatro dificultades con números concretos

Los tamaños utilizan 4, 6, 8 y 10 colores. Cada color aparece exactamente cuatro veces, porque la capacidad de los tubos es siempre cuatro. A esos tubos de color se añaden dos vacíos que funcionan como espacio de maniobra.

La dificultad usa cuatro profundidades de mezcla: 18 pasos en Fácil, 32 en Normal, 52 en Difícil y 76 en Experto. No presentamos esas cifras como una escala científica de dificultad humana; son un parámetro reproducible que aumenta cuánto nos alejamos constructivamente del estado ordenado.

La semilla combina tamaño, profundidad y variante. Eso hace que durante desarrollo podamos reconstruir el mismo nivel y, al mismo tiempo, que el botón «Nueva» produzca otra configuración sin descargar un banco externo de puzzles.

Dos ejes que no confundimos
4 · 6 · 8 · 10colores según tamaño
4bolas por tubo
2tubos vacíos en todos los tamaños
18 · 32 · 52 · 76pasos de mezcla por dificultad

Qué comprueba el selfTest

La garantía constructiva no elimina la necesidad de probar el generador. El selfTest() recorre las dieciséis combinaciones de tamaño y dificultad y comprueba invariantes muy concretos: número correcto de tubos, ausencia de sobrecapacidad, estado inicial no resuelto y exactamente cuatro bolas de cada color.

Es una prueba diferente a la de Dominosa o Slant. Allí CI vuelve a resolver para demostrar unicidad o reglas globales. Aquí el contrato principal de resolubilidad viene de cómo fabricamos la partida y el test protege las propiedades que esa construcción necesita conservar.

La interfaz tenía que parecer física sin convertirse en decoración

Ball Sort pedía un tratamiento diferente a una rejilla. Diseñamos tubos responsivos, capas de bolas con lectura clara del color y estados de selección que funcionan tanto con ratón como con pantalla táctil. La forma visual ayuda a entender la regla: arriba es accesible, abajo está bloqueado.

En móvil, el tablero reorganiza el ancho de los tubos sin convertir las bolas en objetivos minúsculos. El reto no era dibujar cristal realista; era que el orden vertical, el espacio libre y el tubo seleccionado se leyesen inmediatamente.

Deshacer no es un extra en un puzzle de espacio

El motor conserva el estado anterior de los tubos antes de cada movimiento válido. Eso permite deshacer sin volver a generar el nivel ni reconstruir la secuencia desde la semilla. También separa claramente tres acciones: deshacer el último paso, reiniciar exactamente la misma configuración y generar una variante nueva.

Son controles pequeños, pero en un puzzle donde una decisión puede enterrar el color que necesitas después cambian mucho la sensación de experimentar. Queremos que el jugador pruebe hipótesis, no que tema tocar el tubo equivocado.

Onboarding específico en lugar de una ayuda genérica

El tutorial compartido de PuzzleHub carga un perfil asociado al juego. En Ball Sort ese perfil representa una interacción de movimiento y se combina con las reglas y el resumen del propio manifiesto. La explicación enseña seleccionar el origen, reconocer destinos válidos, conservar espacio libre y terminar con grupos monocromos.

Esto importa porque «deshacer» o «nueva partida» son conceptos compartidos, pero la primera idea útil no lo es. Un onboarding escalable necesita reutilizar la estructura sin fingir que todos los juegos se aprenden igual.

El juego 75 también tenía que heredar la plataforma

Ball Sort llegó como juego 75 cuando PuzzleHub ya no medía una incorporación solo por si «funciona». Tiene taxonomía, traducciones, estadísticas locales, onboarding, responsive, cuatro dificultades, generación propia y el mismo contrato de navegación que el resto.

El catálogo ya ha seguido creciendo, pero esa exigencia permanece. La definición de terminado debe hacerse más fuerte a medida que la plataforma incorpora más juegos y, paradójicamente, cada incorporación debería repetir menos trabajo gracias a la infraestructura compartida.

Una regla sencilla puede esconder un buen problema de ingeniería

Ball Sort no necesita un solver de exact cover ni restricciones numéricas complejas. Su reto está en otro sitio: preservar alcanzabilidad mientras se genera variedad y calibrar la mezcla para que el resultado no sea ni trivial ni frustrante.

Ese contraste es precisamente lo que nos interesa de un catálogo amplio. Cada puzzle obliga a reutilizar unas capas y a inventar otras. La plataforma se vuelve útil cuando puede hacer ambas cosas sin fingir que todos los juegos son el mismo problema.

Jugar Ball Sort en PuzzleHub