Dificultad progresiva con patches en Spark AR

Resumen

Aprenderás a crear un sistema de dificultad progresiva en Spark AR que acelera tu juego cada cierto puntaje, usando patches y script conectados de forma paramétrica. Esto sirve para diseñadores de filtros AR que buscan retener jugadores con un reto creciente y reseteable.

¿Cómo detectar cada cuántos puntos subir la dificultad?

La idea es que la velocidad no aumente con cada punto, sino en intervalos definidos. Tú decides el ritmo: cada 10, cada 20, lo que tu juego pida.

En la sección del contador de puntos en Spark AR, conecta el valor del score a un nodo módulo, que devuelve el residuo de una división. Al dividir los puntos entre 10, obtienes un residuo que se reinicia cíclicamente.

  • Divide los puntos entre 10 con el nodo módulo.
  • Compara el residuo con un valor fijo, por ejemplo 9.
  • Cuando el residuo sea igual a 9, dispara un pulso.

Ese pulso es la señal para acelerar el juego en los puntos 9, 19, 29 y así sucesivamente [02:15].

¿Qué hace el nodo módulo en Spark AR? Devuelve el residuo de una división. Es útil para detectar múltiplos: si el residuo de puntos entre 10 es cero o nueve, sabes que llegaste a un intervalo exacto.

¿Cómo enviar el pulso de aceleración al script?

Una vez que tienes el pulso, debes mandarlo al script para que ejecute la lógica de cambio. Este flujo ya lo conoces si trabajaste el Game Over en clases anteriores.

Selecciona tu script en el panel y crea un pulso To Script llamado acelerar. Conéctalo a la salida del comparador. De paso, crea también un valor From Script de tipo número llamado velocidad, que será la salida hacia los patches [03:40].

En el código, agrega el pulso acelerar a la lista de patches outputs con getPulse. Recuerda la sintaxis: el último elemento no lleva coma, pero al añadir uno nuevo, el anterior sí debe llevarla. Guarda el resultado en una variable, por ejemplo resultado3, y suscríbete a ese pulso replicando la estructura que usaste para el Game Over.

¿Dónde se inicializa la velocidad en el código?

Fuera del método principal, declara una variable llamada level inicializada en 1. Esta será tu velocidad base.

Dentro del método, envía ese valor al patch con patches.inputs.setScalar, indicando el nombre velocidad y el valor level. Así, al iniciar la experiencia, el patch recibe el valor inicial sin errores [05:20].

¿Por qué multiplicar la velocidad alenta el juego?

Aquí viene lo interesante. Al suscribirte al pulso acelerar, la instrucción es multiplicar level por 1.5 y reenviarlo al patch. Pero al probarlo, el juego se vuelve más lento, no más rápido.

La razón está en la fórmula básica: velocidad es igual a distancia sobre tiempo. Si conectaste ese valor al campo de duración de una animación, estás aumentando el tiempo, no la velocidad real [07:10].

¿Cómo convierto duración en velocidad en Spark AR? Agrega un nodo divide donde 1 se divide entre el valor de velocidad. Así, al subir velocidad, la duración baja y el juego acelera de verdad.

También puedes invertir la lógica: que el valor disminuya progresivamente y renombrar la variable como duración. Es la misma solución con distinta etiqueta.

¿Qué valor inicial conviene para la velocidad?

En la prueba, valores como 1 o 2 resultan muy agresivos. Bajar a 0.5 ofrece un punto de partida jugable que sí permite sentir la aceleración sin volverse injugable de inmediato [08:45].

¿Cómo resetear la velocidad al reiniciar el juego?

Este es el detalle que se suele olvidar. Aunque la velocidad sube cada vez que el jugador acumula puntos, al reiniciar el juego no vuelve a su valor original. La variable conserva el último estado.

La solución es agregar un pulso de inicio que se dispare cada vez que arranca una partida.

  • Crea un pulso To Script llamado Inicio y conéctalo al evento de inicio del juego.
  • En el código, añade Inicio a los patches outputs con getPulse y guárdalo en resultado4.
  • Suscríbete a ese pulso con un método nuevo que asigne level = 0.5 y reenvíe el valor al patch.

Recuerda numerar correctamente los resultados: si la línea inicial es cero y la segunda es uno, el cuarto pulso debe llevar el índice consistente. Mezclarlos rompe la lógica [10:30].

Con este flujo completo, cada partida arranca con velocidad 0.5, sube cada 10 puntos y se reinicia limpiamente al volver a jugar.

¿Por qué dejar la dificultad paramétrica importa para tu filtro AR?

Un juego balanceado depende de prueba con usuarios reales. Comparte tu filtro con amigos o gente cercana y observa si la curva de dificultad funciona o si necesitas ajustar valores.

Las mismas herramientas que viste en este módulo te permiten afinar otros parámetros del juego.

  • La distancia mínima para capturar fantasmas.
  • La sensibilidad del movimiento de cabeza.
  • El intervalo entre incrementos de velocidad.
  • El multiplicador de aceleración por nivel.

Dejar todo paramétrico significa que puedes iterar sin tocar la lógica base, y eso se traduce en jugadores que vuelven. ¿Ya probaste tu juego con alguien fuera de tu equipo? Cuéntame qué ajuste te dio el mejor resultado.