Quieres hacer una novela visual o un juego de aventura de texto. Pero Unity y Godot se sienten excesivos. Ahí es donde entra Ren'Py.
Ren'Py es un motor de juegos basado en Python construido específicamente para juegos centrados en texto. Si sabes programar, puedes extenderlo con sistemas personalizados como gestión de estadísticas o exploración de mapas usando Python puro. Impulsa títulos comerciales como DDLC (Doki Doki Literature Club!) y miles de juegos independientes en itch.io.
Esta guía te lleva a través de Ren'Py 8.5.2 (lanzado en enero de 2026) — desde la instalación del SDK hasta compilar tu primer archivo de juego distribuible.
Qué es Ren'Py
Ren'Py es un motor de juegos de código abierto para novelas visuales y aventuras de texto. Lanzado por primera vez en 2004, tiene más de 20 años de historia.
Así se compara con otros motores:
| Motor | Mejor para | Curva de aprendizaje |
|---|---|---|
| Ren'Py | Novelas visuales, aventuras de texto | Baja (basado en Python) |
| Unity | Juegos 2D/3D | Alta (C#, editor) |
| Godot | Juegos 2D/3D | Media (GDScript) |
| RPG Maker | RPGs | Baja (basado en GUI) |
La fortaleza de Ren'Py es que la visualización de texto, opciones de ramificación, guardar/cargar y registro de diálogos están incorporados desde el primer día. No tienes que construir esto desde cero.
Descarga e instala el SDK
Descarga el SDK del sitio oficial de Ren'Py. La última versión estable a marzo de 2026 es 8.5.2.
Descarga renpy-8.5.2-sdk.7z.exe (~116 MB) desde la página de descarga.
Pasos de instalación:
- Haz doble clic en el
.7z.exepara extraerlo - Elige una ruta de extracción (ej.,
C:\renpy\renpy-8.5.2-sdk) - Abre la carpeta extraída y haz doble clic en
renpy.exepara lanzar el launcher de Ren'Py
Si el launcher se abre, estás listo.
Estructura del directorio del SDK
La carpeta del SDK extraída contiene lo siguiente:
renpy-8.5.2-sdk/
├── renpy.exe / renpy.sh # Ejecutable del launcher
├── lib/ # Entornos Python específicos por plataforma
├── renpy/ # Código fuente del motor Ren'Py
├── launcher/ # Aplicación del launcher
├── tutorial/ # Juego tutorial oficial
└── the_question/ # Juego de ejemplo "The Question"
tutorial/ y the_question/ son proyectos de ejemplo que puedes lanzar directamente desde el launcher de Ren'Py. Pruébalos para tener una idea de cómo funcionan las cosas.
Configura tu editor de código
Los scripts de Ren'Py (archivos .rpy) son texto plano. Si usas VS Code, instala la extensión oficial para resaltado de sintaxis y autocompletado.
Pasos:
- Abre el panel de Extensiones (
Ctrl+Shift+X/Cmd+Shift+X) - Busca "Ren'Py"
- Instala Ren'Py Language (Official) (Marketplace)
Esto te da:
- Resaltado de sintaxis para archivos
.rpy - Autocompletado de palabras clave
- Ir a Definición (
F12) - Detección de errores de indentación
En el launcher de Ren'Py, ve a "preferences" → "Text Editor" y establece la ruta de tu editor. Esto te permite abrir archivos .rpy directamente desde el launcher.
Crea tu primer proyecto
Crea un nuevo proyecto desde el launcher:
- Haz clic en "Create New Project"
- Ingresa un nombre de proyecto (ej.,
mygame) - Selecciona una resolución (1280x720 es lo recomendado. Usa 1920x1080 si quieres Full HD)
- Elige un esquema de colores (colores de acento y fondo — puedes cambiarlos después en
gui.rpy)
La carpeta mygame se generará en segundos.
Estructura del proyecto
mygame/
└── game/
├── audio/ # BGM y efectos de sonido
├── gui/ # Imágenes de GUI (auto-generadas)
├── images/ # Fondos y sprites de personajes
├── tl/ # Archivos de traducción
├── gui.rpy # Configuración de GUI (fuentes, colores, diseño)
├── options.rpy # Configuración del juego (título, resolución, config de compilación)
├── screens.rpy # Definiciones de pantalla (menús, pantalla de guardado, etc.)
└── script.rpy # Script principal (aquí va tu juego)
Escribirás tu código de juego principalmente en script.rpy. A medida que tu proyecto crezca, puedes dividir el código en múltiples archivos .rpy — Ren'Py carga automáticamente todos los archivos .rpy en la carpeta game/.
Escribe tu primera escena
Abre game/script.rpy y reemplaza el código predeterminado con esto:
# Character definitions
define s = Character("Sakura", who_color="#c8ffc8")
define y = Character("Yuki", who_color="#c8c8ff")
# Game start
label start:
# Show background
scene bg room
with fade
# Dialogue
s "We finally finished the game."
y "It was a long road... but it's running."
# Choices
menu:
s "What should we do next?"
"Add more features":
jump add_feature
"Take a break":
jump rest
label add_feature:
y "Alright, let's implement the map exploration system."
"The two continued developing late into the night."
return
label rest:
s "Let's call it a day."
"They decided to rest and pick things up tomorrow."
return
Desglosemos esto.
Definiciones de personajes
define s = Character("Sakura", who_color="#c8ffc8")
define declara una constante que no cambia durante el juego. Character crea un objeto de personaje con un nombre de visualización y color. Una vez definido, s "diálogo" muestra el texto con el nombre del personaje.
Labels y jumps
label start:
...
label add_feature:
...
return
label marca un punto en tu script. label start: es un nombre reservado — es donde Ren'Py comienza la ejecución. jump se mueve entre labels, y return termina el juego.
Mostrando fondos
scene bg room
with fade
scene limpia la pantalla y muestra una imagen de fondo. with fade agrega un efecto de aparición gradual. Ren'Py busca automáticamente archivos coincidentes en game/images/ — en este caso, un archivo llamado bg room.png (los espacios en el nombre del archivo corresponden a espacios en el nombre de la imagen). Consulta la documentación oficial de visualización de imágenes para más detalles.
Opciones y ramificaciones
menu:
s "What should we do next?"
"Add more features":
jump add_feature
"Take a break":
jump rest
El bloque menu: muestra opciones al jugador. El código indentado bajo cada opción se ejecuta cuando se selecciona esa opción. Usar jump para ir a diferentes labels crea líneas de historia ramificadas.
Gestión de flags con variables
Para rastrear los resultados de las opciones, declara variables con default:
# Variables that change during gameplay use default
default motivation = 0
label start:
menu:
"Work hard":
$ motivation += 1
jump next
"Rest":
jump next
label next:
if motivation > 0:
"You're full of energy!"
else:
"You seem a bit tired."
return
default declara una variable que persiste correctamente a través de guardar/cargar. $ ejecuta una sola línea de código Python.
Prueba de ejecución
Vuelve al launcher, selecciona tu proyecto y haz clic en "Launch Project". El juego comenzará y reproducirá la escena que escribiste.
Si no has agregado imágenes de fondo, la pantalla estará negra en scene bg room — pero el diálogo y las opciones funcionarán bien. Es práctica estándar probar scripts sin arte primero y agregar imágenes después.
Compila y distribuye
Una vez que tu juego funciona correctamente, genera archivos distribuibles.
Configuración previa a la compilación
Abre game/options.rpy y verifica estas configuraciones:
# Game title (shown in the window title bar)
define config.name = _("My First Game")
# Build name (used in file names)
define build.name = "MyFirstGame"
build.name se usa en los nombres de archivo de salida, así que no incluyas espacios ni caracteres no ASCII.
Ejecutando la compilación
- Selecciona tu proyecto en el launcher
- Haz clic en "Build Distributions"
- Selecciona los objetivos de compilación (todas las plataformas están seleccionadas por defecto)
- Haz clic en "Build"
- La carpeta de salida se abre automáticamente cuando la compilación termina
La compilación produce estos archivos:
| Archivo | Destino |
|---|---|
MyFirstGame-1.0-win.zip | Windows |
MyFirstGame-1.0-mac.zip | macOS (Intel y Apple Silicon) |
MyFirstGame-1.0-linux.tar.bz2 | Linux |
Estos archivos ZIP son autocontenidos — los destinatarios pueden ejecutar el juego sin instalar Ren'Py. Subir a itch.io es la forma más común de distribuir juegos de Ren'Py.
Conclusión
Esto es lo que cubrimos:
- Configuración del SDK: Descargamos 8.5.2 del sitio oficial y lo extrajimos
- Configuración del editor: VS Code + extensión Ren'Py Language para resaltado de sintaxis y autocompletado
- Creación de proyecto: Creamos un nuevo proyecto desde el launcher y exploramos la estructura de directorios
- Escritura de scripts: Definiciones de personajes, fondos, diálogo, opciones de ramificación y gestión de flags basada en variables
- Compilación: Generamos archivos distribuibles como archivos ZIP
Con esta base, puedes ejecutar el ciclo completo de desarrollo en Ren'Py. Próximos pasos:
- Básicos de Imágenes — mostrando fondos, personajes y transiciones
- Opciones y Ramificaciones — declaraciones menu hasta múltiples finales
- Guía de Audio — gestión de BGM, efectos de sonido y voz
- Gestión de Estadísticas — sistemas basados en Python para afinidad, HP y más
- Guía de Distribución — compilando y publicando en itch.io
Recursos oficiales:
- Ren'Py Quickstart Guide — cobertura más profunda de
define/default/label/menu - Ren'Py Documentation — referencia completa de todas las funciones
- r/RenPy — comunidad para preguntas y discusión