Bonjour à tous !
Voilà, je vais tenter de vous apprendre quelque trucs RUBY, ou plus exactement du RGSS, car en effet, beaucoup font la confusion ^^
Je commencerais d'abord par là...
Ce tuto à pour but de donner quelque connaissance en RGSS qui vous éviterons bien des déconvenues ^^ et vous permettront de régler vos blems seuls, et de construire des scripts simples (partie 2) ... mais utiles !
Petites précision, je n'ai pas le niveau absolue en RGSS, c'est à dire que je ne prétend pas tout savoir en RGSS, loin de là, cependant je pense en savoir assez pour ne plus me considérer comme débutant, et donc avoir la capacité "d'enseigner" une partie de ce que je sais.
J'ai entièrement rédigé ce tuto, et il n'est basé que sur quelque élément du fichier d'aide du jeu, où vous pourrez retrouver la plupart des choses que je vais dire, mais bien moins expliqué ^^
Le fichier d'aide est dispo ici :
http://www.megaupload.com/?d=3NT6OHMQ Voici le sommaire :
1) Ruby / RGSS, c'est quoi la différence ?
2) Fonctionnement du RGSS
3) Vocabulaire important
4) Quelques codes
5) Construire un script
6) Régler ses erreurs tout seul[
]I) RUBY / RGSS, c'est quoi la différence ?
Et bien à proprement parler le Ruby est un langage de programmation (comme le BASIC, le C/C++ ou le Java) moyennement utilisé.
C'est dans ce langage qu'est programmé notre logiciel : RPG Maker XP...
Cependant, ce n'est pas en Ruby que fonctionne les jeux, mais avec un langage adaptatif, issue du Ruby, qui lui même fonctionne en Ruby, c'est en quelque sorte un traducteur, une interface qui nous permet de programmer plus facilement le Ruby, et ce langage, c'est, vous l'aurez deviné, le RGSS (Ruby Game Scripting System).
Donc nous parlerons plus de RGSS que de Ruby, même si, comme vous l'avez vu, la différence n'est pas si énorme

[
]II) Fonctionnement du RGSS
Déjà, une des premières choses à savoir, est l'organisation des scripts...
En effet, l'ensemble du code permettant à jeu de fonctionner est divisé en plusieurs feuillets, non numérotés, que l'on appel couramment "scripts", car en effet, ce classement est totalement symbolique ! On pourrait très bien dans un seul script, mettre tout les scripts du jeu ! celui marcherai tout aussi bien, le seul problème, c'est qu'on n'y comprendrait plus rien, et que ce script ferait au moins 10000 lignes, si ce n'est plus...
C'est pour ça que
le codage à été divisé en plusieurs scripts, classés par type...Nous allons apprendre à reconnaitre ces types, et à voir comment sont classés les scripts.
Tout, d'abord, il faut savoir que
la lecture des script commence par le bas ("hein ? mais comment ça se fait ??) et bien c'est par ce que le logiciel commence par ce qui est le plus futile, pour finir par les bases...
En effet, la lecture commence par le script "
Main" (tout en bas donc ^^) dans lequel vous pouvoir marqué le mot "begin" qui signifie "début" (c'était dur hein ? lol).
Ainsi, le logiciel commence par "Main" puis par toute les "
Scene_" (qui correspondent aux scènes qui peuvent se dérouler durant le jeu,c'est un premier type de script) cependant, comme ces scène font appels à des fenêtres, ou à d'autres choses comme les informations concernant la map ou le héros, par exemple, et bien le logiciel va aller cherchez plus haut !
Il va par exemple allez chercher dans les "
Interpreter" qui sont les script qui font la liaison entre les évènements et les scripts :p
Il peut avoir besoin aussi des scripts "
Arrow" qui concernent la petites flèches de position (vous savez dans les combats, quand vous choisissez l'ennemi ou les héros).
Il va surtout aller voir les scripts "
Window_" (fenêtre) à cause des nombreuses fenêtre qu'on lui a demandé d'afficher dans les divers scènes.
Enfin, il peut avoir avoir besoin des informations et du traitement visuel qu'offre les scripts "
Spriteset" et "
Sprite" qui concernent donc les apparence des héros et de la map, entre autre.
Or, tous les derniers scripts dont on vient de parler (de Interpreter à Sprite) on eux même besoin d'information et de codes qui ont été définis et écrit précédemment, c'est pour celà que le logiciel va aller lire les scripts "
Game_" qui sont le dernier type de script...
C'est ça l'esprit programmation,
je subdivise tout mon code en plusieurs fractions de codes interdépendants, on fait une sorte de système de cascade à l'envers quoi...
[
]III) Vocabulaire important
Nous allons désormais abordé le vocabulaire important concernant le RGSS, j'ai décidé de le faire sous forme de liste, qui fonctionne en cascade, comme les scripts, car au fur et à mesure vous aurez besoin du mot suivant pour comprendre la définition précédente

