RMEx

RMEBuilder

Package Manager for RPGMaker VXAce

Pour faire fonctionner RMEBuilder sur Windows 10, il faut, au moment une erreur survient, faire clique droit sur l'entête de la console et choisir "Propriété", ensuite cocher la case "Utiliser l'ancienne console".
Un grand merci à ce thread !

Voici une image pour fixer le problème : ICI

RMEBuilder est un outil pour faciliter l'installation de script dans RPGMaker VXAce. Il permet de gérer les dépendances sans avoir à s'en soucier. En plus du confort qu'offre cet outil, RMEBuilder est un logiciel libre, distribué sous licence LGPL.
RMEBuilder se synchronise via internet avec les dernières versions des scripts pour garantir que les scripts proposés soient toujours les dernières versions disponibles (et garantir la couverture de bogues)!

Principe général

L'idée de RMEBuilder est de permettre aux utilisateurs de scripts d'installer très facilement des scripts. En effet, RMEBuilder est un petit exécutable qui permet d'ajouter des scripts dans un ou plusieurs projets. Voici par exemple, un workflow typique d'utilisation de RMEBuilder

Il est aussi possible de mettre les scripts à jour selon la dernière version et évidemment, tout scripteur peut enrichir la base de données de scripts disponibles (on espère qu'ils le feront)!

Téléchargement

RMEBuilder est très facile à obtenir, il suffit de se rendre sur la page Releases et de télécharger le fichier RMEBuilder.zip.

Installation

Pour que RMEBuilder fonctionne parfaitement, il est parfois nécéssaire de configurer son anti-virus/parefeu pour qu'il accepte que RMEBuilder télécharge des fichiers.

L'installation de RMEBuilder est très simple, il suffit de décompresser RMEBuilder.zip dans le répertoire de votre choix. (Pas spécialement dans un projet RPGMaker, vous pouvez vous servir de RMEBuilder pour construire plusieurs projets.)

Suite à un problème lié à Ruby 1.9.3, il est impossible d'utiliser RMEBuilder si ce dernier se situe dans un répertoire dont le chemin contient un caractère spécial (un accent par exemple) ou qu'il pointe vers des projets contenant des caractères spéciaux dans leur nom.
Nous sommes désolé de ce soucis que nous tâchons de régler en interne.

Utilisation normale

Premier lancement

Pour lancer RMEBuilder, il suffit de cliquer sur RMEBuilder.bat (qui est un raccourci pour lancer le logiciel). Au premier lancement, le logiciel demandera de choisir le projet cible. Il est impératif de pointer un projet RPGMaker VXace valide.
Une fois que le logiciel connait le projet cible, un dispositif de saisie de commande est accessible. L'usage de ce dispositif permet d'entrer des commandes relatives à la construction d'un projet.

A tout moment il est possible de changer de projet cible en entrant la commande target, qui en plus de donner le chemin du projet cible, permet de changer cette cible.

Voici un exemple de premier lancement de RMEBuilder.

launch RME! Agrandir !

Composition d'un schéma

Une fois qu'un projet est ciblé dans le logiciel, on peut désormais ajouter les scripts que l'on veut dans son projet. Pour cela, on se sert de la commande show qui affiche la liste des paquets disponibles sur le net.
La commande about nom-du-paquet permet de renvoyer les informations (description, auteurs etc) relative à un paquet.

launch RME! Agrandir !

Pour ajouter des paquets au projet, il suffit d'utiliser la commande add nom-du-paquet. Cette commande aura pour effet d'ajouter un paquet dans la liste des paquets à intégrer au projet.
La commande schema permet d'afficher la liste des paquets à installer.

launch RME! Agrandir !

Il est évident que si RMEBuilder est fermé, à sa réouverture, l'ensemble des scripts présents dans le schéma seront toujours visibles !

Moduler le schéma

Par défaut, lors de la phase de "compilation", que nous verrons un peu plus tard, les scripts sont installés par ordre d'ajout. Il est donc évidemment possible de changer cet ordre :

launch RME! Agrandir !

Ahah dans le Gif, j'ai fait une faute de frappe (mouwe aha) :D désolé !

Compiler votre projet

Une fois que votre schéma est, de votre point de vue, complet, vous pouvez compiler votre projet. Une compilation dans RMEBuilder consiste à télécharger les scripts présent dans le schéma et de les assembler dans le fichier Scripts.rvdata2.

Attention, avant de "compiler" votre projet, il est impératif de fermer votre projet dans RPGMaker. Vous pourrez l'ouvrir après, une fois la compilation exécutée.

launch RME! Agrandir !

Au lancement de la commande build, le logiciel va télécharger les scripts s'il ne les connait pas, et va créer un fichier Scripts.rvdata2 qu'il va fusionner avec les scripts déjà existants. Votre projet peut donc déjà contenir des scripts pré-installés.
À chaque fois que la commande build est appelée, les éléments construits par RMEBuilder sont purgés. Donc si vous retirez, après une compilation, un élément de votre schéma (via la commande remove) et que vous recompilez (build), les mises à jour auront bien été prises en compte.

Gestion des Assets

Il arrive parfois que lors de la compilation de votre projet RMEBuilder vous demande si vous désirez fusionner les assets. C'est lorsque le paquet propose des fichiers externes (des images ou une DLL par exemple). Lors de la première compilation avec un script requierrant des assets, il est généralement conseillé de répondre oui (Y). Par contre, lorsque le script a déjà été ajouté, il n'est pas nécéssaire de re-fusionner les assets. Imaginez par exemple qu'il s'agit d'image que vous avez déjà modifié, il serait dommage de perdre ces modifications!

A tout moment, vous pouvez récupérer les assets d'un paquet en utilisant la commande get assets of package-name.

Mettre à jour des paquets

Au lancement de RMEBuilder, ce dernier vérifie s'il existe des mises à jour pour vos scripts installés. C'est très pratique pour rester au courant des ajouts dans les scripts :

launch RME! Agrandir !

Vous pouvez aussi vous servir de la commande check updates, qui vérifiera si des paquets ne sont pas à jour.

Une fois qu'un paquet est mis à jour, il est impératif de refaire un build, donc en fermant le projet RPGMaker pour que la mise à jour soit prise en compte !

Gestion des dépendances

Si un paquet dépend d'un autre paquet, il n'est pas nécéssaire de le référencer dans le schéma. Au moment de la construction (à l'appel de la commande build ou build dev), le logiciel téléchargera les dépendances et les installera. Si un paquet à des dépendances et qu'il est supprimé du schéma, si la dépendance n'est pas explicitement (add) membre du schéma, elle sera aussi supprimée.

Compilation temporaire

Le problème de RMEBuilder, c'est qu'il faut le fermer à chaque ajout/modification. Pour palier à ce problème, il est possible de faire une compilation temporaire. En utilisant la commande build dev, vous créez un fichier temporaire, qui, au lancement du projet lira les scripts depuis l'endroit où ils sont téléchargés. L'avantage de cette méthode est qu'il ne faut utiliser le build dev (et donc fermer le projet RPGMaker) que quand on ajoute ou supprime un fichier dans le schéma. Chaque mise à jour de paquet n'implique pas de "rebuilder" le projet. C'est très pratique pour les scripts qui sont souvent mis à jour.
Par contre, avant de diffuser votre projet, il est impératif de faire un build pour ne plus faire dépendre le jeu des fichiers temporaires!

Mettre à jour RMEBuilder

Quand une mise à jour de RMEBuilder est disponible, le logiciel vous prévient, il suffit de valider la mise à jour et le logiciel se met tout seul à jour.

launch RME! Agrandir !

Avant de diffuser son projet

Une fois que votre projet est fini, vous pouvez supprimer le fichier build_schema.rb (sans avoir oublié de faire une dernière fois build, pour être sur que tous vos scripts sont installés) du répertoire du projet. Et il ne vous reste plus qu'a crypter (ou pas) votre projet et le diffuser !

Pour les scripteurs

RMEBuilder n'est évidemment pas destiné à ne rester qu'un outil pour diffuser nos scripts. Nous espérons qu'il sera utilisé par un maximum pour partager facilement des scripts à travers le monde ! (étoiles dans les yeux)

Rendre un script accessible depuis RMEBuilder

Medium de publication

Pour qu'un script soit accessible depuis RMEBuilder, il est important de comprendre qu'il doit être disponible depuis le net. Pour cela, nous avons pris l'habitude d'utiliser Github, qui nous permet de versionner nos scripts, cependant, vous pouvez vous servir de Dropbox (même si Github est vraiment adapté à ça!).

Notion de paquet

Pour qu'un script soit compréhensible par RMEBuilder, il est important que son anatomie soit décrite dans un fichier, qui devra toujours porter le nom package.rb

Exemple avec un paquet simple

Le paquet pris en exemple est le paquet nuki-break-scene, qui permet de créer facilement un système de pause. Son répertoire Github se trouve ici.
L'anatomie du paquet est assez simple, script.rb est le script (logique!) et package.rb décrit le paquet :

# Package description
  Package.new(
  	name: 'nuki-break-scene',
  	version: vsn(1, 0, 0),
  	authors: {'Nuki' => 'xaviervdw@gmail.com'},
  	components: ['script.rb'],
  	description: 'Provide a little customizable scene for InGame\'s pause',
  )
Comme vous pouvez le voir, il suffit d'instancier un objet Package. Ce paquet correspond au strict minimum.

Exemple avec plusieurs fichiers

Cette fois ci on se sert du paquet de RME. Comme vous pouvez le voir, il n'y a pas beaucoup de changements, si ce n'est qu'il y a plusieurs auteurs et plusieurs fichiers constituants :

# Package description
Package.new(
  name: 'RME',
  version: vsn(0, 0, 5),
  authors: {
    'Nuki' => 'xaviervdw@gmail.com',
    'Grim' => 'grimfw@gmail.com',
    'Raho' => '',
    'Joke' => 'joke@biloucorp.com',
    'Mspawn' => ''
  },
  components: [
    'SDK.rb',
    'SDK.Gui.rb',
    'Database.rb',
    'Internal.rb',
    'EvEx.rb',
    'Commands.rb',
    'Incubator.rb',
    'EE4Cmds.rb',
    'Tools.rb',
    'DocGenerator.rb',
    'Doc.rb'
  ],
  description: 'RME is a powerful tool to improve your RPGMaker VXAce experience!'
)

Exemple avec dépendances

Le script DisplayText (visible ici) requiert l'installation préalable du script StandardizeRGSS. Il suffit de le spécifier dans un argument dependancies, qui prend une liste des scripts dont dépendent le script en question :

# Package description
Package.new(
  name: 'display-text',
  version: vsn(1, 0, 0),
  authors: {'Nuki' => 'xaviervdw@gmail.com'},
  components: ['script.rb'],
  description: 'Provide a full customisable text engine',
  dependancies: ["standardize-rgss"]
)
Voila, vous en savez assez pour packager correctement vos scripts!

Exemple avec des Assets

Il arrive qu'un script soit compléter de fichiers complémentaires, des assets. Par exemple, une DLL ou encore des images. Pour ça il suffit d'ajouter un paramètre assets qui est un Hash dont la clé est l'url (relatif ou non) de la ressource et la valeur est sa position dans le projet. Voici par exemple le fichier paquet du script "raho-useless", qui ne sert que de démonstration aux assets :

# Package description
Package.new(
	name: 'raho-useless',
	version: vsn(1, 0, 0),
	authors: {'Hyperaho' => ''},
	components: ['script.rb'],
	assets: {
		'assets/raho1.png' => 'Graphics/Pictures/raho1.png',
		'http://full.ouplo.com/f/12/AgkA.png' => 'Graphics/Pictures/raho2.png'
	},
	description: 'Epic script for Epic projects'
)
Ce paquet utilise volontairement une image relative et une image absolue.

Attention ! N'oubliez pas que RMEBuilder se veut utilisé par un maximum de personne, n'hésitez donc pas à préfixer vos assets pour éviter les collisions ! Par exemple, si je propose un menu qui utilise une image, ne pas hésiter à nommer l'image nuki-menu-mon-image.png, pour garantir qu'elle n'écrase aucune image (ou qu'elle ne soit écrasée par personne).

Soumettre son paquet comme un patch à RMEBuilder

La liste des paquets est un dépôt Github. Pour y contribuer, il suffit simplement de "forker" ce projet. Pour ajouter un paquet, il suffit de modifier la liste des paquets disponibles dans le fichier packages.rb. En ajoutant une relation "nom du paquet" => "url du package.rb relatif".

Attention, il faut pointer vers un fichier brut. Pas vers une page html, pour Github il faut impérativement utiliser le lien raw pour que seul le contenu du fichier soit exporté (et non toute la page HTML).

Sur la sémantique des nom de paquet

Il n'y a pas de sémantique formellement fixée. Cependant, pour éviter des collisions de paquets, on propose de préfixer le nom d'un paquet par le pseudonyme de l'auteur. Si le paquet est un incontournable, il est possible de ne pas le préfixer. Cependant, nous nous réservons le droit de refuser une modifications de la liste des paquets, si un paquet en écrase un autre.

Le répertoire customPackages

Dans le répertoire RMEBuilder/customPackages, vous pouvez placer vos scripts en production. Il permet de lire des paquet sans qu'ils soient déjà hebergés. Vous pouvez donc créer des répertoires pour vos scripts en production dans ce répertoire et les travailler comme s'ils étaient déjà publiés. Cela évite de devoir publier d'entrée de jeu un script non terminé.
De plus, avec la compilation via build dev, vous pouvez modifier votre code depuis votre éditeur favori (emacs), sans devoir faire sans arrêt des copier-coller à la moindre modification.

Clonage de paquet existant

Pour une raison quelconque, on pourrait avoir envie de modifier un paquet déjà publié par quelqu'un d'autre, dans RMEBuilder vous pouvez vous servir de la commande clone nom-du-paquer et le paquet sera copié dans votre répertoire RMEBuilder/customPackages. Un paquet présent dans RMEBuilder/customPackages sera toujours placé au détriment d'un paquet externe dans la phase de construction, donc pour reprendre le paquet initial, il faut le supprimer du répertoire RMEBuilder/customPackages ou alors utiliser la commande reclone nom-du-paquet pour écraser la copie locale par la dernière version.

Conclusion

C'en est fini du tour de présentation de RMEBuilder, nous espérons qu'il sera réellement utile et qu'il changera les habitudes d'installation des scripts pour les simplifier. Nous espérons aussi que les scripteurs n'hésiteront pas à publier leurs scripts ! Plus on est de fous plus on rit :D
À BIENTÔT.