Reloj analógico en Range ⏱️ | Lógica básica paso a paso (Parte 2)

⏱️Haciendo la lógica para el reloj analógico en RanGE

Ahora creo que estamos listos para continuar con la lógica, la cual es lo más importante para hacer que el reloj analógico funcione correctamente. Como mencioné antes, estoy usando Range Game Engine versión 1.6 Rev2 Release, que es la más reciente pero aún no está disponible públicamente, aunque puedes obtener la versión 1.6 desde la página oficial.

Antes de comenzar, es importante aclarar que el cálculo de los segundos dentro del motor de juegos puede variar de una computadora a otra, por lo que el conteo de segundos —y, en consecuencia, el de minutos y horas— no será completamente exacto ⏱️. Sin embargo, este ejercicio está pensado principalmente como una práctica, cuyo objetivo es que logres comprender el funcionamiento de los Logic Bricks, más que obtener una medición de tiempo perfecta 🧠🔧

Ok, una vez que tengas tu copia de Range 1.6, ¡pasemos al siguiente!


🕒 Cómo funciona un reloj analógico

Antes de construir nuestro reloj dentro de Range Game Engine, entendamos cómo funciona uno real 👇

1️⃣ La manecilla de los segundos (la que siempre está moviéndose)

Un reloj tiene 60 segundos por minuto.
Cada segundo, la manecilla de los segundos rota (porque 360° ÷ 60 = 6°).

🔁 Después de 60 pasos de 6°, la manecilla completa una rotación de 360°.
Cuando completa un ciclo, la manecilla de los segundos se reinicia a y envía una señal para incrementar un minuto.

Ejemplo visual:

  • 1 segundo = +6°
  • 60 segundos = +360° (rotación completa)

2️⃣ La manecilla de los minutos (la del medio)

Funciona igual que la de los segundos.

  • Cada minuto rota .
  • Después de 60 minutos completa una rotación de 360°.
  • Al hacerlo, se reinicia a y envía una señal para incrementar una hora.

Ejemplo visual:

  • 1 minuto = +6°
  • 60 minutos = +360° (rotación completa)

3️⃣ La manecilla de las horas

La carátula del reloj tiene 12 horas.
Cada hora, la manecilla rota 30° (360° ÷ 12 = 30°).

Cuando la manecilla de los minutos completa 12 ciclos completos, la manecilla de las horas completa una rotación total.

Ejemplo visual:

  • 1 hora = +30°
  • 12 horas = +360° (rotación completa)

⚙️ Resumen del sistema

Manecilla Unidades totales Rotación por unidad Ciclo completo Envía señal a
Segundos 60 segundos +6° por segundo 360° Minutos
Minutos 60 minutos +6° por minuto 360° Horas
Horas 12 horas +30° por hora 360°

En Range Game Engine simularemos este comportamiento usando Logic Blocks para:

  • Contar segundos, minutos y horas
  • Rotar las manecillas en cada paso
  • Enviar señales entre manecillas usando propiedades o conexiones

Ahora sí, ¡vamos a hacer la lógica del reloj!


🧩 Paso 1: Preparando la escena

Vamos a nacesitar tres modelos para las manecillas del reloj:

  • SecondHand (Manecilla de segundos)
  • MinuteHand (Manecilla de minutos)
  • HourHand (Manecilla de horas)

Asegúrate de que cada manecilla tenga su punto de rotación en el centro de la carátula. No es necesario que los objetos sean tan elaborados, puedes hacerlo a partir de un cubo, para avanzar rápido con el ejercicio.

Opcionalmente, crea un mesh ClockBase (la carátula estática del reloj).


⏱️ Paso 2: Configurando el temporizador

Para simular el funcionamiento de un reloj analógico, necesitamos un temporizador que controle el avance de los segundos, minutos y horas ⏰.
En términos generales, la lógica puede explicarse de la siguiente manera:

  • Los segundos se incrementan continuamente hasta llegar a 59.

  • Cuando los segundos alcanzan ese valor, se reinician a cero (0) y se suma un minuto a la variable minutos.

  • Los minutos se incrementan de la misma forma y, al llegar a 59, se reinician a cero (0) y se incrementa en uno (1) la variable horas.

  • Finalmente, cuando la variable horas supera el valor 12, se reinicia y se asigna el valor 1, completando así el ciclo del reloj analógico 🕒

Para implementar esta lógica dentro de RanGE, utilizaremos sensores tipo Always y Property, conectados a controladores AND, y finalmente a actuadores Property 🔧🧱.

