Ren'Py

De EduTech Wiki
Aller à la navigation Aller à la recherche

Cet article est en construction: un auteur est en train de le modifier.

En principe, le ou les auteurs en question devraient bientôt présenter une meilleure version.



Présentation

Ren'Py est un outil auteur permettant de créer des jeux-vidéo de type Visual novel. Il s'agit d'un type de jeu-vidéo très répandu et populaire au Japon, mais encore peu connu ailleurs. Ces jeux se présentent sous forme d'histoires interactives et non-linéaires, combinant du texte, des images et du son. Le joueur peut interagir avec l'histoire en changeant son déroulement par le biais de choix textuels, de manière assez similaire aux "Livres dont vous êtes le héros".

De même, Ren'Py permet également de créer des jeux de simulation, voir d'ajouter un système de combats de style rpg aux jeux-vidéo créés.


Cet outil auteur fonctionne sur la base d'un langage de script très simple. Il utilise le langage de script Python, mais de manière suffisamment simple pour que des personnes n'ayant jamais fait de programmation puissent créer des jeux complexes de manière efficiente.

Il peut également être utilisé comme introduction à la programmation pour des novices, car cet outil utilise un certain nombres de notions très répandues en programmation, et peut donc permettre de mieux comprendre comment fonctionne un langage de programmation. Cela avait d'ailleurs été le but initial des créateurs de Ren'Py, qui souhaitaient trouver un moyen de faire découvrir le développement informatique à un jeune public.

Installation

Compatibilité

Ren'Py est un logiciel multiplateforme. En effet, il peut potentiellement être utilisé sur toute plateforme. Il y en a cependant trois principalement prises en charge, qui sont les suivantes:

  • Windows XP+ (x86)
  • Mac OS X 10.6+ (x86_64)
  • Linux (x86, x86_64)

Le launcher de Ren'Py permet de créer des versions de jeux pour ces trois différentes plateformes qu'importe celle étant utilisée. Il est ainsi possible de développer par exemple une version Mac d'un jeu depuis Windows.

Android (2.3+) and iOS (7+) sont également pris en charge en tant que plateformes secondaires. Les jeux Ren'Py peuvent être lancés dessus, cependant le développement doit se faire à partir d'un ordinateur avec l'une des trois plateformes citées ci-dessus.

Open Source

Par ailleurs, Ren'Py est un logiciel gratuit en Open Source. Il est donc libre d'utilisation, et il est également possible d'étudier son code source, de le modifier si besoin, ainsi que de le redistribuer dans sa version d'origine ainsi que dans des versions modifiées, y compris à des fins commerciales. La seule exception est si le jeu que vous décidez de créer comporte des sons au format mpeg ou mp3, auquel cas vous devrez payer pour une license d'utilisation. Ces formats sont donc déconseillés pour la création de jeux-vidéo à des fins commerciales.

Procédure d'installation

Pour installer Ren'Py, vous devez tout d'abord télécharger le logiciel sur le site officiel au lien suivant: Ren'Py.

Une fois cela fait, il suffit de suivre la procédure d'installation suivante:

  • Sur Windows, faites un doucle clic sur le fichier exécutable que vous venez de télécharger. Cela fera extraire Ren'Py dans un dossier nommé "renpy-<version>". Entrez alors dans ce dosser et cliquez sur "renpy.exe" pour lancer le logiciel. (Si les extensions sont cachées sur votre ordinateur, il est possible que le fichier y apparaisse en tant que "renpy" au lieu de "renpy.exe".)
  • Sur Max OS X, faites un double clic sur le fichier image téléchargé pour le monter en tant que lecteur. Quand le lecteur s'ouvre, copier le dossier nommé "renpy-<version>" autre part. (vous pouvez le mettre où vous voulez, cependant il doit être déplacé hors du fichier image qui peut seulement être lu. Attention cependant, ne déplacez pas l'application Ren'Py en dehors du dossier qui la contient, car elle ne pourra fonctionner autre-part.) Une fois le dossier déplacé, entrez dedans et cliquez sur l'application Ren'Py pour la lancer.
  • Sur Linux, décompressez l'archive tar, puis allez dans le répertoire "renpy-<version>" et lancez le fichier "renpy.sh".

