// Proyecto

Mewline

Godot 4.7GDScriptBacktrackingAndroidAdMobGoogle Play BillingPlay Juegos
Mewline

Si NUBO va de decidir en qué orden repartes la lluvia, Mewline va de algo todavía más sencillo de explicar: un hilo de lana, unos números y un tablero que hay que cubrir entero. Es de esos puzles de lógica que juegas en un rato muerto, con partidas de uno a tres minutos.

Mango es una gata naranja atigrada, curiosa y un poco torpe, que se pasa el día desenrollando ovillos por la casa. Arrastras el dedo desde el 1 y el hilo te sigue: tiene que pasar por todas las baldosas, visitar los números en orden y terminar en el último.

La gracia está en que cada tablero tiene una única solución, y se llega a ella pensando, nunca adivinando. Aquí no hay vidas ni derrota: si te equivocas, vuelves por el hilo, lo recoges y sigues. Lo que aprieta son el reloj y las estrellas.

Como NUBO, está hecho con Godot 4.7 y GDScript, en vertical y para Android. Más abajo puedes jugar uno de sus niveles sin salir de esta página.

  • 180niveles en 6 habitaciones
  • 5objetos de la casa
  • 10gatas para elegir
  • 180/180soluciones únicas comprobadas
// Android

Próximamente en Google Play

Gratis · Sin anuncios forzados · Sin conexión · Español e inglés

Así se juega

Las reglas son cuatro:

  • Empieza en el 1 y arrastra el hilo a las baldosas vecinas, sin diagonales.
  • No se cruza: el hilo no puede pasar dos veces por la misma baldosa.
  • Los números van en orden, y el hilo termina en el último.
  • Cubre todo el tablero. Si te equivocas, vuelve por el hilo para recogerlo o toca un punto para cortarlo ahí.

Cada nivel da hasta tres estrellas: una por completarlo, dos si es sin pistas y tres si además lo haces en el tiempo objetivo. Las estrellas nunca bloquean nada: para avanzar basta con completar el nivel.

  • Pantalla de inicio de Mewline: Mango dormida sobre el ovillo, el botón Jugar, el reto diario y el modo libreEl inicio
  • Nivel 40 de la cocina, con el hilo a medias y dos muebles en el tableroLa cocina
  • Nivel completado con tres estrellas y tres regalos: una pista, un color de lana y la gata siamesaTres estrellas y regalos
  • El mapa de la casa, con el salón a medias y el adelanto de lo que trae cada habitación cerradaLa casa de Mango
  • Nivel 125 del jardín, con dos ovillos de colores y sus propios númerosEl jardín: dos gatas
  • Nivel 160 del desván, con baldosas oscuras que esconden lo que hay debajoEl desván a oscuras
  • El reto diario: el calendario del mes, la racha y el resultado de hoy para compartirEl reto diario
  • La tienda de gatas: Mango, la siamesa, la bengalí, la calicó y másLas gatas

Seis habitaciones, un objeto nuevo en cada una

La campaña es la casa de Mango, habitación por habitación. Cada una es un mundo de 30 niveles con su decorado y un objeto nuevo que cambia la regla. Llega con dos o tres niveles muy fáciles para presentarlo y después se mezcla con todo lo anterior.

