Herramientas de usuario

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
tutorial_de_renpy [2025/01/20 17:39] perontutorial_de_renpy [2026/04/21 16:09] (actual) – editor externo 127.0.0.1
Línea 60: Línea 60:
 Ahora bien, una vez que se abra el editor, borrá todo el contenido de ''script.rpy'': como empezaremos desde cero, no necesitaremos nada del guion anterior. Pegá el siguiente contenido en ''script.rpy'', y guardalo. Ahora bien, una vez que se abra el editor, borrá todo el contenido de ''script.rpy'': como empezaremos desde cero, no necesitaremos nada del guion anterior. Pegá el siguiente contenido en ''script.rpy'', y guardalo.
  
-<code python>+<file python script.rpy>
 label start: label start:
  
Línea 72: Línea 72:
  
     "Silvana" "¡Dale!"     "Silvana" "¡Dale!"
-</code>+</file>
  
 Este primer guion de juego sigue la sintaxis de Ren'Py, y como ves, es sumamente simple. Aún no le pusimos ninguna imagen ni nada de música, pero al menos presenta una //conversación entre dos personajes//, y una de las líneas es una //narración en off//. Este primer guion de juego sigue la sintaxis de Ren'Py, y como ves, es sumamente simple. Aún no le pusimos ninguna imagen ni nada de música, pero al menos presenta una //conversación entre dos personajes//, y una de las líneas es una //narración en off//.
Línea 198: Línea 198:
  
 ===Declaración Hide=== ===Declaración Hide===
 +
 Ren'Py también soporta una declaración ''hide'', que __oculta__ una imagen dada. Ren'Py también soporta una declaración ''hide'', que __oculta__ una imagen dada.
  
-<code renpy>+<code python>
 label irse: label irse:
  
Línea 212: Línea 213:
 </code> </code>
  
-En realidad es bastante raro usar ''hide''. Podés usar ''show'' cuando un personaje cambia de emociones, mientras que ''scene'' lo usás para el momento en que todos los personajes se van. Sólo es necesario usar ''hide'' cuando un personaje abandona la escena, pero el resto de la escena y los demás personajes tienen que quedar igual.+En realidad ''hide'' se usa bastante poco. Podés usar ''show'' cuando un personaje cambia de emociones, mientras que ''scene'' lo usás para el momento en que todos los personajes se van. Sólo es necesario usar ''hide'' cuando un personaje abandona la escena, pero el resto de la escena y los demás personajes tienen que quedar igual.
  
 ===Declaración Image=== ===Declaración Image===
Línea 259: Línea 260:
 </code> </code>
  
-La declaración ''with'' recibe el __nombre de la transición__ a emplear. La más común es ''dissolve'', que //disuelve// de una pantalla a la siguiente. Otra transición útil es ''fade'', que //desvanece la pantalla a negro//, y luego la desvanece a la siguiente pantalla.+La declaración ''with'' recibe el __nombre de la transición__ a emplear. La más común es ''dissolve'', que //disuelve// de una pantalla a la siguiente. Otra transición útil es ''fade'', que //desvanece la pantalla a negro//, y luego la transiciona a la siguiente pantalla.
  
-Cuando colocás una transición tras múltiples declaraciones ''scene'', ''show'' o ''hide'', se aplicará a todas ellas a la vez. Si escribís:+Cuando colocás una transición tras múltiples declaraciones ''scene'', ''show'' o ''hide'', ésta se aplicará a todas ellas a la vez. Por lo tanto, si escribís:
  
 <code python> <code python>
Línea 269: Línea 270:
 </code> </code>
  
-Tanto las imágenes "''bg meadow''" y "''sylvie green smile''" se disolverán al mismo tiempo. Para disolver una la vez, es necesario programarlo usando dos declaraciones ''with'':+...tanto las imágenes "''bg meadow''" y "''sylvie green smile''" se disolverán al mismo tiempo. Para disolver de una por vez, es necesario programarlo de otra forma, usando dos declaraciones ''with'', de esta manera:
  
 <code python> <code python>