Une fois cette procédure d'installation suivie, le logiciel Ren'Py devrait se lancer. Ce dernier ayant été traduit en diverses langues, vous pourrez alors modifier au besoin la langue utilisée sur le logiciel en cliquant sur "preferences" en bas à droite de l'interface de Ren'Py, puis en cliquant sur la langue de votre choix.

Utilisation

Création d'un jeu simple

Les fonctionnalités principales de Ren'Py seront présentées ici afin d'expliquer comment créer un jeu simple du début à sa fin. Cependant, notez bien que ce qui est présenté ici n'est qu'un aperçu de l'éventail des fonctionnalités et possibilités qu'apporte ce logiciel pour la création d'un jeu. Si vous souhaitez aller plus loin et découvrir tout ce qu'il est possible de faire grâce à ce dernier, vous pouvez consulter les sources citées au bas de cette page.

Créer un nouveau projet

Launcher renpy.png

Pour créer un nouveau projet, cliquez sur l'option "Create New Project" du launcher Ren'Py. Si il s'agit de la première fois que vous créez un projet, Ren'Py vous demandera de sélectionner le dossier dans lequel vos projets seront sauvegardés.

Nom projet renpy.png

Une fois cela fait, le launcher vous demander d'entrer le nom que vous voulez utilisé pour votre projet (qui sera en principe le nom de votre jeu). Ici, nous avons décidé d'appeler notre projet "My Question".

Resolution renpy.png

Suite à cela, vous devrez choisir la résolution que vous voulez avoir pour votre projet. La résolution par défault, de 1280x720, est un bon compromis entre la taille du jeu et la qualité des images. Une fois votre choix séléctionné, cliquez sur "Continue".

Theme couleur renpy.png

Enfin, le launcher vous demandera de choisir un thème de couleur pour votre projet, comprenant une couleur de fond et une couleur d'accentuation.

Une fois cette étape effectuée, Ren'Py prendra un court moment pour traiter et créer un template pour un jeu simple. Vous pouvez cliquer sur "Launch Project" afin de lancer votre projet et tester l'interface de départ de votre jeu.

Dans les parties qui suivent, nous allons voir comment fonctionne le langage de script utilisé par Ren'Py, mais si vous souhaitez déjà voir à quoi ressemble la structure d'un exemple de jeu, vous pouvez cliquer sur "The question" dans la liste des projets, puis sur "script.rpy" dans la section "Edit File" afin de voir comment cet exemple de jeu a été codé.

Bases