Dentro de cada habitación la dificultad sube en dientes de sierra: cuatro niveles que aprietan y uno de respiro. El 30 es un jefe, más grande que los demás, y al terminarlo Mango se queda dormida en esa habitación.

  • El salón: Mango dormida sobre el ovillo junto al sofá lila
    Habitación 1 4×4 → 6×6

    El salón

    Solo la regla: números en orden y todas las baldosas cubiertas.

  • La cocina: Mango dormida sobre el ovillo entre muebles lilas y una mesa con mantel de cuadros
    Habitación 2 5×5 → 6×6

    La cocina

    Muebles: cortan el paso entre dos baldosas y obligan a rodearlos.

  • El dormitorio: Mango dormida sobre el ovillo en una alfombra junto a la cama
    Habitación 3 6×6 → 7×7

    El dormitorio

    Cojines: el hilo los cruza recto, sin girar encima.

  • El baño: Mango dormida sobre el ovillo junto a la bañera
    Habitación 4 6×6 → 7×7

    El baño

    Rascadores: lo contrario del cojín. Encima, el hilo tiene que girar.

  • El jardín: Mango dormida sobre el ovillo en un patio con flores al atardecer
    Habitación 5 7×7 → 8×8

    El jardín

    Dos gatas: dos ovillos, cada uno con sus números, que no se pueden cruzar.

  • El desván: Mango dormida sobre el ovillo bajo una ventana redonda
    Habitación 6 7×7 → 9×9

    El desván

    Baldosas oscuras: esconden lo que hay debajo hasta que el hilo pasa al lado.

Además de la campaña, hay un reto diario igual para todo el mundo y un modo libre con tableros infinitos de 5×5 a 9×9 que mezclan los objetos que ya conoces.

Pruébalo: el nivel 44

En la cocina hay un nivel que me gusta especialmente. Es un 5×5 con solo cinco números y cuatro muebles, así que casi todo el camino lo tienes que deducir tú. Y el primer paso ya esconde una trampa.

Aquí lo tienes, con las reglas, los mensajes y el arte del juego:

// Demo jugable

Nivel 44 · La cocina

Une los números del 1 al 5 y cubre las 25 baldosas. Arrastra desde el 1. Para corregir, vuelve por el hilo o toca un punto para cortarlo ahí. También puedes usar las flechas del teclado con el tablero enfocado. Para la tercera estrella: sin pistas y en 19 segundos.

Tiempo0:00
Por cubrir25
Pistas0

La solución no viene guardada en la página. Al cargarla, un backtracking con la misma poda que el solucionador del juego la busca y demuestra que es la única. Para ello explora 51 nodos, los mismos que cuenta el de Godot en este nivel.

¿Dónde está la trampa? (contiene pistas)

El 2 está a dos baldosas del 1, a la izquierda, y apetece ir directo a por él. Pero fíjate en la baldosa que hay justo encima del 1: tiene un mueble a cada lado, así que solo se puede entrar en ella desde arriba o desde el propio 1.

Si no la pisas al empezar, el día que llegues desde arriba ya no podrás salir: sería un callejón sin salida, y el único sitio donde el hilo puede terminar es el 5. Así que el primer paso está obligado: hacia arriba, y el segundo también. Es exactamente la regla que usa el solucionador para descartar caminos, y es la que hace que el nivel tenga una sola solución con tan pocos números.

Un solucionador que demuestra que solo hay un camino

Como en Shadow Maze y en NUBO, lo que más he disfrutado no se ve. El problema de un puzle como este es muy concreto: ¿cómo sabes que cada tablero tiene una sola solución? Si tuviera dos, el jugador podría llegar a la «otra» y el juego no la aceptaría, o habría que adivinar en algún punto. Con 180 niveles, un reto al día y un modo libre infinito, a ojo es imposible.

Mewline empezó como un prototipo en una sola página web, con su generador y su solucionador. Lo primero que hice al pasar a Godot fue portarlos a GDScript, y las pruebas comprueban que con la misma semilla salen exactamente los mismos tableros. La demo de arriba es el viaje de vuelta: el mismo solucionador, otra vez en JavaScript.

El solucionador es un backtracking: desde el 1, prueba cada vecina libre, avanza y, si se atasca, deshace el paso y prueba la siguiente. Contado así explotaría enseguida, porque un 7×7 tiene una cantidad enorme de caminos. Lo que lo hace viable es la poda: después de cada paso mira el tablero que queda y descarta la rama en cuanto es imposible terminarla, aunque aún falten veinte baldosas.

  • 12
    CallejónUna baldosa libre con una sola salida tiene que ser el final del hilo. Si no es el último número, la rama se descarta.
  • 12
    IslaLas baldosas libres tienen que seguir unidas. Si el hilo las parte en dos grupos, nunca podrá volver a por uno de ellos.
  • 132
    Fuera de ordenUn número solo se pisa cuando le toca, y el último solo cuando ya está todo cubierto.