:
-
Script : C'est un ensemble de codes contenant généralement une classe. Ce mot désigne ainsi les feuillets de codes.
-
Classe : C'est la définition de l'état d'un objet, et
c'est la définition de plusieurs méthodes. Les classes s'écrivent toujours comme ceci :
- Code: Tout sélectionner
class Nom_de_la_classe
end
"Nom_de_la_classe" est le nom de votre classe,
il s'écrit TOUJOURS avec une majuscule au début (seulement au début) et pas d'espace.-
Méthode : Les méthodes contiennent directement les instructions. Les méthodes peuvent posséder des attributs.
Les méthodes s'écrivent à l'intérieur des classes (généralement) comme ceci :
- Code: Tout sélectionner
def nom_de_la_methode
end
"nom_de_la_methode" s'écrit toujours en minuscule, sans espace.
-
Attribut : Ce sont des variables qui ne se transmettent que par l'intermédiaire de méthodes, et qui ne peuvent s'utiliser que dans une méthode. Les attributs sont extrêmement utiles, mais à utiliser avec prudence... Il se définissent de cette manière :
- Code: Tout sélectionner
def nom_de_la_methode(nom_de_l'attridbut1, nom_de_l'attridbut2)
end
"nom_de_l'attribut" s'écrit en minuscule et sans espace.
-
Instructions : Ce sont les codes même des scripts, se sont des algorithmes, des définitions de variables, des renvoies vers des méthodes ou vers d'autres classes...
-
Algorithme : C'est la base même de tout jeux vidéos ! Ce sont des traitements mathématiques successifs de un ou plusieurs nombre (ou variables) par l'intermédiaire de fonction. :shock feront certains ^^ en fait c'est plus simple que ça en à l'air.
Par exemple le calcul des dégât de votre héros sur un monstre est un algorithme : on prend la force de votre héros, on la multiplie par 2, puis on soustrait la défense du monstre, et vous obtenez les dégâts ! (cet exemple ne reflète pas le vrai calcul que fait RPG Maker, c'est juste un exemple ^^)
Wikipedia peut vous expliquer mieux que moi ^^ :
http://fr.wikipedia.org/wiki/Algorithmique-
Variable : La encore,
c'est la chose la plus importante dans un jeu-vidéo ! Ouvrez grand vos yeux !
Les variables sont des expressions symboliques qui contiennent soit un nombre soit une chaine de caractères. (en fait elle peut contenir d'autre chose, mais contentons nous de cette définition théorique pour l'instant ^^)
Il existe plusieurs type de variables, ces types correspondent à leur protée dans le programme :
Note : "nom_de_la_variable" peut être écrit en minuscule ou en majuscule, ou les deux, mais pas d'espace.
=>
Les variables globales : elles sont valable partout, dans tous les scripts ! Alors attention à ne pas faire d'interférence en appelant 2 variables globales par le même nom ! Voici comment on les reconnait :
- Code: Tout sélectionner
$nom_de_la_variable
Elles commencent par un dollar ($)
=>
Les variables d'instances : elles ne sont valables que dans une classe, ainsi, deux classe différentes peuvent avoir des variables d'instances qui ont le même noms. Leur syntaxe :
- Code: Tout sélectionner
@nom_de_la_variable
Elles commencent donc par un arrowbase (aerobase pour les non anglophones, soit @).
=>
Les variables locales : Elles ne sont valables que dans les méthodes, ainsi, dans une même classe, mais dans 2 méthodes différentes, on peut avoir deux variables globales au noms identique. Leur syntaxe :
- Code: Tout sélectionner
nom_de_la_variable
Il n'y a rien devant, mais "nom_de_la_variable" doit s'écrire en minuscule uniquement.
=>
Les constantes : Ce sont des variables qui ne varient pas lol, leur portée est globale (tout le programme) leur syntaxe :
- Code: Tout sélectionner
NOM_DE_LA_CONSTANTE
Il n'y a rien devant, mais elles s'écrivent tout en majuscule...
Maintenant, voici comment on définit une variable :
On peut assigner un nombre à une variable, comme ceci :
- Code: Tout sélectionner
@variable = 2008
On peut assigner une chaine de caractères (string pour les anglais), comme ceci :
- Code: Tout sélectionner
@variable = "Nous sommes en 2008 !"
De plus, il est possible de manipuler une variables, dans un algorithme par exemples, par l'intermédiaire d'opérateurs.
Opérateurs : Se sont des symbole qui correspond à une opérations mathématiques. Voici la liste des opérateurs :
"+" : addition
- Code: Tout sélectionner
@variable = @variable1 + @variable 2
"-" : soustraction, vous l'aurez compris ^^
"*" : multiplication
"/" : division (attention à ne pas diviser par 0, c'est impossible)
"+=" : ajouter à une variable un nombre :
- Code: Tout sélectionner
@variable += 1
j'ai ajouté 1 à ma variable.
"-=" : soustraire un nombre à une variable
"*=" : multiplier une variable par un nombre
"/=" : diviser une variable par un nombre
Voilà, vous n'aurez pas trop besoin d'autre chose pour l'instant

[
]IV) Quelques codes
Voici la liste des mots qu'il ne faudra jamais utiliser comme variable ou méthode (mots réservés) :
- Code: Tout sélectionner
BEGIN class ensure nil self when
END def false not super while
alias defined? for or then yield
and do if redo true
begin else in rescue undef
break elsif module retry unless
case end next return until
Une chose très importante à savoir, c'est que la plupart ces mots, en particulier : "class", "when", "def, "if", "elsif" et "case" sont TOUJOURS suivit d'un "end", et entre les deux vous mettez les instructions.Dans le fichier d'aide, allez dans "Manuel de référence RGSS" => "Librairie Du Jeu" => "RPGXP Structures des données"
Vous trouverez à cet endroit toute la syntaxe utile pour désigner toute sorte de chose en RGSS, cela va des HP du héros, à l'ID d'une map, etc...
Voyons maintenant trois choses : les appels de classes et de méthodes, les comparables et les conditions et enfin les commentaires.
Appel de classes : Il suffit d'écrire :
- Code: Tout sélectionner
$scene = Scene_Machin.new
pour aller vers Scene_Machin !
N'oubliez pas le ".new" qui signifie qu'il faut se rendre à la méthode "initialize".
Appel de méthodes : Si vous êtes dans une classe, et que vous voulez allez dans une méthode qui se trouve dans cette même classe, il suffit décrire le nom de la méthode, et c'est bon !
En revanche, si dans une classe vous voulez aller dans une méthode qui se trouve dans une autre classe, il faut d'abord définir une variable, et la rendre égale à l'autre classe (celle ou se trouve la méthode, et non celle où vous êtes) comme ceci :
- Code: Tout sélectionner
@window_truc = Window_Truc.new
@window_truc.nom_de_la_méthode
Ainsi, le logiciel va exécuter lé méthode qui s'appelle "nom_de_la_méthode" et qui se trouve dans la classe "Window_Truc".
Enfin, si vous voulez appeler une méthode qui se trouve dans aucune classe (dans le vide si vous voulez), il suffit de marquer le nom de la méthode, et ça ira tout seul !
Conditions : évidemment, il y a des instructions qui ne s'exécuteront que sous certaines condition, par exemple, aller à la scène "Game Over" si les HPs de l'équipe sont nuls ou encore rendre égale tel variable si tel autre variable à une valeurs comprises entre tel nombre et tel autre nombre.
Deux mots désigne les conditions (y'en a plus en réalité, mais ceux-là sont les plus simples à utiliser)
- Code: Tout sélectionner
if
end
et
- Code: Tout sélectionner
case @variable
when valeur1
when valeur 2
...
...
end
On a donc "if" (si) et "case" (vérifiez le cas de) qui va avec les "when" (quand c'est égale à)
Vous comprendrez mieux avec ce qui va suivre.
Comparable : On les utilisent dans les conditions, pour comparer des variable entre elles où avec des valeurs :
- "==" : est égale à
- "!=" : n'est pas égale à
- ">" : est supérieur à (plus grand que)
- "<" : est inférieur à (plus petit que :p)
- ">=" : est supérieur ou égale à
- "<=" : est inférieur ou égale à
Voici comment écrire "Si la variable @ma_variable est égale à 1 alors rendre égale @mon_autre_variable à 5" (ce n'est qu'un exemple hein ^^)
- Code: Tout sélectionner
if @ma_variable == 1
@mon_autre_variable = 5
end
Mais on peut avoir besoin de dire : "Si @ma_variable vaut 1, alors rendre @mon_autre_variable égale à 8, si @ma_variable vaut 2, alors rendre @mon_autre_variable égale à 22..."
On va utiliser "case" dans ces cas là :
- Code: Tout sélectionner
case @ma_variable
when 1
@mon_autre_variable = 8
when 2
@mon_autre_variable = 22
end
Commentaire : Ils apparaissent en vert, ce sont des phrases, des commentaires que vous écrivez, et qui ne servent qu'a vous indiquer certaines choses, ou clarifier vos scripts. Il ne sont pas lu par le logiciel, c'est juste pour vous...
Il suffit d'écrire un diez (#) devant une ligne pour la faire devenir un commentaire.
Si vous voulez écrire beaucoup de ligne de suite en commentaire il suffit de faire comme ça :
- Code: Tout sélectionner
=begin
blablabla
blabla
blablaaaaaaaa
=end
Edit Sh4k4: J'ai déplacé dans la section appropriée et en post-it, et je te donne 5 Pa pour ce tuto. Merci.