🧠🎮 Cómo programar en Range Game Engine
Este es un excelente tutorial para quienes quieren empezar a practicar scripting en Range Game Engine (basado en Blender 2.79, NO UPBGE) 🚫🆙.
✍️ Por wkk (post original en Blender Artist)
📘 Python Tutorial: How to script in Range
🚀 Introducción (no tan rápida) al scripting en Python para Range
Hay bastantes cosas que revisar, lo siento… 😅
Pero no es tan difícil. ¡Sé valiente! 💪🐍
🧱 Logic Brick: Controlador Python

Un controlador Python es básicamente un logic brick que puedes programar usando scripts en Python 🐍, dentro de Range Game Engine.
Si observas cómo se comporta normalmente un controlador, hacen cosas bastante simples:
- 🔗 Controlador AND: Cuando todos los sensores conectados están activos, activa todos los actuadores.
- ➕ Controlador OR: Cuando uno de los sensores está activo, activa todos los actuadores.
- 🚫 Controlador NAND: Cuando ningún sensor está activo, activa los actuadores.
- ❌ Controlador XOR: Cuando solo uno de los sensores está activo, activa los actuadores… etc.
Todas estas son compuertas lógicas básicas, pero… 🤔
¿qué pasa si quieres más control dentro de Range?
Por ejemplo:
- ✔️ Ver si un sensor está activo
- 🔎 Revisar valores internos del sensor
Ahí es cuando usas un controlador Python 🐍✨

⚠️ Importante:
Necesitas al menos un sensor conectado al controlador para que se ejecute.
Puede ser cualquier sensor, pero el disparador siempre viene de uno.
✍️ Escribiendo tu primer script en Range
Para escribir un script, abre el Editor de Texto de Blender 📝 (usado por Range) y empieza a escribir.

Un pequeño aviso: cuando la gente ve código suele decir:
“Eso es de hackers, es demasiado complejo” 😱
Pero no temas 😌
Los programas están pensados para escribirse usando palabras en inglés, como una receta 🍳.
Es solo una lista de instrucciones para ir de un estado A a un estado B.
import Range # módulo para interactuar con Range Game Engine # Obtenemos el controlador actual controller = Range.logic.getCurrentController() # El objeto que posee este controlador owner = controller.owner # Movemos el cubo hacia arriba owner.worldPosition.z += 0.1 # Lo hacemos rotar owner.applyRotation([0, 0, 0.1]) # [x, y, z]
Aunque estemos usando Range, la API sigue siendo compatible con el BGE clásico, por lo que este código funciona sin problemas 💡, pero si debes tomar en cuenta que debes cambiar el import de “Import bge” a “Import Range”, y usar “Range” cuando se asigna el controlador.
🤷♂️ “No sé Python para empezar…”
Tal vez valga la pena jugar un poco con Python por separado, al menos para cubrir lo básico 🧩.
⭐ Recomendación principal:
https://jakevdp.github.io/WhirlwindTourOfPython/
Otros recursos útiles 📚:
https://www.techbeamers.com/python-tutorial-step-by-step/
Y Google también ayuda bastante 😄:
https://developers.google.com/edu/python/set-up
👉 Elige uno y tómate tu tiempo.
Si haces esto, estarás listo para lanzar tus primeros hechizos en Range 🧙♂️✨🎮.
🐞 Cómo ver qué falló (debugging) en Range
⚠️ ¡MUY IMPORTANTE!
Al escribir scripts en Range, cometer errores es totalmente normal 😄.
🖥️ Ver la consola
- Windows:
Window > Toggle Console - Linux / Mac: Ejecuta Blender/Range desde una terminal
Ahí verás errores como:
Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined
Esto indica que estás usando una variable no definida ❌.
🔴 Al inicio verás muchos SyntaxError.
La línea marcada no siempre es el origen real del problema.
👉 Respira, revisa y sigue 🙂.
📚 ¿Dónde encontrar funciones y variables para Python en Range?
Esta es la documentacion de Range Game Engine 👇
https://rangeengine.tech/api/16/html/index.html
Para comenzar, revisa el módulo bge.logic:
https://rangeengine.tech/api/16/html/api/Range.logic.html
Ahí se explica qué puedes hacer y cómo hacerlo dentro de Range.
🔍 Ejemplo práctico de búsqueda
🧠 “Quiero mover un objeto en Range” (Range game engine API aun no esta cocnluida, pero la de Blender 2.79 sirve)
Documentación principal:
https://docs.blender.org/api/2.79/
Buscador 🔎: “move”
https://docs.blender.org/api/2.79/search.html
Resultado interesante 👀:

imagen
Página clave:
https://docs.blender.org/api/2.79/KX_GameObject.html
💡 Tip importante en Range: muchas funciones aceptan listas de 3 valores:
i_am_a_list = [0, 1, 2]
object.applyMovement(i_am_a_list)
Todo se reduce a:
🧪 experimentar
📖 leer docs
🔁 repetir
📂 Usar módulos Python desde tu disco en Range
Para proyectos medianos o grandes en Range, necesitas orden 🗂️.
Estructura recomendada:
game_folder/
├── game.blend
├── script_1.py
├── script_2.py
⚠️ Importante: Siempre usa
.py
Importar módulos:
import script_1
script_1.some_function()
Usando carpetas:
game_folder/
└── script_folder/
├── script_1.py
└── script_2.py
from script_folder import script_1
😛 Sí… el editor de texto de Blender no es el mejor.
⚙️ Llamar funciones desde un controlador Python en Range
Cambia el controlador Python de Script a Module:

Ejemplo:
# scripts/controllers.py
def rotate(controller):
owner = controller.owner
owner.applyRotation([0, 0, 0.1])
En el controlador escribe:
scripts.controllers.rotate
✨ Así Range ejecuta directamente la función.
🧠 ¿Y ahora qué?
Bienvenido al desarrollo real con Range Game Engine 😄:
- 📖 Leer documentación
- 🐌 Optimizar código
- 🖨️ Usar
print()para depurar - 😵💫 Desesperarte un poco
Pero Range + Python te permite hacer MUCHÍSIMAS cosas 🎮🔥.
No es fácil ❌
Pero vale totalmente la pena ✅
La programación es un juego de paciencia y perseverancia 🧘♂️💻.
🍀 ¡Buena suerte y feliz scripting en Range!





Leave a Reply