Novemade
Todos los experimentos

Prestarse un solucionador en lugar de reescribir las reglas

Cuando una demo necesita la lógica de un producto, ¿es más seguro incorporar el código real que reescribir una versión simplificada de él?

EXPERIMENTO

·

Una demo de navegador normalmente reimplementa justo lo suficiente del producto para que parezca correcto. Eso está bien hasta que la parte interesante del producto es una regla fácil de describir y difícil de acertar — momento en el que la reescritura publica calladamente una versión peor de aquello que se anuncia.

Glow Garden es exactamente ese caso. Su regla se lee como un cliché de puzle: una luciérnaga por fila, por columna, por región de color, ninguna tocándose. Pero el juego no comprueba las colocaciones contra esas reglas. Le pregunta a un solucionador si el tablero todavía puede completarse, y rechaza el toque si no puede. Eso significa que una colocación puede ser legal en aislamiento y aun así ser rechazada, que es lo que hace que el juego se sienta justo en vez de arbitrario — y es precisamente la sutileza que una reescritura habría aplanado.

Así que en lugar de reescribir, el núcleo de reglas se copió de la app sin cambios, se registró su hash y se puso delante una frontera tipada para que la compilación se rompa si el original llega a desviarse. El mismo enfoque funcionó después para la función de plantilla de Veyra.

Qué aprendimos

Hallazgos hasta ahora.

  1. 01

    La parte que merece copiarse rara vez es la parte que parece complicada. Es la parte en la que una reimplementación plausible estaría sutilmente equivocada y nadie se daría cuenta.

  2. 02

    Incorporar código necesita una frontera, no solo una copia. Una superficie tipada escrita a mano delante del código prestado es lo que convierte «se desvió» de un cambio de comportamiento silencioso en una compilación fallida.

  3. 03

    Solo funciona donde la lógica ya es pura. Las dos piezas que se trasplantaron limpiamente no tenían importaciones ni ningún framework debajo, y esa es una propiedad que se obtiene escribiéndolas así, no deseándola después.

  4. 04

    Un tablero fijo necesita igualmente la garantía del generador real. El tablero de la demo se buscó con el propio solucionador de la app hasta que apareció uno con exactamente una solución, en vez de dibujarlo a mano y confiar.

Verlo funcionando

La comprobación de reglas es el código propio de Glow Garden, tomado sin modificar, incluido el solucionador que rechaza cualquier colocación que dejaría el tablero sin solución. El tablero es fijo en lugar de generado, y se buscó con ese mismo solucionador hasta que apareció uno con exactamente una solución.