Forum Solarus-Games francophone

Jeux amateurs => La création de jeux en général => Discussion démarrée par: SaniOKh le 13 Avril 2009 à 23:12

Titre: [RM2K/RM2K3]SaniOKh's Patch
Posté par: SaniOKh le 13 Avril 2009 à 23:12
Certains d'entre vous ont déjà fait le tour ici:
http://forums.zelda-solarus.com/index.php/topic,19952.msg369810.html#msg369810

J'ai commencé, depuis un certain moment, un projet d'ajout de fonctionnalités dans RPG Maker 2000. En m'inspirant du Ineluki Key Patch, mon choix s'est porté (pour l'instant) sur la création d'une DLL qui remplacerait Harmony.dll.

Pour info: Harmony.dll est une DLL qui gère le son de RPG Maker et comporte une fonction dont personne à ma connaissance ne s'est servi, celle de retourner la position courante dans le fichier Midi qui est en lecture.

Pour l'instant, la modification que j'ai faite permet de récupérer dans le jeu RPG Maker 2000/2003 (vu que la DLL est identique d'une version à l'autre) la date et l'heure en cours. Ce qui permettrait, par exemple, de créer des jeux qui utilisent l'heure réelle pour leur système de jour/nuit, un peu comme dans Pokémon Or/Argent/Cristal.



Comment l'installer


Téléchargez ceci: http://rapidshare.com/files/220966484/harmony_dt.zip
Après, renommez le Harmony.dll déjà présent dans votre jeu en RealHarmony.dll et recopiez le Harmony.dll contenu dans le zip dans votre projet. Les autres fichiers (fichiers vides en .wav) vont dans le dossier des sons.
Le patch peut être utilisé en même temps que Ineluki Key Patch :) .


Comment l'utiliser


Pour récupérer une valeur, il faut jouer un des faux sons téléchargés avec le patch, puis attribuer à une variable la valeur "Position Midi"(tout en bas de la fenêtre "Changer Variable", dernier choix dans la liste déroulante) . L'effet d'un "son" reste jusqu'à ce qu'un autre faux son soit joué.
Les "sons" proposés sont:


Et après?


Et après... je ne sais pas :) . Pour l'instant, je vous mets cette DLL pour que vous puissiez la tester. Je ne l'ai pas testée sur RM2K3, mais je suppose que ça marchera comme sur RM2K.
Je continuerai à chercher d'autres fonctions que je pourrai rajouter à ce patch. Je pourrai aussi sortir le code source un peu plus tard.

Ces screenshots ont été faits avec une version précédente de la DLL, mais j'ai réussi à réproduire les mêmes écrans avec la version courante:
(http://img524.imageshack.us/img524/8498/screen1q.png) (http://img524.imageshack.us/my.php?image=screen1q.png)(http://img49.imageshack.us/img49/269/screen2v.png) (http://img49.imageshack.us/my.php?image=screen2v.png)
(http://img160.imageshack.us/img160/3899/screen3h.png) (http://img160.imageshack.us/my.php?image=screen3h.png)(http://img26.imageshack.us/img26/6367/screen4mqc.png) (http://img26.imageshack.us/my.php?image=screen4mqc.png)
(http://img16.imageshack.us/img16/723/screen5d.png) (http://img16.imageshack.us/my.php?image=screen5d.png)

Attention: évitez d'utiliser la DLL directement dans vos projets (pour l'instant, elle est en phase de test). Créez plutôt des petits projets bidon pour la tester. Je ne suis pas responsable si cette DLL ruine vos jeux (il y a peu de chance qu'elle le fasse, mais je préfère le dire :) ).
Titre: Re : [RM2K/RM2K3]SaniOKh's Patch
Posté par: Morwenn le 13 Avril 2009 à 23:19
Et bien que dire. Ça ne fait pas grand-chose pour le moment, c'est sûr, mais ce qui est bien, c'est de voir qu'au moins, tu as réussi à modifier ce fichier au final, et que le résultat marche :)
En tout cas, grâce à ce début de patch, tu vas créer la première génération de jeux RM qui ne marchent que si on les lance la nuit, et donc créer entre autres un gros tas de jeunes nouveaux geeks qui se lèveront au milieu de la nuit pour pouvoir jouer à leur jeu amateur favori :linkXD:

Nan, sérieux, c'est bien que tu sois arrivé à faire ne serait-ce que, au moins, ça montre que tu as réussi à modifier le code à ton avantage, et donc que tu pourras sûrement faire d'autres trucs plus intéressants par la suite ;)
Maintenant, on n'a plus qu'à attendre voir ce qui va venir ensuite, mais bon, puisque c'est toi, j'ai confiance Sani' :D
Titre: Re : [RM2K/RM2K3]SaniOKh's Patch
Posté par: SaniOKh le 14 Avril 2009 à 21:26
Merci ;) .
Je prévois dans un avenir assez proche de développer un système de variables qu'on pourrait écrire dans un fichier. Certes, ce sera difficile à manipuler (imaginez que vous avez un tableau de variables, et tout ce que vous pouvez faire dessus comme opération, c'est passer d'une variable à une variable voisine, ajouter 1 ou soustraire 1 de la variable, et, bien sûr, retourner les valeurs, énregistrer les variables dans un fichier et les lire), mais ça aura un intérêt énorme. Vous pourrez, par exemple, faire de sorte qu'une fois un joueur débloque un bonus, toutes les autres parties en tirent profit; créer un système d'échange d'objets entre sauvegardes; proposer une option supplémentaire au début d'une nouvelle partie si le jeu a déjà été terminé au moins une fois...
Les fonctions qui n'acceptent rien en entrée et retournent un entier, ça ne laisse pas beaucoup de liberté, en effet, mais on peut toujours se débrouiller :) .
Titre: Re : [RM2K/RM2K3]SaniOKh's Patch
Posté par: Christopho le 14 Avril 2009 à 22:52
Il doit bien y avoir un moyen de passer des informations à la fonction autrement qu'en les passant en paramètre non ?
Titre: Re : [RM2K/RM2K3]SaniOKh's Patch
Posté par: SaniOKh le 16 Avril 2009 à 21:46
... je ne vois pas exactement ce que tu veux dire.
Titre: Re : [RM2K/RM2K3]SaniOKh's Patch
Posté par: SaniOKh le 01 Mai 2009 à 20:14
Nouvelle version!

Télécharger une démo (qui inclut la DLL et les fichiers .wav nécessaires) ici: http://rapidshare.com/files/227988727/dll_test.zip

La grande nouveauté... voir un de mes posts précédents:
Citation de: SaniOKh le 14 Avril 2009 à 21:26
Merci ;) .
Je prévois dans un avenir assez proche de développer un système de variables qu'on pourrait écrire dans un fichier. Certes, ce sera difficile à manipuler (imaginez que vous avez un tableau de variables, et tout ce que vous pouvez faire dessus comme opération, c'est passer d'une variable à une variable voisine, ajouter 1 ou soustraire 1 de la variable, et, bien sûr, retourner les valeurs, énregistrer les variables dans un fichier et les lire), mais ça aura un intérêt énorme. Vous pourrez, par exemple, faire de sorte qu'une fois un joueur débloque un bonus, toutes les autres parties en tirent profit; créer un système d'échange d'objets entre sauvegardes; proposer une option supplémentaire au début d'une nouvelle partie si le jeu a déjà été terminé au moins une fois...
Les fonctions qui n'acceptent rien en entrée et retournent un entier, ça ne laisse pas beaucoup de liberté, en effet, mais on peut toujours se débrouiller :) .