Línea 278: Línea 279:
 </code> </code>
  
-Esto primero disuelve el fondo del prado, y luego disuelve a Silvana. Si querías mostrar el prado instantáneamente, y luego presentar a Silvana, podías programarlo así:+De esta manera, primero se disuelve el fondo del prado, y luego disuelve a Silvana. Si querías mostrar el prado instantáneamente, y luego hacer que Silvana aparezca suavemente, podías programarlo así:
  
  
Línea 310: Línea 311:
  
  
-La mayoría de los juegos de Ren'Py tienen música de fondo. La música se reproduce con la declaración ''play music''. La declaración ''play music'' recibe un nombre de archivo que es interpretado como un fichero de audio que debe ejecutarse. Los ficheros de audio se interpretan en relación al directorio de juego. Los ficheros de audio deben estar en formato opus, ogg vorbis, o mp3.+La mayoría de los juegos de Ren'Py tienen música de fondo. La música se reproduce con la declaración ''play music''. La declaración ''play music'' incluye un nombre de archivo que es interpretado como un fichero de audio que debe ejecutarse de manera sinfín (en bucle). Los ficheros de audio se interpretan en relación al directorio de juego. Los ficheros de audio que acepta Ren'Py son de formato ''opus''''ogg vorbis'', o ''mp3''.
  
 Por ejemplo: Por ejemplo:
Línea 318: Línea 319:
 </code> </code>
  
-Cuando se cambia la música, uno puede indicar una cláusula ''fadeout'' o ''fadein'', que se usan para desvanecer el volúmen de la antigua música y aumentar el volúmen de la música nueva (para hacer una transición suave de músicas).+Cuando se cambia la música, uno puede indicar una cláusula ''fadeout'' o ''fadein'', que se usan para desvanecer el volumen de la antigua música y aumentar el volumen de la música nueva (para hacer una transición suave de músicas).
  
 <code python> <code python>
Línea 324: Línea 325:
 </code> </code>
  
-La declaración ''queue music'' reproduce un fichero de audio después que el fichero de audio actual terminal+La declaración ''queue music'' permite hacer una //playlist//, o sea, reproduce un fichero de audio nuevo una vez que termina el fichero de audio actual.
  
 <code pywhon> <code pywhon>
Línea 330: Línea 331:
 </code> </code>
  
-Podés parar la música con la declaración ''stop music'', que también puede recibir una cláusula ''fadeout'' opcional.+Podés detener la reproducción de la música abruptamente con la declaración ''stop music'', o bien agragarle una cláusula ''fadeout'' opcional para detener la música suavemente.
  
 <code python> <code python>
Línea 336: Línea 337:
 </code> </code>
  
-Los efectos de sonido pueden reproducirse con la declaración ''play sound''. A diferencia de la música, los efectos de sonido no tienen bucle (no se repiten indefenidamente).+Los efectos de sonido se reproducen con la declaración ''play sound''. A diferencia de la música, los efectos de sonido no se reproducen en bucle sinfín (no se repiten indefinidamente).
  
 <code python> <code python>
Línea 342: Línea 343:
 </code> </code>
  
-Cuando ponés los archivo de audio en el directorio ''game/audio'', podés usar el nombre sin extensión de archivo, al estilo de una variable de Python (o sea, comienza con una letra, y contiene sólo letras, números y guiones bajos). En tal caso, te será posible reproducir dicho fichero sin poner las comillas.+Si ponés los archivo de audio en el directorio ''game/audio'', podés usar el nombre sin extensión de archivo, al estilo de una variable de Python (o sea, comienza con una letra, y contiene sólo letras, números y guiones bajos). En tal caso, te será posible programar la reproducción de dicho fichero sin poner las comillas.
  
 Por ejemplo, si tenés el archivo de audio ''game/audio/illurock.ogg'', podés programar: Por ejemplo, si tenés el archivo de audio ''game/audio/illurock.ogg'', podés programar:
Línea 354: Línea 355:
 ====Declaración pause==== ====Declaración pause====
  
-La declaración ''pause'' hace que Ren'Py haga una pausa hasta hacer clic con el mouse.+La declaración ''pause'' hace que Ren'Py haga una pausa hasta que el jugador haga clic con el mouse.
  
 <code python> <code python>
Línea 422: Línea 423:
 En el ejemplo anterior, luego de que Silvana realiza su pregunta, al jugador se le presentará un menú que contiene dos opciones. Si el jugador elige "Es un videojuego", se ejecuta la primer declaración ''jump'', y Ren'Py saltará a la etiqueta ''juego''. Esto provocará que el Punto de Vista del personaje diga "Es una historia con imágenes y música", tras lo cual Ren'Py saltará a la etiqueta ''casamiento''. En el ejemplo anterior, luego de que Silvana realiza su pregunta, al jugador se le presentará un menú que contiene dos opciones. Si el jugador elige "Es un videojuego", se ejecuta la primer declaración ''jump'', y Ren'Py saltará a la etiqueta ''juego''. Esto provocará que el Punto de Vista del personaje diga "Es una historia con imágenes y música", tras lo cual Ren'Py saltará a la etiqueta ''casamiento''.
  
-Si no hay una declaración ''jump'' al final del bloque asociado con la etiqueta ''label'', Ren'Py continuará a la siguiente declaración. La última declaración jump aquí es técnicamente innecesaria, pero se la incluye para hacer más claro el flujo del juego.+Si no hay una declaración ''jump'' al final del bloque asociado con la etiqueta ''label'', Ren'Py continuará a la siguiente declaración. La última declaración ''jump'' aquí es técnicamente innecesaria, pero se la incluye para hacer más claro el flujo del juego.
  
-Pueden definirse las etiquetas label en cualquier archivo de juego que esté en el directorio ''game'', y termine con extensión .rpy. El nombre de archivo no importa en Ren'Py, solamente importan las etiquetas contenidas en el. Podés pensar todos los archivos .rpy como si fuese un único archivo .rpy enorme, en el cual se usan los saltos para transferir el control. Esto te da flexibilidad en la manera en la cual organizás el guión de un juego muy largo.+Pueden definirse las etiquetas ''label'' en cualquier archivo de juego que esté en el directorio ''game'', y termine con extensión ''.rpy''. El nombre de archivo no importa en Ren'Py, solamente importan las etiquetas contenidas en el. Podés pensar todos los archivos ''.rpy'' como si fuese un único archivo ''.rpy'' enorme, en el cual se usan los saltos para transferir el control. Esto te da flexibilidad en la manera en la cual organizás el guión de un juego muy largo.
  
 Ver manual: [[https://renpy.org/doc/html/menus.html|In-Game Menus]] y [[https://renpy.org/doc/html/label.html|Labels & Control Flow]] Ver manual: [[https://renpy.org/doc/html/menus.html|In-Game Menus]] y [[https://renpy.org/doc/html/label.html|Labels & Control Flow]]
Línea 430: Línea 431:
 ==== Integración de Python==== ==== Integración de Python====
  
-Si bien podés hacer algunos juegos simples usando las declaraciones ya indicadas, ciertos juegos requieren una programación más compleja para almacenar datos para recabarlos luego. Por ejemplo, puede tener sentido que el juego recuerde una opción escogida por el jugador, volver a una sección común del guion, y actuar más adelante según la opción escogida anteriormente. Esta es una de las razones por la cual Ren'Py cuenta con [[tutorial de python|soporte de Python]] incorporado.+Si bien podés hacer algunos juegos simples usando las declaraciones ya indicadas, ciertos juegos requieren una programación más compleja en la cual se almacenan datos para recabarlos luego. Por ejemplo, puede tener sentido que el juego recuerde una opción escogida por el jugador, volver a una sección común del guion, y actuar más adelante según la opción escogida anteriormente. Esta es una de las razones por la cual Ren'Py cuenta con [[tutorial de python|soporte de Python]] incorporado.
  
 ===Flags de apoyo usando las declaraciones Default, Python e If=== ===Flags de apoyo usando las declaraciones Default, Python e If===
Línea 466: Línea 467:
 if libro: if libro:
  
-    "Nuestro primer juego se basó en las ideas de Silvana, pero luego se me ocurrieron mis propias historias también."+    "Nuestro primer juego se basó en las ideas de Silvana, pero luego se me ocurrieron historias propias también."
 </code> </code>
  
Línea 474: Línea 475:
 if libro: if libro:
  
-    "Nuestro primer juego se basó en las ideas de Silvana, pero luego se me ocurrieron mis propias historias también."+    "Nuestro primer juego se basó en las ideas de Silvana, pero luego se me ocurrieron historias propias también."
  
 else: else:
Línea 481: Línea 482:
 </code> </code>
  
-Las variables de Python no se limitan necesariamente a valores simples ''True''/''False''. También podés usar variables para almacenar el nombre del jugador, los puntajes, o para cualquier otro propósito que se te ocurra. Ya que Ren'Py incluye la habilidad de usar todo el lenguaje de programación Python, es posible hacer muchas cosas más.+Las variables de Python no se limitan necesariamente a valores simples ''True''/''False''. También podés usar variables para almacenar el nombre del jugador, puntajes, estadísticas de vida, logros, o para cualquier otro propósito que se te ocurra. Ya que Ren'Py incluye la habilidad de usar todo el lenguaje de programación Python, es posible hacer muchas cosas más.
  
->Un recurso típico es el subgénero "simdate" o "juego de conquistas", donde las elecciones del jugador suman o restan puntaje de una o varias variables; de acuerdo al puntaje que vas sumando o restando, podés avanzar en determinadas //sendas// de la historia.+>Un recurso típico es el subgénero "simdate" o "juego de conquistas", donde las elecciones del jugador suman o restan puntaje de una o varias variables; de acuerdo al puntaje que vas sumando o restando estadísticas, podés avanzar en determinadas //sendas// de la historia, o retroceder en otras.
  
 Ver Manual: [[https://renpy.org/doc/html/python.html|Python Statements]] y [[https://renpy.org/doc/html/conditional.html|Conditional Statements]] Ver Manual: [[https://renpy.org/doc/html/python.html|Python Statements]] y [[https://renpy.org/doc/html/conditional.html|Conditional Statements]]
Línea 514: Línea 515:
 Como ves, el ambiente Ren'Py es lo suficientemente sencillo como para poder recurrir a hacer tus propios personajes, historias, senderos de aventura, retruécanos y relatos.  Como ves, el ambiente Ren'Py es lo suficientemente sencillo como para poder recurrir a hacer tus propios personajes, historias, senderos de aventura, retruécanos y relatos. 
  
-Dibujar y escanear/fotografiar personajes es una manera sencilla de comenzar. Existen recursos de música de licencias completamente libres para utilizar.+Dibujar y escanear/fotografiar tus propios personajes es una manera sencilla de comenzar. Existen recursos de música de licencias completamente libres para utilizar, o elementos generados por IA de libre uso.
  
 Gracias a todas las herramientas de software libre, recursos audiovisuales liberados ¡Podrías convertirte en desarrollador@ de juegos amateur! Gracias a todas las herramientas de software libre, recursos audiovisuales liberados ¡Podrías convertirte en desarrollador@ de juegos amateur!

Este sitio web utiliza cookies para guardar datos esenciales de su actividad, como su autenticación. Al entrar acepta el uso de cookies.

Más información