🧠🎮 Cómo programar en Range Game Engine?

 


🧠🎮 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 🐍✨

image

⚠️ 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 👀:

image

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:

image

Ejemplo:

# scripts/controllers.py

def rotate(controller):
    owner = controller.owner
    owner.applyRotation([0, 0, 0.1])

En el controlador escribe:

scripts.controllers.rotate

image

✨ 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

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