Las tres podas del solucionador. En ámbar, lo que hace imposible terminar el tablero desde ahí.

Con eso, el generador es sencillo. Primero saca un camino aleatorio que cubre todo el tablero. Parte de un zigzag y le aplica miles de backbites: une un extremo del camino con una baldosa vecina e invierte el tramo de en medio, de modo que sigue pasando por todas. Después pone un número cada pocos pasos y le pregunta al solucionador:


# Pone números a lo largo de `path` hasta que la solución sea única.
# Simplificado de generator.gd: sin cojines, rascadores
# ni búsquedas abortadas.
static func _place_numbers(path, neighbors, gap, rng):
    # El 1 y el último, siempre; luego uno cada `gap` pasos, más o menos uno.
    var indices := {0: true, path.size() - 1: true}
    var i := gap
    while i < path.size() - 1:
        indices[mini(path.size() - 2, i + rng.next_int(3) - 1)] = true
        i += gap
    for _try in MAX_TRIES_PER_PATH:
        var sorted := indices.keys()
        sorted.sort()
        var checkpoints := PackedInt32Array()
        for index in sorted:
            checkpoints.append(path[index])
        # Con 2 soluciones basta para saber que no es única.
        var result := Solver.solve(neighbors, checkpoints, 2)
        if result.solutions.size() == 1:
            return checkpoints
        # Hay otra: un número justo donde se separa del camino bueno.
        var alt := _first_different(result.solutions, path)
        var d := 0
        while alt[d] == path[d]:
            d += 1
        indices[mini(path.size() - 2, d + rng.next_int(2))] = true
    return PackedInt32Array()  # se prueba con otro camino

Cada vez que el solucionador encuentra una segunda solución, el generador pone un número justo en la baldosa donde se separa del camino bueno, y vuelve a preguntar. Los muebles se colocan en uniones que el camino no usa, así que nunca rompen la solución. Con ellos el tablero se resuelve con unos dos números menos, porque las paredes ya descartan caminos.

Al revés para los tableros grandes

En 8×8 y 9×9 ese método se ahoga: cada pregunta al solucionador cuesta millones de pasos, y un 9×9 podía tardar minutos o no salir nunca. Así que para los grandes lo hago al revés: pongo un número cada tres pasos, añado los que falten hasta que la solución sea única y luego los voy quitando al azar mientras siga siéndolo, sin bajar de una sexta parte de las baldosas. Un 9×9 sale ahora en unos 3 segundos en el PC.

También aceleré el solucionador, con una condición que no podía saltarme: explorar exactamente los mismos nodos, en el mismo orden. Si cambiaba un solo nodo, cambiarían los tableros generados y el reto diario dejaría de ser el mismo en todos los móviles. Así que las optimizaciones solo abaratan cada nodo: llevar la cuenta de vecinas libres en vez de recontarlas, revisar solo las baldosas que el último paso puede haber cambiado y comprobar la conexión cerca de la cabeza del hilo en vez de recorrer todo el tablero. Una prueba lo compara con el port original, y un 8×8 ha pasado de 165 a 27 segundos.

Dos gatas, un solo camino

En el jardín hay dos ovillos que no se pueden cruzar y que entre los dos cubren el tablero. Podría haber escrito un solucionador nuevo, pero hay un truco más barato: una baldosa puente que no existe en el tablero y que solo toca el último número del primer hilo y el 1 del segundo. Con ella, los dos hilos son un único camino, y el solucionador, el generador y la puntuación de dificultad funcionan sin cambiar una línea. Una prueba compara el resultado con una búsqueda a mano de todos los pares de hilos.

La dificultad, en números

