{"id":1326,"date":"2026-06-17T16:40:38","date_gmt":"2026-06-17T16:40:38","guid":{"rendered":"https:\/\/salvador.mata.com.mx\/blog\/?p=1326"},"modified":"2026-06-17T20:59:08","modified_gmt":"2026-06-17T20:59:08","slug":"range-node-core-nodos-de-logica-para-range-engine","status":"publish","type":"post","link":"https:\/\/salvador.mata.com.mx\/blog\/2026\/06\/17\/range-node-core-nodos-de-logica-para-range-engine\/","title":{"rendered":"Range Node Core &#8211; Nodos de l\u00f3gica para Range Engine"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1350\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc02.jpg\" alt=\"\" width=\"1024\" height=\"434\" srcset=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc02.jpg 1024w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc02-300x127.jpg 300w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc02-768x326.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>He estado trabajando en un <strong>addon<\/strong> para <a href=\"https:\/\/rangeengine.tech\/\" target=\"_blank\" rel=\"noopener\"><em>Range Engine<\/em><\/a> llamado <strong><span style=\"color: #008000;\">Range Node Core (RNC)<\/span>, l<\/strong>a idea detr\u00e1s del proyecto es bastante simple:<\/p>\n<p><span style=\"color: #008000;\">Crear un <em>sistema de<strong> visual<\/strong><\/em><strong> scripting<\/strong> que compile nodos a <strong>c\u00f3digo Python <em>real<\/em><\/strong> ejecutado directamente dentro de un <code><strong>KX_PythonComponent<\/strong><\/code>.<\/span><\/p>\n<p>O sea, cuando presionas Play, lo que corre ya no son nodos, no intervienen bloques de l\u00f3gica, es <span style=\"color: #ff6600;\"><strong>c\u00f3digo Python<\/strong><\/span> generado autom\u00e1ticamente.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1328\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/RNC-nodes.jpg\" alt=\"\" width=\"1380\" height=\"657\" srcset=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/RNC-nodes.jpg 1380w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/RNC-nodes-300x143.jpg 300w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/RNC-nodes-1024x488.jpg 1024w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/RNC-nodes-768x366.jpg 768w\" sizes=\"auto, (max-width: 1380px) 100vw, 1380px\" \/><\/p>\n<p>Se que para este momento ya quieres saltarte a la descarga del addon para probarlo, pero mi consejo es que contin\u00faes 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\u00f3n, y es un solo paso que se tiene que hacer &#8220;a mano&#8221; <span class=\"emoji x1rg5ohu x16dsc37 x19la9d6 x1fc57z9 x6ikm8r x10wlt62 x19co3pv x11tp94h xw4jnvo x1qx5ct2 xfibh0p xiy17q3 x1xsqp64 x1lkfr7t xexx8yu xyri2b x18d9i69 x1c1uobl\"><span class=\"xrtxmta x1bhl96m\">\ud83d\ude05<\/span><\/span><\/p>\n<p><span class=\"shared-files-shortcode-admin-list shared-files-shortcode-admin-list-file shared-files-shortcode-1347\" title=\"&lt;div class=&quot;shared-files-embed-6a330e8c9e537 shared-files-main-container&quot; data-elem-class=&quot;shared-files-embed-6a330e8c9e537&quot; data-search-type=&quot;0&quot; data-post-id=&quot;1326&quot;&gt;&lt;div class=&quot;shared-files-search&quot;&gt;&lt;ul class=&quot;shared-files-main-file-list&quot;&gt;&lt;li class=&quot;shared-files-card-1347&quot;&gt;&lt;div class=&quot;shared-files-main-elements&quot;&gt;&lt;div class=&quot;shared-files-main-elements-left&quot; style=&quot;background-image: url(https:\/\/salvador.mata.com.mx\/blog\/wp-content\/plugins\/shared-files\/img\/2020\/zip.svg);&quot;&gt;&lt;\/div&gt;&lt;div class=&quot;shared-files-main-elements-right&quot;&gt;&lt;a class=&quot;shared-files-file-title&quot;  data-file-type=&quot;&quot;  data-file-url=&quot;\/blog\/uploads\/shared-files\/1347\/?range_node_core-1.zip&quot;  data-external-url=&quot;&quot;  data-image-url=&quot;https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc01a-1024x316.jpg&quot; href=&quot;\/blog\/uploads\/shared-files\/1347\/?range_node_core-1.zip&quot; target=&quot;_blank&quot;&gt;Range Node Core&lt;\/a&gt;&lt;span class=&quot;shared-file-size&quot;&gt;210.81 KB&lt;\/span&gt;&lt;span class=&quot;shared-file-date&quot;&gt;June 17, 2026&lt;\/span&gt;&lt;div class=&quot;shared-files-download-counter&quot;&gt;&lt;span&gt;Downloads: 2&lt;\/span&gt;&lt;\/div&gt;&lt;div class=&quot;shared-files-download-button-container&quot;&gt;&lt;a href=&quot;\/blog\/uploads\/shared-files\/1347\/?range_node_core-1.zip&amp;download=1&quot; class=&quot;shared-files-download-button&quot;  download&gt;Download&lt;\/a&gt;&lt;\/div&gt;&lt;div class=&quot;shared-files-edit-actions&quot;&gt;&lt;\/div&gt;&lt;\/div&gt;&lt;div class=&quot;shared-files-main-elements-featured-image&quot;&gt;&lt;img width=&quot;150&quot; height=&quot;150&quot; src=&quot;https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc01a-150x150.jpg&quot; class=&quot;attachment-thumbnail size-thumbnail wp-post-image&quot; alt=&quot;&quot; \/&gt;&lt;\/div&gt;&lt;\/div&gt;&lt;\/li&gt;&lt;\/ul&gt;&lt;\/div&gt;&lt;\/div&gt;\"><div class=\"shared-files-embed-6a330e8ca001e shared-files-main-container\" data-elem-class=\"shared-files-embed-6a330e8ca001e\" data-search-type=\"0\" data-post-id=\"1347\"><div class=\"shared-files-search\"><ul class=\"shared-files-main-file-list\"><li class=\"shared-files-card-1347\"><div class=\"shared-files-main-elements\"><div class=\"shared-files-main-elements-left\" style=\"background-image: url(https:\/\/salvador.mata.com.mx\/blog\/wp-content\/plugins\/shared-files\/img\/2020\/zip.svg);\"><\/div><div class=\"shared-files-main-elements-right\"><a class=\"shared-files-file-title\"  data-file-type=\"\"  data-file-url=\"\/blog\/uploads\/shared-files\/1347\/?range_node_core-1.zip\"  data-external-url=\"\"  data-image-url=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc01a-1024x316.jpg\" href=\"\/blog\/uploads\/shared-files\/1347\/?range_node_core-1.zip\" target=\"_blank\">Range Node Core<\/a><span class=\"shared-file-size\">210.81 KB<\/span><span class=\"shared-file-date\">June 17, 2026<\/span><div class=\"shared-files-download-counter\"><span>Downloads: 2<\/span><\/div><div class=\"shared-files-download-button-container\"><a href=\"\/blog\/uploads\/shared-files\/1347\/?range_node_core-1.zip&download=1\" class=\"shared-files-download-button\"  download>Download<\/a><\/div><div class=\"shared-files-edit-actions\"><\/div><\/div><div class=\"shared-files-main-elements-featured-image\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc01a-150x150.jpg\" class=\"attachment-thumbnail size-thumbnail wp-post-image\" alt=\"\" \/><\/div><\/div><\/li><\/ul><\/div><\/div><\/span><\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<p><span style=\"color: #008000;\"><strong>Actualmente el sistema ya incluye cosas como:<\/strong><\/span><\/p>\n<ul>\n<li><span style=\"color: #ff9900;\">FPS tools<\/span><\/li>\n<li><span style=\"color: #ff9900;\">veh\u00edculos<\/span><\/li>\n<li><span style=\"color: #ff9900;\">IA<\/span><\/li>\n<li><span style=\"color: #ff9900;\">FSM<\/span><\/li>\n<li><span style=\"color: #ff9900;\">tween<\/span><\/li>\n<li><span style=\"color: #ff9900;\">dialogue<\/span><\/li>\n<li><span style=\"color: #ff9900;\">pooling<\/span><\/li>\n<li><span style=\"color: #ff9900;\">save system<\/span><\/li>\n<li><span style=\"color: #ff9900;\">nodos espec\u00edficos para f\u00edsica<\/span><\/li>\n<li><span style=\"color: #ff9900;\">regeneraci\u00f3n autom\u00e1tica<\/span><\/li>\n<li><span style=\"color: #ff9900;\">modo debug<\/span><\/li>\n<li><span style=\"color: #ff9900;\">y varias herramientas m\u00e1s, como su propio exportador a ejecutable.<\/span><\/li>\n<\/ul>\n<p>La intenci\u00f3n nunca fue reemplazar <strong>Python<\/strong>, al contrario. La idea es aprovechar toda la flexibilidad de Python, pero hacer m\u00e1s r\u00e1pido construir sistemas gameplay visualmente.<\/p>\n<p>Y justo ah\u00ed fue donde empec\u00e9 a pensar en c\u00f3mo normalmente trabajamos en Range Engine.<\/p>\n<hr \/>\n<h1>\ud83e\udde0 <span style=\"color: #008000;\">Python en Range Engine<\/span><\/h1>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1332\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/python.jpg\" alt=\"\" width=\"491\" height=\"315\" srcset=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/python.jpg 491w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/python-300x192.jpg 300w\" sizes=\"auto, (max-width: 491px) 100vw, 491px\" \/><\/p>\n<p>Una de las cosas m\u00e1s poderosas de <strong>Range<\/strong> es que puedes hacer pr\u00e1cticamente cualquier cosa usando <strong>Python<\/strong> y eso abre much\u00edsimas posibilidades, pero tambi\u00e9n hay una realidad: Para mucha gente que se inicia en este mundo de desarrollo de videojuegos, <em>Python<\/em> puede convertirse en una barrera de entrada ya que no todos llegan al motor queriendo escribir c\u00f3digo desde el d\u00eda uno.<\/p>\n<p>Muchas personas solo quieren experimentar, prototipar ideas o aprender c\u00f3mo funciona un juego sin tener que construir sistemas completos desde cero.<\/p>\n<hr \/>\n<h1>\ud83e\uddf1<span style=\"color: #008000;\"> Logic Bricks<\/span><\/h1>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1333\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/logicBricks.jpg\" alt=\"\" width=\"1013\" height=\"962\" srcset=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/logicBricks.jpg 1013w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/logicBricks-300x285.jpg 300w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/logicBricks-768x729.jpg 768w\" sizes=\"auto, (max-width: 1013px) 100vw, 1013px\" \/><\/p>\n<hr \/>\n<p>Y ah\u00ed es donde hist\u00f3ricamente entran los <strong>Logic Bricks<\/strong>.<\/p>\n<p><span style=\"color: #008000;\">Tienen ventajas reales:<\/span><\/p>\n<ul>\n<li><span style=\"color: #ff9900;\">son visuales<\/span><\/li>\n<li><span style=\"color: #ff9900;\">r\u00e1pidos para prototipos<\/span><\/li>\n<li><span style=\"color: #ff9900;\">f\u00e1ciles de entender al inicio<\/span><\/li>\n<\/ul>\n<p><span style=\"color: #008000;\">Pero conforme los proyectos crecen, tambi\u00e9n empiezan a aparecer varios problemas:<\/span><\/p>\n<ul>\n<li><span style=\"color: #ff9900;\">organizar l\u00f3gica compleja se vuelve dif\u00edcil<\/span><\/li>\n<li><span style=\"color: #ff9900;\">mantener muchos bricks puede ser inc\u00f3modo<\/span><\/li>\n<li><span style=\"color: #ff9900;\">terminas limitado por lo que el sistema ofrece f\u00e1cilmente<\/span><\/li>\n<\/ul>\n<p>Y en cuanto quieres hacer algo m\u00e1s elaborado\u2026 normalmente tu \u00fanica opci\u00f3n es aprender Python, y eso para algunos significa volver a la barrera que los detuvo al principio.<\/p>\n<hr \/>\n<h1>\ud83d\udd27<span style=\"color: #008000;\"> <strong>Otros sistemas de nodos<\/strong><\/span><\/h1>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1334\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/logicNodes-x-e1779393760729.png\" alt=\"\" width=\"1054\" height=\"547\" srcset=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/logicNodes-x-e1779393760729.png 1054w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/logicNodes-x-e1779393760729-300x156.png 300w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/logicNodes-x-e1779393760729-1024x531.png 1024w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/logicNodes-x-e1779393760729-768x399.png 768w\" sizes=\"auto, (max-width: 1054px) 100vw, 1054px\" \/><\/p>\n<p>Despu\u00e9s aparecieron varios addons y sistemas h\u00edbridos que intentan mejorar ese workflow. Muchos generan scripts autom\u00e1ticamente y usan internamente Logic Bricks para simplificar tareas comunes.<\/p>\n<p><span style=\"color: #008000;\">Y honestamente, tienen ventajas importantes:<\/span><\/p>\n<ul>\n<li><span style=\"color: #ff9900;\">aceleran workflows<\/span><\/li>\n<li><span style=\"color: #ff9900;\">reducen trabajo repetitivo<\/span><\/li>\n<li><span style=\"color: #ff9900;\">hacen m\u00e1s accesible el scripting<\/span><\/li>\n<li><span style=\"color: #ff9900;\">ayudan mucho a usuarios nuevos<\/span><\/li>\n<\/ul>\n<p><span style=\"color: #008000;\">Pero normalmente siguen dependiendo de:<\/span><\/p>\n<ul>\n<li><span style=\"color: #ff9900;\">Logic Bricks<\/span><\/li>\n<li><span style=\"color: #ff9900;\">capas intermedias<\/span><\/li>\n<li><span style=\"color: #ff9900;\">o sistemas que interpretan el grafo en runtime<\/span><\/li>\n<\/ul>\n<hr \/>\n<h1>\u26a1 <span style=\"color: #008000;\">Lo que intenta hacer diferente RNC<\/span><\/h1>\n<h3 style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1335\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/rnc-phycomp.jpg\" alt=\"\" width=\"1024\" height=\"487\" srcset=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/rnc-phycomp.jpg 1024w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/rnc-phycomp-300x143.jpg 300w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/rnc-phycomp-768x365.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/h3>\n<p>Y ah\u00ed fue donde empez\u00f3 la idea principal de RNC: \u00bfqu\u00e9 pasar\u00eda si el grafo NO se ejecutara en runtime? En lugar de interpretar nodos frame por frame, <span style=\"color: #008000;\"><strong>RNC<\/strong><\/span> <strong>compila<\/strong> todo el <span style=\"color: #008000;\"><strong>NodeTree<\/strong> <\/span>a <span style=\"color: #008000;\"><strong>c\u00f3digo Python<\/strong><\/span> real.<\/p>\n<p>Cuando presionas Play:<\/p>\n<ul>\n<li><span style=\"color: #ff9900;\">el grafo deja de existir<\/span><\/li>\n<li><span style=\"color: #ff9900;\">no hay interpretaci\u00f3n visual<\/span><\/li>\n<li><span style=\"color: #ff9900;\">no hay controllers conectados por todos lados<\/span><\/li>\n<\/ul>\n<p>Todo termina convertido en c\u00f3digo ejecut\u00e1ndose directamente dentro del motor.<\/p>\n<hr \/>\n<h1>\ud83d\udcc4 <span style=\"color: #008000;\">El c\u00f3digo generado es visible<\/span><\/h1>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1351\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc04.jpg\" alt=\"\" width=\"1024\" height=\"434\" srcset=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc04.jpg 1024w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc04-300x127.jpg 300w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc04-768x326.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>El sistema guarda el resultado de cada compilaci\u00f3n en:<\/p>\n<p><code><strong>rnc_generated_logic.py<\/strong><\/code><\/p>\n<p>As\u00ed puedes inspeccionar exactamente qu\u00e9 est\u00e1 ejecut\u00e1ndose internamente.<\/p>\n<hr \/>\n<h1>\ud83e\udde9<span style=\"color: #008000;\"> Dos tipos de nodos<\/span><\/h1>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1338\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/nodetype.jpg\" alt=\"\" width=\"1132\" height=\"573\" srcset=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/nodetype.jpg 1132w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/nodetype-300x152.jpg 300w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/nodetype-1024x518.jpg 1024w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/nodetype-768x389.jpg 768w\" sizes=\"auto, (max-width: 1132px) 100vw, 1132px\" \/><\/p>\n<p>Actualmente RNC mezcla dos enfoques:<\/p>\n<h3><span style=\"color: #008000;\">Nodos peque\u00f1os<\/span><\/h3>\n<p>Hacen una sola cosa:<\/p>\n<ul>\n<li><span style=\"color: #ff9900;\">mover<\/span><\/li>\n<li><span style=\"color: #ff9900;\">rotar<\/span><\/li>\n<li><span style=\"color: #ff9900;\">comparar<\/span><\/li>\n<li><span style=\"color: #ff9900;\">leer propiedades<\/span><\/li>\n<li><span style=\"color: #ff9900;\">asignar valores a propiedades<\/span><\/li>\n<\/ul>\n<p>Son simples y combinables y puedes generar sistemas complejos.<\/p>\n<h3><span style=\"color: #008000;\">Nodos grandes (monol\u00edticos)<\/span><\/h3>\n<p>FPS, veh\u00edculos, IA, setups completos\u2026<\/p>\n<p>Estos encapsulan sistemas m\u00e1s complejos que normalmente requieren bastante c\u00f3digo y un orden interno muy espec\u00edfico.<\/p>\n<p>La idea es que:<\/p>\n<ul>\n<li><span style=\"color: #ff9900;\">los nodos grandes te den velocidad de prototipado<\/span><\/li>\n<li><span style=\"color: #ff9900;\">los peque\u00f1os te den control<\/span><\/li>\n<\/ul>\n<hr \/>\n<h1>\ud83e\udde0 <span style=\"color: #008000;\">Arquitectura interna<\/span><\/h1>\n<pre><code class=\"language-text\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1336\" src=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/modular.jpg\" alt=\"\" width=\"1024\" height=\"487\" srcset=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/modular.jpg 1024w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/modular-300x143.jpg 300w, https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/05\/modular-768x365.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\r\n<\/code><\/pre>\n<p><span style=\"color: #008000;\">\u00daltimamente tambi\u00e9n he estado trabajando bastante en la arquitectura interna del compiler:<\/span><\/p>\n<ul>\n<li><span style=\"color: #ff9900;\">separaci\u00f3n PURE \/ IMPURE<\/span><\/li>\n<li><span style=\"color: #ff9900;\">compilaci\u00f3n m\u00e1s estructurada<\/span><\/li>\n<li><span style=\"color: #ff9900;\">modularizaci\u00f3n de nodos grandes<\/span><\/li>\n<li><span style=\"color: #ff9900;\">reducci\u00f3n de overhead<\/span><\/li>\n<li><span style=\"color: #ff9900;\">limpieza del runtime<\/span><\/li>\n<li><span style=\"color: #ff9900;\">refactorizaci\u00f3n del sistema de nodos<\/span><\/li>\n<\/ul>\n<p>Todav\u00eda hay bastante trabajo por hacer \ud83d\ude05.<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<h1>\ud83e\uddea <span style=\"color: #008000;\">Proyecto personal convertido en herramienta p\u00fablica<\/span><\/h1>\n<p>Realmente todo esto comenz\u00f3 como una herramienta para mis propios proyectos pero conforme fue creciendo pens\u00e9 que tal vez tambi\u00e9n podr\u00eda ser \u00fatil para otras personas que tengan inter\u00e9s en el desarrollo de aplicaciones interactivas o videojuegos, as\u00ed que decid\u00ed compartirlo.<\/p>\n<p>No lo veo como un sistema \u201cterminado\u201d y tampoco est\u00e1 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.<\/p>\n<hr \/>\n<h1>\ud83d\udcac Feedback<\/h1>\n<p><span style=\"color: #008000;\">Y justo por eso me interesa mucho escuchar feedback:<\/span><\/p>\n<ul>\n<li><span style=\"color: #ff9900;\">qu\u00e9 workflows sienten inc\u00f3modos actualmente<\/span><\/li>\n<li><span style=\"color: #ff9900;\">qu\u00e9 tipos de nodos les gustar\u00eda ver<\/span><\/li>\n<li><span style=\"color: #ff9900;\">qu\u00e9 sistemas creen que ser\u00edan \u00fatiles<\/span><\/li>\n<li><span style=\"color: #ff9900;\">qu\u00e9 problemas encuentran trabajando en Range<\/span><\/li>\n<\/ul>\n<p>Porque muchas de las mejores ideas salen precisamente de uso real.<\/p>\n<p>Si alguien quiere probarlo, dar feedback o simplemente platicar sobre ideas para visual scripting en Range Engine, me encantar\u00eda leerlos \ud83d\udc40<\/p>\n<hr \/>\n<h1>\ud83d\udcac Antes de iniciar con RNC<\/h1>\n<p class=\"isSelectedEnd\">Antes de utilizar <strong>Range Node Core (RNC)<\/strong>, es importante familiarizarse con algunos conceptos b\u00e1sicos. El siguiente ejercicio te permitir\u00e1 verificar que el addon est\u00e1 correctamente instalado y comprender el flujo de trabajo fundamental de RNC.<\/p>\n<h3><span style=\"color: #008000;\">Primeros pasos<\/span><\/h3>\n<ol start=\"1\" data-spread=\"false\">\n<li><span style=\"color: #ff9900;\">Activa el addon y abre el <strong>Editor de Nodos<\/strong>.<\/span><\/li>\n<li><span style=\"color: #ff9900;\">Selecciona un objeto de la escena y crea un nuevo <strong>NodeTree<\/strong>.<\/span><\/li>\n<li><span style=\"color: #ff9900;\">A\u00f1ade un nodo <strong>On Update<\/strong> y un nodo <strong>Transform Object<\/strong>.<\/span><\/li>\n<li><span style=\"color: #ff9900;\">Configura el nodo <strong>Transform Object<\/strong> en modo <strong>Rotate<\/strong> y establece el valor <strong>Z = 0.3<\/strong>.<\/span><\/li>\n<li><span style=\"color: #ff9900;\">En el panel lateral derecho del editor de nodos, dentro de la secci\u00f3n <strong>Range Node Core<\/strong>, localiza el bot\u00f3n <strong>Info Componente<\/strong>. Tambi\u00e9n puedes encontrar esta opci\u00f3n dentro del nodo <strong>On Update<\/strong>.<\/span><\/li>\n<li><span style=\"color: #ff9900;\">Presiona el bot\u00f3n para copiar la informaci\u00f3n del componente asociado al NodeTree actual.<\/span><\/li>\n<li><span style=\"color: #ff9900;\">En la secci\u00f3n <strong>Game Components<\/strong>, localiza el componente llamado <strong>module<\/strong> y elim\u00ednalo haciendo clic en el bot\u00f3n <strong>X<\/strong>.<\/span><\/li>\n<li><span style=\"color: #ff9900;\">Presiona <strong>Add RNC Component<\/strong>.<\/span><\/li>\n<li><span style=\"color: #ff9900;\">En la ventana emergente que aparecer\u00e1, utiliza <strong>Ctrl + V<\/strong> para pegar la informaci\u00f3n del componente previamente copiada.<\/span><\/li>\n<li><span style=\"color: #ff9900;\">Haz clic en <strong>Assign NodeTree<\/strong> para vincular el componente con el NodeTree actual.<\/span><\/li>\n<li><span style=\"color: #ff9900;\">Presiona la tecla <strong>P<\/strong> o el bot\u00f3n <strong>Play<\/strong> para ejecutar el motor de juego.<\/span><\/li>\n<\/ol>\n<p style=\"text-align: center;\"><code>\n<div class=\"wp-block-presto-player-reusable-edit\"><!--presto-player:video_id=31--><figure class=\"wp-block-video presto-block-video  presto-provider-youtube\" style=\"--plyr-color-main: var(--presto-player-highlight-color, #18b103); --presto-player-logo-width: 150px; \">\n\t<presto-player \n\t\tpreset='{&quot;id&quot;:1,&quot;name&quot;:&quot;Default&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;icon&quot;:&quot;format-video&quot;,&quot;skin&quot;:&quot;modern&quot;,&quot;play-large&quot;:true,&quot;rewind&quot;:true,&quot;play&quot;:true,&quot;fast-forward&quot;:true,&quot;progress&quot;:true,&quot;current-time&quot;:true,&quot;mute&quot;:true,&quot;volume&quot;:true,&quot;speed&quot;:false,&quot;pip&quot;:false,&quot;fullscreen&quot;:true,&quot;captions&quot;:false,&quot;reset_on_end&quot;:true,&quot;auto_hide&quot;:true,&quot;show_time_elapsed&quot;:false,&quot;captions_enabled&quot;:false,&quot;save_player_position&quot;:true,&quot;sticky_scroll&quot;:false,&quot;sticky_scroll_position&quot;:&quot;bottom right&quot;,&quot;on_video_end&quot;:&quot;select&quot;,&quot;play_video_viewport&quot;:false,&quot;hide_youtube&quot;:false,&quot;lazy_load_youtube&quot;:false,&quot;hide_logo&quot;:false,&quot;border_radius&quot;:0,&quot;caption_style&quot;:&quot;&quot;,&quot;caption_background&quot;:&quot;&quot;,&quot;is_locked&quot;:true,&quot;cta&quot;:[&quot;&quot;],&quot;watermark&quot;:[&quot;&quot;],&quot;search&quot;:[&quot;&quot;],&quot;email_collection&quot;:[&quot;&quot;],&quot;action_bar&quot;:[&quot;&quot;],&quot;created_by&quot;:1,&quot;created_at&quot;:&quot;2025-10-24 15:24:09&quot;,&quot;updated_at&quot;:&quot;2025-10-24 15:24:09&quot;,&quot;deleted_at&quot;:&quot;&quot;}'\n\t\tbranding='{&quot;logo&quot;:&quot;&quot;,&quot;logo_width&quot;:150,&quot;color&quot;:&quot;#18b103&quot;,&quot;player_css&quot;:&quot;&quot;}'\n\t\tchapters='[]'\n\t\toverlays='[]'\n\t\ttracks='[]'\n\t\tblock-attributes='{&quot;playsInline&quot;:true,&quot;id&quot;:31,&quot;src&quot;:&quot;https:\\\/\\\/youtu.be\\\/yFGKkFQWpmE&quot;,&quot;preset&quot;:1,&quot;video_id&quot;:&quot;yFGKkFQWpmE&quot;,&quot;visibility&quot;:&quot;public&quot;,&quot;color&quot;:&quot;#00b3ff&quot;,&quot;mutedPreview&quot;:{&quot;enabled&quot;:false,&quot;captions&quot;:false},&quot;mutedOverlay&quot;:{&quot;enabled&quot;:false,&quot;src&quot;:&quot;&quot;,&quot;width&quot;:200,&quot;focalPoint&quot;:{&quot;x&quot;:0.5,&quot;y&quot;:0.5}},&quot;mutedOverlayType&quot;:&quot;text&quot;,&quot;mutedOverlayText&quot;:&quot;Click to play&quot;,&quot;mutedOverlayImageWidth&quot;:200,&quot;chapters&quot;:[],&quot;overlays&quot;:[],&quot;tracks&quot;:[],&quot;title&quot;:&quot;https:\\\/\\\/youtu.be\\\/yFGKkFQWpmE&quot;}'\n\t\tanalytics=''\n\t\tautomations\t\tprovider='youtube'\n\t\t\t\tid=\"presto-player-1\"\n\t\tsrc=\"\/\/www.youtube.com\/embed\/yFGKkFQWpmE?iv_load_policy=3&amp;modestbranding=1&amp;playinline=1&amp;showinfo=0&amp;rel=0&amp;enablejsapi=1\"\n\t\tmedia-title=\"https:\/\/youtu.be\/yFGKkFQWpmE\"\n\t\tcss=\"\"\n\t\tclass=\"presto-video-id-31 presto-preset-id-1 skin-modern\"\n\t\tskin=\"modern\" \n\t\ticon-url=\"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/plugins\/presto-player\/img\/sprite.svg\" \n\t\tpreload=\"\" \n\t\tposter=\"\"\n\t\tyoutube=\"{&quot;noCookie&quot;:false,&quot;channelId&quot;:&quot;&quot;,&quot;show_count&quot;:false}\"\n\t\tprovider-video-id=\"yFGKkFQWpmE\"\n\t\tvideo-id=\"31\"\n\t\t\t\tvideo-attributes='{}'\n\t\tplaysinline\t\t\t\t>\n\t\t\n    <div class=\"presto-iframe-fallback-container\">\n        <iframe style=\"width: 100%\" title=\"Youtube Video\" class=\"presto-fallback-iframe\" id=\"presto-iframe-fallback-1\" data-src=\"https:\/\/www.youtube.com\/embed\/yFGKkFQWpmE?iv_load_policy=3&amp;modestbranding=1&amp;playsinline=1&amp;showinfo=0&amp;rel=0&amp;enablejsapi=1\" allowfullscreen allowtransparency allow=\"autoplay\"><\/iframe>\n    <\/div>\n\n\t<\/presto-player>\n<\/figure><\/div>\n<\/code><\/p>\n<p class=\"isSelectedEnd\">Si todo est\u00e1 configurado correctamente, ver\u00e1s que el cubo comienza a rotar.<\/p>\n<h3><span style=\"color: #008000;\">\u00bfQu\u00e9 sigue?<\/span><\/h3>\n<p class=\"isSelectedEnd\">Con estos sencillos pasos ya habr\u00e1s creado tu primer comportamiento utilizando <strong>Range Node Core<\/strong>. A partir de aqu\u00ed podr\u00e1s construir sistemas mucho m\u00e1s avanzados combinando nodos y componentes.<\/p>\n<p class=\"isSelectedEnd\">Te recomiendo consultar <a href=\"https:\/\/mataii.github.io\/Range-Node-Core-Docs\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #008000;\"><strong>el manual oficial<\/strong><\/span><\/a> para conocer en detalle cada nodo disponible y aprovechar al m\u00e1ximo las capacidades de RNC:<\/p>\n<p><a href=\"https:\/\/mataii.github.io\/Range-Node-Core-Docs\/\">https:\/\/mataii.github.io\/Range-Node-Core-Docs\/<\/a><\/p>\n<p>P.d: Agradecimiento a mi amigo <a href=\"https:\/\/www.twitch.tv\/madnux\/videos\" target=\"_blank\" rel=\"noopener\"><strong>Madnux<\/strong> <\/a>por su contribuci\u00f3n en nodos \ud83d\ude42<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>He estado trabajando en un addon para Range Engine llamado Range Node Core (RNC), la idea detr\u00e1s del proyecto es bastante simple: Crear un sistema de visual scripting que compile nodos a c\u00f3digo Python real ejecutado directamente dentro de un KX_PythonComponent. O sea, cuando presionas Play, lo que corre ya no son nodos, no intervienen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1355,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[183],"tags":[196],"class_list":["post-1326","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-addons","tag-addons"],"jetpack_featured_media_url":"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/06\/rnc01a.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/1326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=1326"}],"version-history":[{"count":18,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/1326\/revisions"}],"predecessor-version":[{"id":1362,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/1326\/revisions\/1362"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/media\/1355"}],"wp:attachment":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=1326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=1326"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=1326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}