Estos actuadores serán los encargados de modificar los valores de las variables, permitiéndonos controlar correctamente el paso del tiempo y hacer que el reloj funcione de manera continua y coherente 🧠✨

🔧 Depuración

  • Ve al menú Game
  • Activa Show Profile y Debug Mode
  • Selecciona el objeto counter, activa el botón de debug
  • Presiona P (el cursor debe estar sobre la vista 3D) o el botón Play en la vista 3D

🧩 Buenas prácticas al trabajar con bloques de lógica en Range

Una muy buena práctica al programar con bloques de lógica en Range es nombrar correctamente cada bloque. Esto no solo te ayudará a entender mejor tu propia lógica, sino que también facilitará que otras personas puedan comprender tus archivos cuando los revisen o les den mantenimiento.

En este caso, aunque se trata de algo sencillo, es clave asignar nombres claros y descriptivos a cada bloque de lógica. De esta forma podrás seguir fácilmente el flujo del sistema y tener total claridad sobre qué está ocurriendo en cada parte del proceso 🔗🔍.

De manera opcional —pero altamente recomendable— puedes añadir un comentario al inicio del sensor (ícono de hoja o libreta 📝), donde describas brevemente la función de ese bloque de lógica.
Este pequeño detalle marca una gran diferencia, sobre todo en proyectos más grandes o cuando vuelves a abrir un archivo después de un tiempo y necesitas entender rápidamente qué hace cada cosa 😉✨

 

 


🔄 Paso 3: Rotando las manecillas

Si todo nos quedó bien y las operaciones que vimos en el debug son correctas, entonces el ultimo paso es hacer que las  manecillas se muevan. Pero antes de hacer esto debemos tomar en cuenta varias cosas, la primera es que el reloj obviamente no esta tomando la hora del sistema, por lo que nuestras variables siempre iniciarán con un valor predeterminado (el que les hayamos puesto) por lo que necesitamos girarlas para que, en teoría, puedan iniciar correctamente.

Vamos a tomar las tres manecillas y las rotamos para que todas apunten hacia la posicion que indica 12. En este caso por la forma en que hice el modelo, desde la vista TOP veo que las manecillas apuntan a la posicion 12.

Una vez hecho esto, ahora si procedemos a conectar los bloques de lógica que nos permitirán mover las manecillas.


🎯 Paso 7: Probando el reloj

Presiona Play ▶️

Deberías ver:

  • La manecilla de los segundos tic-tic cada segundo
  • Cada 60 segundos, la manecilla de minutos avanza 6°
  • Cada 60 minutos, la manecilla de las horas avanza 30°

💡 Tip: Si las manecillas giran al revés, cambia el valor del eje a negativo (-6° o -30°).


🏁 Conclusiones y lecciones aprendidas

Con este ejercicio del reloj hemos construido algo aparentemente sencillo, pero muy útil para comprender cómo funcionan los bloques de lógica en Range y cómo se comunican entre sí para generar un comportamiento continuo y controlado en el tiempo 🧠⚙️.

A lo largo del tutorial pudimos ver que, más allá del resultado visual, lo realmente importante es entender el flujo lógico: cómo los sensores detectan condiciones, cómo los controladores evalúan esas condiciones y cómo los actuadores modifican las variables que hacen que el sistema funcione correctamente.

📌 Lo más importante que aprendimos

  • ⏱️ El manejo del tiempo en un motor de juegos no siempre es exacto, ya que depende del rendimiento de cada equipo. Aun así, es perfecto para prácticas y sistemas lógicos como este.

  • 🧩 Nombrar correctamente los bloques de lógica y añadir comentarios hace que el proyecto sea mucho más legible y fácil de mantener.

  • 🔁 Un sistema complejo puede construirse a partir de bloques simples, siempre que estén bien organizados.

  • 🛠️ Los sensores Always y Property, combinados con controladores AND y actuadores Property, permiten crear sistemas totalmente funcionales sin necesidad de escribir código.

🚀 ¿Qué sigue?

Este reloj es solo el punto de partida. A partir de aquí puedes:

  • Añadir un formato de 12/24 horas.

  • Mostrar la hora en pantalla o en un objeto 3D.

  • Sincronizarlo con otros sistemas del juego.

  • Usarlo como base para temporizadores, cooldowns o eventos dependientes del tiempo.

Recuerda que estos ejercicios no buscan la perfección, sino entrenar tu forma de pensar en lógica. Una vez que entiendes cómo fluye la información dentro del motor, podrás construir sistemas cada vez más complejos con mucha mayor confianza 💪🎮.

Nos vemos en el siguiente tutorial 👋🔥

Leave a Reply

Your email address will not be published. Required fields are marked *