Para distribuir un juego de Ren'Py, compilas paquetes por plataforma (Windows/macOS/Linux/Android/Web) desde el Launcher y subes los archivos zip a itch.io — manualmente o mediante la integración con butler. Todo el proceso toma minutos una vez que tu options.rpy está configurado.
Esta guía cubre el flujo completo con Ren'Py 8.5.2: preparación de compilación, particularidades de cada plataforma, publicación en itch.io y control de archivos con build.classify().
Preparación para la compilación
Configuración de options.rpy
Establece la información básica de compilación en options.rpy. Se genera una plantilla al crear un proyecto — solo actualiza los valores.
define config.name = "My Visual Novel"
define build.name = "MyVisualNovel"
define config.version = "1.0"
config.name es el título de tu juego. build.name se usa para los nombres de archivo de distribución — no se permiten espacios, dos puntos ni punto y coma. config.version es el número de versión, también referenciado al subir a itch.io.
Ejecutando Lint
Siempre ejecuta Lint antes de compilar. Haz clic en "Check Script (Lint)" en el Launcher.
Lint verifica:
- Referencias a imágenes o personajes no definidos
- Labels inalcanzables
- Archivos de audio faltantes
- Otros problemas potenciales
Corrige cualquier error antes de continuar. Las advertencias no son críticas pero deberían resolverse cuando sea posible.
Cambiando el icono
Reemplaza el icono predeterminado de Ren'Py con el tuyo.
mygame/ ← Directorio base (coloca los iconos aquí)
├── icon.ico ← Windows (256x256 recomendado)
├── icon.icns ← macOS
└── game/
└── ...
Colócalos en el directorio base de tu proyecto (el padre de game/).
Ejecutando la compilación
Compilando desde el Launcher
- Selecciona tu proyecto en el Launcher de Ren'Py
- Haz clic en "Build Distributions"
- Selecciona qué paquetes compilar (todas las plataformas están seleccionadas por defecto)
- Cuando la compilación termine, se abre la carpeta de salida
Archivos de salida
Con la configuración predeterminada, se generan estos archivos:
| Archivo | Destino |
|---|---|
MyVisualNovel-1.0-pc.zip | Windows + Linux |
MyVisualNovel-1.0-mac.zip | macOS |
El paquete pc incluye ejecutables para Windows y Linux. Los jugadores simplemente ejecutan el que corresponde a su sistema operativo.
Notas específicas por plataforma
Windows
No se necesita configuración especial. Extrae el zip y haz doble clic en el .exe. La plataforma más fácil.
macOS — El problema de Gatekeeper
macOS restringe las aplicaciones no firmadas. Desde macOS Sequoia (15.0), estas restricciones se han vuelto más estrictas.
Para lanzar un juego no firmado, los jugadores necesitan ejecutar esto en Terminal:
xattr -r -d com.apple.quarantine /path/to/MyVisualNovel.app
Linux
Ejecuta el archivo .sh incluido en el paquete pc. Si no tiene permisos de ejecución, ejecuta chmod +x primero.
Android
Las compilaciones de Android usan RAPT (Ren'Py Android Packaging Tool).
- En el Launcher, ve a "Android" → "Install SDK"
- Se requiere JDK 21 (Adoptium Temurin recomendado)
- "Generate Keys" para crear claves de firma (haz respaldo de estas)
- "Configure" para establecer nombre de paquete, icono, etc.
- "Build" para generar un APK o AAB
Usa AAB (Android App Bundle) para Google Play, APK para distribución directa. Consulta la documentación oficial de compilación Android para más detalles sobre configuración y solución de problemas.
Web (Beta)
También puedes compilar una versión jugable en navegador.
- En el Launcher, ve a "Web (Beta)" → "Build Web Application"
- Abre
index.htmlen la carpeta de salida para probar
Las compilaciones web son ideales para "Jugar en navegador" en itch.io, pero los tamaños de archivo grandes significan tiempos de carga más largos. itch.io impone un límite de 1000 archivos y 500 MB en total para juegos en navegador. Optimiza tus imágenes y audio, y usa build.classify() para archivar assets en archivos .rpa (cubierto más adelante). Consulta la documentación oficial de compilación Web para las limitaciones de la plataforma.
Publicando en itch.io
Subida manual
- Crea una cuenta en itch.io
- Ve a Dashboard → "Create new project"
- Completa los detalles del proyecto (título, descripción, etiquetas, etc.)
- Establece "Kind of project" en "Downloadable"
- Sube tus archivos zip compilados
- Establece etiquetas de plataforma (Windows / macOS / Linux) para cada archivo
- Haz clic en "Save & view page" para publicar
Para compilaciones web, establece "Kind of project" en "HTML", sube el zip y marca "This file will be played in the browser".
Auto-subida desde el Launcher
Agrega esto a options.rpy para subir directamente desde el Launcher:
define build.itch_project = "username/project-name"
Después de compilar, aparece un botón "Upload to itch.io". El primer uso te pedirá instalar e iniciar sesión en la herramienta CLI de itch (butler).
La auto-subida mapea archivos a canales de itch.io según patrones de nombre de archivo:
| Patrón de archivo | Canal |
|---|---|
*-pc.zip | win-linux |
*-mac.zip | osx |
*-linux.tar.bz2 | linux |
*-release.apk | android |
Controlando archivos con build.classify()
La configuración predeterminada funciona para la mayoría de los casos, pero usa build.classify() cuando necesites excluir archivos o personalizar el archivado.
Excluyendo archivos de desarrollo
init python:
# Excluir archivos de Photoshop e ilustración
build.classify("**/*.psd", None)
build.classify("**/*.clip", None)
# Excluir notas de desarrollo
build.classify("**/TODO.txt", None)
Establecer None excluye los archivos que coinciden con el patrón de la compilación.
Archivando archivos
Agrupa imágenes y audio en archivos .rpa para reducir la cantidad de archivos. Esto ayuda con el límite de 1000 archivos de itch.io para compilaciones web.
init python:
build.classify("game/**.png", "archive")
build.classify("game/**.jpg", "archive")
build.classify("game/**.ogg", "archive")
Sintaxis de patrones
| Patrón | Significado |
|---|---|
* | Cualquier carácter excepto separadores de directorio |
** | Cualquier carácter incluyendo separadores de directorio |
/ | Separador de directorio |
Los patrones se evalúan de arriba hacia abajo — la primera coincidencia gana. Coloca los patrones más específicos primero.
FAQ
¿Puedo distribuir mi juego de Ren'Py en Steam?
Sí. Ren'Py soporta la integración con Steam a través de Steamworks. Necesitas una cuenta de desarrollador en Steamworks ($100 pago único) y configuras los ajustes específicos de Steam en options.rpy. El proceso de compilación es similar — generas los archivos de distribución y los subes con las herramientas de Steam.
¿Necesito firmar mi juego para Windows?
No es estrictamente necesario. SmartScreen de Windows puede mostrar una advertencia para ejecutables no firmados, pero los jugadores pueden hacer clic en "Más información" → "Ejecutar de todas formas." Los certificados de firma de código cuestan $200–400/año, así que la mayoría de los desarrolladores independientes lo saltan. La advertencia tiende a desaparecer cuando suficientes usuarios han descargado tu juego.
¿Cómo actualizo mi juego en itch.io después de publicarlo?
Sube nuevas compilaciones con los mismos nombres de canal. Si usas butler, simplemente ejecuta el comando push de nuevo — butler maneja los parches diferenciales automáticamente, así que los jugadores que regresan solo descargan lo que cambió. Para subidas manuales, reemplaza los archivos en tu página de proyecto.
¿Puedo compilar para iOS?
Ren'Py no soporta oficialmente compilaciones para iOS. Algunos desarrolladores han usado herramientas de terceros o soluciones con Xcode, pero no es un flujo de trabajo soportado. Enfócate en Android para distribución móvil.
¿Cuál es la diferencia entre los destinos "all", "windows", "linux", "mac" de build.classify()?
Estos destinos controlan en qué paquetes de plataforma se incluye un archivo. "all" lo incluye en todos los paquetes. "windows" solo en la compilación de Windows. Puedes combinarlos con espacios: build.classify("README.txt", "windows linux mac"). Consulta la documentación oficial de compilación para la lista completa.
¿Qué tamaño máximo puede tener mi juego en itch.io?
Para juegos descargables, itch.io permite hasta 1 GB por archivo (puedes solicitar más). Para juegos HTML5 jugables en navegador, el límite es 500 MB en total con un máximo de 1000 archivos. Usa archivos .rpa y optimiza los assets para mantenerte dentro de los límites.
Mi compilación de macOS muestra "la app está dañada" — ¿qué hago?
Es la marca de cuarentena de Gatekeeper. Ejecuta xattr -r -d com.apple.quarantine /ruta/a/TuJuego.app en Terminal. Si distribuyes a otros, documenta esto en tu README. Para una solución permanente, considera el Apple Developer Program ($99/año) y usa la herramienta mac-notarization de Ren'Py.
Conclusión
Lo que cubrimos:
- Preparación de compilación: configuración de
options.rpy, verificación Lint, reemplazo de icono - Ejecutando la compilación: unos pocos clics en el Launcher para generar archivos zip
- Notas de plataforma: problemas de Gatekeeper en macOS, gestión de claves de firma en Android, tamaño de archivo en compilación web
- Publicando en itch.io: subida manual y auto-subida desde el Launcher
- build.classify(): excluyendo archivos de desarrollo, archivando y el truco del prefijo
#
Para lo básico de Ren'Py, consulta la guía de inicio. Para opciones y ramificaciones, consulta la guía de opciones. Para agregar BGM y efectos de sonido, consulta la guía de audio.
Recursos oficiales:
- Building Distributions — referencia oficial de compilación
- Android — detalles de compilación para Android
- Web — detalles de compilación web
- itch.io — plataforma de distribución de juegos independientes
- r/RenPy — comunidad
Artículos relacionados:
- Primeros Pasos con Ren'Py 8.5: De la Instalación a tu Primera Compilación
- Screen Language de Ren'Py: UI Personalizada desde Cero
- Imágenes en Ren'Py: Formatos, Tamaños y Optimización
- Gestión de Estadísticas en Ren'Py: Patrones que No Rompen los Guardados
- Guía de Audio en Ren'Py: Música, Efectos de Sonido y Voz
- ¿Se pueden usar nombres de archivo no ASCII en Ren'Py?