Pour essayer de créer un jeu simple de vous-mêmes, séléctionnez le projet sur lequel vous souhaitez travailler dans la liste de projets se trouvant à gauche sur la fenêtre du launcher, puis cliquez sur "script.rpy" dans la section "Edit File". Si il s'agit de la première fois que vous faites cela, Ren'Py vous demander de séléctionner un éditeur (nous vous recommendons Editra si vous n'avez jamais créé de projet de ce genre), et il vous le téléchargera. Une fois cela fait, Ren'Py ouvrira le fichier de script dans la fenêtre de l'éditeur.

Editeur renpy.png

Une fois l'éditeur ouvert, vous pouvez voir que des lignes y sont déjà écrites comme sur l'image ci-dessus. Il s'agit de lignes de codes d'exemples afin de vous aider lorsque vous débutez dans Ren'Py. Cependant, si vous souhaitez essayer les diverses fonctionnalités présentées sur cette page, nous vous recommandons de tout effacer pour créer un jeu simple à partir de rien. Vous pouvez cependant sauvegarder le code déjà présent quelque-part afin de ne pas le perdre (bien que vous trouverez le même à la création de chaque nouveau projet).

Si vous effacez tout, puis que vous cliquer sur "Launch Project" depuis le launcher de Ren'Py, vous pouvez voir que même sans aucune ligne de code, Ren'Py créé néanmoins un menu permettant de déjà charger et sauvegarder des parties de jeu, ainsi qu'un menu d'options dans lesquelles vous pouvez séléctionner vos préférences.

Prenons à présent un exemple que vous pourrez tester:

label start:

    "Sylvie" "Salut! Les cours se sont bien passés?"

    "Moi" "Plutôt oui..."

    "Je n'arrivais pas à admettre que tout était entré par une oreille pour resortir par l'autre."

    "Moi" "Tu penses rentrer chez toi maintenant? Si tu veux on peut faire le chemin ensemble."

Ici, vous pouvez voir la version la plus simple possible d'un jeu créé sur Ren'Py. Il n'inclut aucune image, ni musique, mais il montre cependant une conversation entre deux personnages, ainsi qu'une ligne de narration.

La première ligne est un label statement. Les label statement sont utilisés afin de donner un nom à un endroit précis du programme. Dans cet exemple, nous avons créé un label nommé "start". Le "label start" est spécial, car c'est à partir de là que le script de Ren'Py va commencer à être lu lorsqu'un utilisateur du jeu cliquera sur "Start game" dans le menu principal de ce dernier.

Les autres lignes sont des say statement. Ces derniers existent sous deux formes. La première est une chaîne (commencant par des guillemets, comprenant des caractères, et se terminant par des guillemets) se trouvant sur une ligne, qui sera utilisée pour de la narration, ainsi que pour les pensées du personnage principal. La deuxième forme de say statement possible est composée de deux chaînes de caractères. Elle est utilisée pour les dialogues, et comprend une première chaîne comprennant le nom d'un personnage étant en train de parler, et d'une seconde comprenant ce que le personnage dit.

Notez également que chaque say statement a une indentation de quatre espaces dans le script. Cela est dû au fait qu'il s'agit d'un bloc se trouvant en dessous d'un label statement. Dans Ren'Py, les blocs doivent avoir une indentation relative aux statements étant précédemment utilisés, et tous les statements d'un même bloc doivent avoir la même indentation.

"Sylvie" "Est-ce que tu as déjà entendu la fameuse citation de Lincon, \"Le problème des citations sur internet est que beaucoup d'entre-elles ne sont pas authentiques.\"?"

Lorsqu'une chaîne de caractères comprend des guillemets (en plus des guillemets de début et de fin de la chaîne), ceux-ci doivent être précédés d'un "\" pour chacun d'eux, comme dans l'exemple ci-dessus:

"... Mauvaise fin."

    return

Enfin, nous avons vu plus haut comment utiliser le label start pour indiquer à partir de quel endroit le script du jeu devait être lu. Pour indiquer à quel endroit le script doit arrêter d'être lu, et donc se terminer, il faut utiliser un return statement comme sur l'exemple ci-dessus, sans écrire "label" contrairement au label start. Dans votre jeu, il est conseillé d'écrire quelque-chose avant ce statement, indiquant au joueur que le jeu se termine à cet endroit (par exemple, indiquer quelle fin le joueur a obtenu).

Personnages

Un problème que pose le premier exemple de code, est que d'écrire son script de cette manière nécessite de réécrire le nom des personnages pour chaque ligne où ils parlent. Pour la création d'un jeu comprenant un grand nombre de dialogues, il faudrait de ce fait taper énormément de texte. De plus, en écrivant ainsi les noms des personnages, leurs noms apparaîtront dans le jeu de la même manière, et de la même couleur, sans différenciation. Pour remédier à cela, Ren'Py donne la possibilité de définir les personnages à l'avance. Cela permet d'associer un nom très court à chaque personnage, ainsi que de définir de quel couleur devrait apparaître chacun de leurs noms à l'écran.

define s = Character('Sylvie', color="#c8ffc8")
define m = Character('Me', color="#c8c8ff")

label start:

    s "Salut! Les cours se sont bien passés?"

    m "Plutôt oui..."

    "Je n'arrivais pas à admettre que tout était entré par une oreille pour resortir par l'autre."

    s "Tu penses rentrer chez toi maintenant? Si tu veux on peut faire le chemin ensemble."

    m "Avec plaisir!"

Les deux premières lignes de code définissent les personnages. La première ligne sert à définir que l'abréviation "s" pourra être utilisée au lieu d'écrire à chaque fois le nom "Sylvie", et que ce dernier apparaîtra d'une couleur verte à l'écran. (les couleurs sont à définir avec les codes couleur RVB utilisés pour les pages web).

La seconde ligne définit que l'abréviation "m" pourra être utilisée au lieu de "Moi", et que le nom entier apparaîtra à l'écran dans une couleur rouge. D'autres personnages peuvent être définis en copiant l'une de ces lignes de codes et en changeant simplement l'abréviation à utiliser, le nom complet du personnage, ainsi que la couleur dans laquelle on veut que leur nom apparaisse.

A la suite de ces deux lignes de code, vous pouvez voir que les say statement servant de dialogues ont été modifiés en conséquence, en utilisant les abréviations au lieu des noms complets des personnages dans une chaîne de caractères

Images

Nous reprenons ici l'exemple présenté plus haut, mais en incluant cette fois des statements permettant de faire apparaître des images dans le jeu. Si vous voulez tester ce code, vous pouvez effacer tout ce que vous avez dans votre éditeur de script et y placer l'ensemble de ce code.

define s = Character('Sylvie', color="#c8ffc8")
define m = Character('Me', color="#c8c8ff")

label start:

    scene bg champs

    "Après un court moment, nous avons finit par arriver vers les champs qui entouraient le quartier que nous habitions."

    "Le paysage qui se dresse devant nous est le même que j'ai l'habitude de voir depuis toujours. Cet endroit est particulièrement beau à voir en automne."

    "Quand nous étions enfant, nous jouions souvent dans ces champs. Ils sont remplis de tant de souvenirs."

    m "Dis voir... Euh..."

    show sylvie vert sourire

    "Elle se tourna vers moi et sourit. Elle paraissait alors si chaleureuse que toute ma nervosité semble disparaître."

    "Je vais lui demander...!"

    m "Dis... Est-ce que tu..."

    m "Est-ce que tu accepterais de devenir l'artiste du jeu que je suis en train de développer?"

    show sylvie vert surprise

    "Un silence suivit."

Ce segment de code introduit deux nouveaux statements. Le scene statement à la 4ème ligne de code fait apparaître une image de background, et enlève toute autre image de fond dans le cas où l'on en aurait déjà fait apparaître une. Le show statement à la 9ème ligne de code fait apparaître une sprite d'un personnage par dessus l'image de fond, tandis que celui à la 14ème ligne change la sprite étant utilisée.

Dans Ren'Py, chaque image a un nom. Le nom est définit par un tag, et de manière facultative, par un ou plusieurs attributs. Le tag ainsi que les attributs doivent chacun commencer par une lettre, et ne doivent être composés uniquement de lettres, nombres et de tirets bas (le caractère "_"). Par exemple:

  • Dans le scene statement de la 4ème ligne de code, le tag est "bg", et l'attribut est "champs". Par convention, les images de background doivent utiliser le tag "bg".
  • Dans le premier show statement à la 9ème ligne de code, le tag est "sylvie", et les attributs sont "vert" et "sourire".
  • Dans le second show statement à la 14ème ligne de code, le tag est "sylvie" et les attributs sont "vert" et "surprise".

Uniquement une image par tag donné peut être affichée en même temps. Lorsqu'une seconde image avec le même tag apparaît, cette dernière remplace la première image ayant été affichée, comme cela est le cas à la 14ème ligne de code.

Ren'Py cherche les fichiers images dans le dossier "images" compris au sein de chaque dossier de projet. Ce dossier est également accessible depuis le launcher de Ren'Py en cliquant sur "images" dans la section "Open Directory". Pour pouvoir être utilisées par Ren'Py, les sprites des personnages doivent être au format PNG ou WEBP, tandis que les images de background doivent être au format JPEG, PNG ou WEBP. Il faut également faire attention aux noms donnés à chaque image, qui sont très important car ces noms seront utilisés dans le script du jeu comme noms des différentes images.

Par exemple, les fichiers suivants, placés dans le dossier "images", définissent les images suivantes:

  • "bg champs.jpg" -> bg champs
  • "sylvie vert sourire.png" -> sylvie vert sourire
  • "sylvie vers surprise.png" -> sylvie vert surprise

Les noms des fichiers étant en minuscules, on peut également les utiliser de la manière suivante:

  • "Sylvie Vert Surprise.png" -> sylvie vert surprise

Les images peuvent être placées dans des sous-dossiers au sein du dossier "images". Les noms des dossiers sont ignorés et seuls les noms des fichiers sont utilisés pour définir les noms des différentes images.

Hide Statement. Ren'Py prend également en charge un hide statement, qui sert à cacher une image donnée.

label leaving:

    s "Je peux m'y mettre dès maintenant si tu en as besoin!"

    hide sylvie

    "..."

    m "Ce n'est pas ce que je voulais dire!"

Il est cependant rare d'avoir besoin d'utiliser ce statement. En effet, les show statements peuvent être utilisés pour changer les sprites des personnages et ainsi montrer des changements d'expressions, et les scene statements peuvent être utilisés pour faire disparaître tous les personnages présents à l'écran. Le hide statement n'est réellement utilisé que dans le cas où un personnage disparaîtrait tandis que l'image affichée par un scene statement resterait la même.

Image Statement. Dans le cas où on ne voudrait pas que Ren'Py définissent les images automatiquement, il est possible d'utiliser cet image statement. Ce dernier doit se trouver tout en haut du script (sans indentation, et avant le label start), et peut être utilisé pour définir le nom d'une image par rapport à un fichier image. Par exemple:

image logo = "renpy logo.png"
image eileen heureuse = "eileen_heureuse_robe_bleue.png"

L'image statement se lance au moment de l'initialisation du projet, avant que le label start et le reste du script intéragisse avec le joueur.

Transitions

label start:

    scene bg meadow
    with fade

    "After a short while, we reach the meadows just outside the neighborhood where we both live."

    "It's a scenic view I've grown used to. Autumn is especially beautiful here."

    "When we were children, we played in these meadows a lot, so they're full of memories."

    m "Hey... Umm..."

    show sylvie green smile
    with dissolve

    "She turns to me and smiles. She looks so welcoming that I feel my nervousness melt away."

    "I'll ask her...!"

    m "Ummm... Will you..."

    m "Will you be my artist for a visual novel?"
scene bg meadow
    show sylvie green smile
    with dissolve
scene bg meadow
    with dissolve
    show sylvie green smile
    with dissolve
scene bg meadow
    with None
    show sylvie smile
    with dissolve

Positions

show sylvie green smile at right

Musiques et sons

play music "illurock.ogg"
play music "illurock.ogg" fadeout 1.0 fadein 1.0
queue music "next_track.opus"
stop music
play sound "effect.ogg"

Menus, Labels et Jumps

s "Sure, but what's a \"visual novel?\""

menu:

    "It's a videogame.":
        jump game

    "It's an interactive book.":
        jump book

label game:

    m "It's a kind of videogame you can play on your computer or a console."

    jump marry

label book:

    m "It's like an interactive book that you can read on a computer or a console."

    jump marry

label marry:

    "And so, we become a visual novel creating duo."

Lien

  • Lemma Soft Forums (Communauté d'entraide pour les créateurs de jeux-vidéo de type Visual novels. Beaucoup d'informations et contenus liés au logiciel Ren'Py)

Logiciels similaires