Cómo hicimos el Duelo de Reflejos

Cae una pelota; el primero en tocarla se la lleva. Suena simple, pero que la IA se sienta justa —y no aburrida ni imposible— fue el verdadero trabajo.

El problema de un tiempo de reacción fijo

La primera versión le daba a la IA un tiempo de reacción al azar dentro de un solo rango: siempre entre medio segundo y casi un segundo. Se sentía... plana. Después de un par de rondas, el patrón se volvía predecible: la IA nunca era una amenaza real, solo un cronómetro con el que competías.

La IA "francotiradora"

La solución no fue subirle la dificultad general, sino agregarle varianza: casi un tercio de las rondas, la IA reacciona muchísimo más rápido de lo normal —casi arriba de la caída—, sin ningún aviso visual. El resto de las rondas, sigue en su rango normal, perfectamente superable.

const delay = Math.random() < 0.28
  ? randomBetween(140, 320)    // francotirador: reacciona casi al instante
  : randomBetween(500, 950);   // ronda normal: alcanzable

El resultado se siente muy distinto a "subir la dificultad": la mayoría de las rondas las puedes ganar limpio, pero nunca sabes cuál va a ser la ronda rápida. Esa incertidumbre es lo que mantiene la atención, no la velocidad promedio.

Ajustar la zona de toque

El radio visual de la pelota y el radio que realmente cuenta como "toque válido" son dos números distintos a propósito. Si son iguales, cualquier imprecisión —un dedo grueso, un clic con medio pixel de más— cuenta como fallo, y el juego se siente injusto e impreciso, no difícil.

Le dimos a la zona de toque casi el doble del radio visual de la pelota. Sigue viéndose como una pelota chica, pero perdona la imprecisión normal de tocar algo que se mueve.

¿Necesitas una mecánica de juego a medida, con una IA que se sienta bien? Hablemos.

Cotizar un proyecto