Range Node Core – Nodos de lógica para Range Engine

He estado trabajando en un addon para Range Engine llamado Range Node Core (RNC), la idea detrás del proyecto es bastante simple:

Crear un sistema de visual scripting que compile nodos a código Python real ejecutado directamente dentro de un KX_PythonComponent.

O sea, cuando presionas Play, lo que corre ya no son nodos, no intervienen bloques de lógica, es código Python generado automáticamente.

Se que para este momento ya quieres saltarte a la descarga del addon para probarlo, pero mi consejo es que continúes leyendo porque hay un proceso que necesito explicar antes de que comiences a usarlo, ya que en este momento la API de Range no permite poner un game component directamente con programación, y es un solo paso que se tiene que hacer “a mano” 😅

 


Actualmente el sistema ya incluye cosas como:

  • FPS tools
  • vehículos
  • IA
  • FSM
  • tween
  • dialogue
  • pooling
  • save system
  • nodos específicos para física
  • regeneración automática
  • modo debug
  • y varias herramientas más, como su propio exportador a ejecutable.

La intención nunca fue reemplazar Python, al contrario. La idea es aprovechar toda la flexibilidad de Python, pero hacer más rápido construir sistemas gameplay visualmente.

Y justo ahí fue donde empecé a pensar en cómo normalmente trabajamos en Range Engine.


🧠 Python en Range Engine

Una de las cosas más poderosas de Range es que puedes hacer prácticamente cualquier cosa usando Python y eso abre muchísimas posibilidades, pero también hay una realidad: Para mucha gente que se inicia en este mundo de desarrollo de videojuegos, Python puede convertirse en una barrera de entrada ya que no todos llegan al motor queriendo escribir código desde el día uno.

Muchas personas solo quieren experimentar, prototipar ideas o aprender cómo funciona un juego sin tener que construir sistemas completos desde cero.


🧱 Logic Bricks


Y ahí es donde históricamente entran los Logic Bricks.

Tienen ventajas reales:

  • son visuales
  • rápidos para prototipos
  • fáciles de entender al inicio

Pero conforme los proyectos crecen, también empiezan a aparecer varios problemas:

  • organizar lógica compleja se vuelve difícil
  • mantener muchos bricks puede ser incómodo
  • terminas limitado por lo que el sistema ofrece fácilmente

Y en cuanto quieres hacer algo más elaborado… normalmente tu única opción es aprender Python, y eso para algunos significa volver a la barrera que los detuvo al principio.


🔧 Otros sistemas de nodos

Después aparecieron varios addons y sistemas híbridos que intentan mejorar ese workflow. Muchos generan scripts automáticamente y usan internamente Logic Bricks para simplificar tareas comunes.

Y honestamente, tienen ventajas importantes:

  • aceleran workflows
  • reducen trabajo repetitivo
  • hacen más accesible el scripting
  • ayudan mucho a usuarios nuevos

Pero normalmente siguen dependiendo de:

  • Logic Bricks
  • capas intermedias
  • o sistemas que interpretan el grafo en runtime

Lo que intenta hacer diferente RNC

Y ahí fue donde empezó la idea principal de RNC: ¿qué pasaría si el grafo NO se ejecutara en runtime? En lugar de interpretar nodos frame por frame, RNC compila todo el NodeTree a código Python real.

Cuando presionas Play:

  • el grafo deja de existir
  • no hay interpretación visual
  • no hay controllers conectados por todos lados

Todo termina convertido en código ejecutándose directamente dentro del motor.


📄 El código generado es visible

El sistema guarda el resultado de cada compilación en:

rnc_generated_logic.py

Así puedes inspeccionar exactamente qué está ejecutándose internamente.


🧩 Dos tipos de nodos

Actualmente RNC mezcla dos enfoques:

Nodos pequeños

Hacen una sola cosa:

  • mover
  • rotar
  • comparar
  • leer propiedades
  • asignar valores a propiedades

Son simples y combinables y puedes generar sistemas complejos.

Nodos grandes (monolíticos)

FPS, vehículos, IA, setups completos…

Estos encapsulan sistemas más complejos que normalmente requieren bastante código y un orden interno muy específico.

La idea es que:

  • los nodos grandes te den velocidad de prototipado
  • los pequeños te den control

🧠 Arquitectura interna


Últimamente también he estado trabajando bastante en la arquitectura interna del compiler:

  • separación PURE / IMPURE
  • compilación más estructurada
  • modularización de nodos grandes
  • reducción de overhead
  • limpieza del runtime
  • refactorización del sistema de nodos

Todavía hay bastante trabajo por hacer 😅.

 


🧪 Proyecto personal convertido en herramienta pública

Realmente todo esto comenzó como una herramienta para mis propios proyectos pero conforme fue creciendo pensé que tal vez también podría ser útil para otras personas que tengan interés en el desarrollo de aplicaciones interactivas o videojuegos, así que decidí compartirlo.

No lo veo como un sistema “terminado” y tampoco está perfecto, a pesar de que es un desarrollo asistido por la IA y que he estado constantemente revisando y corrigiendo algunos errores, se que aun queda mucho por hacer.


💬 Feedback

Y justo por eso me interesa mucho escuchar feedback:

  • qué workflows sienten incómodos actualmente
  • qué tipos de nodos les gustaría ver
  • qué sistemas creen que serían útiles
  • qué problemas encuentran trabajando en Range

Porque muchas de las mejores ideas salen precisamente de uso real.

Si alguien quiere probarlo, dar feedback o simplemente platicar sobre ideas para visual scripting en Range Engine, me encantaría leerlos 👀


💬 Antes de iniciar con RNC

Antes de utilizar Range Node Core (RNC), es importante familiarizarse con algunos conceptos básicos. El siguiente ejercicio te permitirá verificar que el addon está correctamente instalado y comprender el flujo de trabajo fundamental de RNC.

Primeros pasos

  1. Activa el addon y abre el Editor de Nodos.
  2. Selecciona un objeto de la escena y crea un nuevo NodeTree.
  3. Añade un nodo On Update y un nodo Transform Object.
  4. Configura el nodo Transform Object en modo Rotate y establece el valor Z = 0.3.
  5. En el panel lateral derecho del editor de nodos, dentro de la sección Range Node Core, localiza el botón Info Componente. También puedes encontrar esta opción dentro del nodo On Update.
  6. Presiona el botón para copiar la información del componente asociado al NodeTree actual.
  7. En la sección Game Components, localiza el componente llamado module y elimínalo haciendo clic en el botón X.
  8. Presiona Add RNC Component.
  9. En la ventana emergente que aparecerá, utiliza Ctrl + V para pegar la información del componente previamente copiada.
  10. Haz clic en Assign NodeTree para vincular el componente con el NodeTree actual.
  11. Presiona la tecla P o el botón Play para ejecutar el motor de juego.

Si todo está configurado correctamente, verás que el cubo comienza a rotar.

¿Qué sigue?

Con estos sencillos pasos ya habrás creado tu primer comportamiento utilizando Range Node Core. A partir de aquí podrás construir sistemas mucho más avanzados combinando nodos y componentes.

Te recomiendo consultar el manual oficial para conocer en detalle cada nodo disponible y aprovechar al máximo las capacidades de RNC:

https://mataii.github.io/Range-Node-Core-Docs/

P.d: Agradecimiento a mi amigo Madnux por su contribución en nodos 🙂

 

 

Leave a Reply

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