Voilà, vous avez à votre disposition un tableau de 16 variables. Leurs numéros vont de 0 à 15. Leurs valeurs vont de -999999 à 999999 (valeurs minimales et maximales gérées par RPG Maker).

Les nouveaux "sons" ont les effets suivants:

Ouverture/fermeture des fichiers
Pour les utiliser, il suffit de jouer le "son" correspondant. La fonction "Position Midi" retourne le numéro de la variable courante, mais il n'est pas nécessaire de la lancer pour utiliser ces fonctions.

Navigation entre variables
Pour les utiliser, il suffit de jouer le "son" correspondant. La fonction "Position Midi" retourne le numéro de la variable courante, mais il n'est pas nécessaire de la lancer pour utiliser ces fonctions.

Manipulation des variables
Pour les utiliser, il suffit de jouer le "son" correspondant. La fonction "Position Midi" retourne la valeur de la variable courante, mais il n'est pas nécessaire de la lancer pour utiliser ces fonctions.

Lecture seule
Parfois, quand il vous faut seulement le numéro ou la valeur de la variable et que vous ne voulez pas faire d'opérations dessus, utilisez ces deux "sons".

Améliorations prévues pour les prochaines versions:
Titre: Re : [RM2K/RM2K3]SaniOKh's Patch
Posté par: SaniOKh le 03 Mai 2009 à 15:08
J'ai réussi à diviser le patch en plusieurs fichiers DLL.
http://rapidshare.com/files/228633845/patch1.0.zip
(inclut les DLL et les WAV nécessaires)

Désormais, la DLL principale ne contient que le traitement de "_DLL_default.wav" (retourne la valeur que retournerait la fonction "Position Midi" sans le patch).
Les autres fonctions sont désormais dans les plug-ins (DLL supplémentaires contenues dans un nouveau dossier "Extra").
Pout installer un plug-in, il suffit juste de recopier la DLL dans le dossier "Extra" du projet et les "sons" nécessaires dans le dossier "Sound".
Le dossier "Extra" doit exister et contenir le fichier "RealHarmony.dll" (le "Harmony.dll" d'origine).

Pour ceux qui s'intéressent à ce projet, vous pouvez désormais contribuer en écrivant des plug-ins. Pour vous donner un exemple, voici le code source (langage C, license LGPL) du plug-in qui retourne la date et l'heure:
http://rapidshare.com/files/228636486/datedll.source.zip
A compiler avec DevC++ en utilisant la commande:
$(CC) -o DateHarmony.dll datedll.c -shared datedll.def

Chaque plug-in contient quatre fonctions:

A part ça, les "sons" qui font retourner la date et l'heure sont désormais préfixés de "_DLL_date_" au lieu de "_DLL_", et deux "sons" ont été ajoutés:
Titre: Re : [RM2K/RM2K3]SaniOKh's Patch
Posté par: Daru13 le 03 Mai 2009 à 15:39
C'est vraiment sympa tout ça, on voit que tu t'impliques :).
C'est un bon outil pour les utilisateur de RM03, j'espère que tu va pouvoir pousser plus loin les limites, encore une fois ^^.
Titre: Re : [RM2K/RM2K3]SaniOKh's Patch
Posté par: SaniOKh le 11 Mai 2009 à 22:53
Bien que je n'ai pas fait de download cette fois, j'ai une bonne nouvelle à vous annoncer.
Dans la version en préparation, on peut supprimer les faux sons après avoir fini le développement du jeu, histoire de ne pas encombrer le dossier "Sound". Pendant le jeu, si le patch reconnaît le son à jouer comme une des fonctions du patch, il se contente de l'exécuter et ne vérifie pas si le fichier existe.
Aussi, j'ai fait un petit utilitaire qui analyse les plug-ins et crée automatiquement les faux sons nécessaires.