El mismo solucionador sirve para medir. La dificultad de un tablero suma su tamaño, la distancia media y máxima entre números, cada objeto de la casa y, sobre todo, cuántos nodos necesita el solucionador para demostrar que la solución es única, empezando por el 1 y también por el final. Va de unos 8 puntos en un 4×4 lleno de números a unos 90 en el jefe del desván.

Con esa nota se monta la campaña: los niveles se generan por lotes en el ordenador y, para cada hueco de la curva, se elige el tablero que más se acerca a la dificultad buscada. Una prueba comprueba que los 180 tienen solución única, que la curva hace sus dientes de sierra y que el jefe es siempre el más difícil de su habitación.

El tiempo de la tercera estrella sale del mismo número. En partidas cronometradas de los primeros niveles, el tiempo crece de forma exponencial con la dificultad: unos 4 segundos en dificultad 10, 10 en 25 y 25 en 42. El objetivo es ese tiempo con un margen de 1,5, y nunca menos de 8 segundos. Por eso el nivel 44, con 29,9 puntos, pide 19.

El reto diario, sin servidor

Cada día hay un tablero nuevo, el mismo para todo el mundo, y no hay ningún servidor detrás. La semilla sale de la fecha y el generador es determinista, así que cualquier móvil llega al mismo tablero por su cuenta. Para no hacer esperar a nadie, los retos del año ya van generados y validados dentro de la app.

La dificultad sube durante la semana, como en el crucigrama del New York Times:

  • Lun5×5
  • Mar5×5
  • Mié6×6
  • Jue6×6
  • Vie7×7
  • Sáb7×7
  • Dom8×8

El domingo es un 8×8 con ocho muebles. Alrededor del reto hay una racha, un calendario del mes para recuperar los días que se te pasaron y un regalo por cada semana y cada mes completos. Los tiempos van a una clasificación de Play Juegos, que se encarga de apartar los sospechosos, y el resultado se comparte con una imagen que enseña el tablero sin la solución, para no destripárselo a nadie.

Diez gatas y seis lanas

Mango es la protagonista, pero no está sola. La siamesa se gana al terminar el salón y el resto esperan en la tienda. La gata elegida sale en el tablero, en la celebración y en la imagen que compartes.

  • Mango
  • Siamesa
  • Bengalí
  • Calicó
  • Gris azulada
  • Blanca con manchas
  • Atigrada parda
  • Carey
  • Crema
  • Plateada

Las lanas cambian el color del hilo, de las baldosas que recorre y de los números que pisa. Las estrellas regalan las primeras:

  • Frambuesa
  • Menta
  • Azul cielo
  • Mostaza
  • Lila
  • Pistacho

Pensado para ratos tranquilos

Todo lo que rodea a los tableros va en la misma dirección: que nada te meta prisa y que nada salte sin que lo pidas.

  • Sin vidas ni derrotaUn camino equivocado se corrige recogiendo hilo. La tensión la ponen el reloj y las estrellas, nunca un castigo.
  • Pistas con huellasUna pista enseña los tres pasos siguientes y, si te habías equivocado, recoge el hilo hasta el último paso bueno.
  • Anuncios solo si los pidesUn vídeo a cambio de una pista, como mucho diez al día. Ni banners ni anuncios al terminar un nivel.
  • La casa no se vendeTodas las habitaciones se juegan gratis. Lo que se compra son ayudas y aspecto: pistas, gatas y lanas.
  • Sin conexiónTodo funciona sin internet, salvo los vídeos, las compras y la clasificación. El progreso viaja en la nube con Play Juegos.
  • Para todos los ojosTema claro y oscuro, alto contraste y vibración ajustable.

El tráiler

Treinta segundos para verlo en movimiento. Lo graba el propio juego: el Movie Maker de Godot captura una partida real fotograma a fotograma, y la música, un lo-fi corto, también está compuesta por código.

// Muy pronto

Mango ya tiene el ovillo preparado

Mewline llegará muy pronto a Google Play.

¿Dudas sobre tus datos, los anuncios o las compras? Están explicadas en la política de privacidad.