Sujet n°10187
Posté par Sphinx le 14 Aoû - 14:55 (2011)
Titre : Echanges en temps réel
Echanges en temps réel


    :? Arrête de flooder l'ami... C'est pas drôle comme blague !

Si seulement c'était une blague. Mais c'est tout à fait réel ! Enfin maintenant, ca l'est ^^ Mais je vais vous détailler tout ca, car c'est un topic on ne peut plus sérieux :p

    I) Principe général

Pour créer la version 1.0b présentée ici, j'ai repris le concept créé par Krosk - l'échange qui se base sur les codes échanges que les deux joueurs devront s'échanger avant, en gros comme ca se fait déjà avec le système disponible par défaut - à partir duquel j'ai basé le système d'échanges en temps réel.
Après avoir échangé au préalable leurs codes échanges respectifs, les deux joueurs n'ont plus qu'à accéder au centre d'échanges, puis à échanger leurs pokémons. Etant donné que l'échange se fait en temps réel, entre chaque décision, un temps d'attente peut être observé (l'échange ne se poursuit que lorsque les deux joueurs ont validé l'étape précédente). Afin de la faire passer plus agréablement, une petite animation a été dessinée tout spécialement par Disscat.
Si l'option SAVEBOUNDSLOT (option de PSP0.7 activée par défaut qui oblige le joueur à sauvegarder sa partie sur le même slot) est activée, la partie est automatiquement sauvegardée avant puis à la fin de l'échange.

    II) Installation :

Cette partie est la plus complexe de ce tutorial. Je vais donc faire au mieux pour ne pas m'attarder sur les détails - pour ceux que ca intéresse, j'y consacrerai la prochaine partie -, mais je vous conseille également de relire autant de fois que nécessaire.
L'installation se décompose en deux sous parties :
      A) Installation côté serveur :

    Derrière ce titre effrayant se cache quelque chose de très simple, finalement. Le seul prérequis indispensable, c'est un hébergement qui permette d'exécuter des pages PHP (il en existe énormément de gratuits sur internet, inutile de vous ruiner pour ce tutorial). Ceci dit, je n'ai testé qu'avec un serveur Free (inutile d'être chez eux pour vous ouvrir un espace perso gratuit chez eux Clin d'œil foireux) dont je me suis servi pour mettre au point ce système. Mais tout semble indiquer que ca marchera très bien également sur n'importe quel autre hébergeur, quoiqu'il vaudrait mieux éviter ceux qui ajoutent automatiquement des pubs.

    Pour faire simple, créez simplement un dossier (que vous pouvez appeler echanges, placé à la racine de votre serveur par exemple) puis placez y ce fichier :
    index.php

    (pensez à le dézipper avant de le placer sur votre serveur, bien sur ^^)

    Retenez l'endroit où est placé ce fichier, vous en aurez besoin tout à l'heure.

      B) Installation dans votre projet :

    Cette fois le titre est simple à comprendre, et ne fait pas peur. Toutefois, vous verrez qu'il y a plusieurs scripts à installer, ce sera donc un peu plus long que pour le point précédent.
    Tout d'abord, vous devrez installer les scripts suivants :


    Ensuite, vous devez copier les scripts suivants au dessus de Main dans votre projet :
    Citation:
    Les poster ici provoquait un bug avec les balises Code & Spoiler, donc je les ai uploadés et je les ai compressés dans ce fichier :

    qui contient 3 fichiers texte, ce sont les 3 scripts à copier/coller dans votre projet.

    Au début du script Scene_Echanges, vous avez ca :
    Code:
        # L'adresse de votre site internet
        HOSTNAME = ""
        # Le chemin d'accès vers le script d'échange PHP
        # (exemple /dossier/fichier.php)
        DIRNAME = ""
        # Nombre de frames avant annulation de l'échange
        FRAME_TIME_OUT = 600

    Indiquez entre les guillemets de HOSTNAME l'adresse de votre serveur sans le précéder de http://.
    Entre les guillemets de DIRNAME, indiquez le chemin d'accès vers le fichier index.php que vous avez mis sur votre serveur tout à l'heure.
    Ensuite, la valeur du FRAME_TIME_OUT sert à déterminer le nombre de frames qui seront affichées en attendant l'autre partie.
    Enfin, téléchargez cette archive qui contient les ressources graphiques et audio utilisées par ce script, puis dézippez le dans le dossier de votre projet.
    Voici la liste des fichiers contenus dans l'archive ZIP :
    • Audio/
      • BGM/
        • PkmRS-Evolving.mid
            Musique de l'animation d'échange
        • PkmRS-MtChimney.mid
            Musique de fond de la scène
      • ME/
        • Caughtjingle.mid
            Son de fin de l'animation d'échange
      • SE/
        • Pokemove.WAV
            Son utilisé dans l'animation d'échange

    • Graphics/
      • Pictures/
        • echange_barre.png
            Barre de progression
        • echange_fond.png
            Fond de la scène
        • echange_interface1-1.png
        • echange_interface1-2.png
        • echange_interface1-3.png
        • echange_interface2.png
        • echange_interface3.png
        • echange_interface4.png
            Eléments de l'animation d'échange
        • messagedummy.png
            Fond de message
        • Persian_00.png
        • Persian_01.png
        • Persian_02.png
        • Persian_03.png
        • Persian_04.png
        • Persian_05.png
        • Persian_06.png
        • Persian_07.png
        • Persian_08.png
        • Persian_09.png
        • Persian_10.png
        • Persian_11.png
            Les 12 frames de l'animation d'attente

    Si certaines de vos ressources portent déjà ce nom là, à fortiori si vous les avez personnalisées, renommez les avant de décompresser l'archive, vous éviterez de les remplacer.


Et voilà, vous avez fini l'installation de ce système ! Vous pouvez souffler maintenant ! ^^

    III) Utilisation :

Après une installation assez longue, je suis au regret de vous annoncer que l'utilisation de ce système est on ne peut plus complexe... Il faut créer un évènement, et y glisser cette insertion de scripts :
Code:
echange_temps_reel

Si vous y êtes arrivé, je vous tire mon chapeau :p

Ensuite, réchauffez, servez, puis testez ^^

    IV) Vidéo du système :

La vidéo ci après représente 2 fenêtres du jeu ouvertes filmées au même moment sur 2 ordinateurs différents (j'ai assemblé les 2 vidéos en une seule), pour vous montrer que le système tourne bien en temps réel.


    V) LMDLF (Le mot de la fin) :

J'ai fait divers tests (j'ai testé un maximum de situations, une majorité lors de l'élaboration du système avec des bêtatesteurs qui ont bien volontiers accepté de sacrifier de leur temps, puis je l'ai fini ces jours ci en le testant seul sur deux ordinateurs) et le système est fonctionnel. N'hésitez pas à le tester et à me signaler d'éventuels effets de bord.

    V) Nombreux crédits - par ordre alphabétique - :

Tout d'abord, je remercie ceux qui ont contribué à la mise en place de ce système (y compris en perdant un peu de leur temps en testant ce système) :
  • Disscat, pour l'animation d'échange ainsi que l'animation d'attente ;
  • Samyh, pour le back de la scène d'échange ;
  • Yuri, pour les classes Socket et Web_File qui permettent de contacter le serveur PHP.


Je remercie également les testeurs qui ont également bien aidé à l'élaboration du système d'échanges en temps réel :
  • Angi-Mk ;
  • Emeraude ;
  • Spiky ;

Posté par Conan Edogawa le 18 Aoû - 18:22 (2011)
Titre : Re: Echanges en temps réel
Sphinx a écrit:
 (il en existe énormément de gratuits sur internet, inutile de vous ruiner pour ce tutorial). 


comme par exemple?

Posté par Brendan75 le 18 Aoû - 18:29 (2011)
Titre : Echanges en temps réel
Déjà bravo pour ce script magnifique ! Maintenant, j'ai quelques problèmes pour le faire fonctionner...
Déjà, à la ligne 172 de la scene, il y a une variable "e" qui n'est pas défini chez moi, c'est un oubli ? Ou une incompatibilité RGSS ?
Code:
EXC::error_handler(e)

Ensuite, lorsque je tente de me connecter à un serveur quelqu'il soit, j'ai un bug
Log

---------- Erreur de script : Web_File ----------
----- Type
NoMethodError

----- Message
- ARGS - ["%", "%25"]
private method `gsub' called for nil:NilClass

----- Position dans Web_File
Ligne 82

----- Backtrace
Script : Web_File | Ligne : 82 | Méthode : in `post_to_httppost'
Script : Web_File | Ligne : 120 | Méthode : in `make_var'
Script : Web_File | Ligne : 114 | Méthode : in `each'
Script : Web_File | Ligne : 114 | Méthode : in `make_var'
Script : Web_File | Ligne : 36 | Méthode : in `read'
Script : Scene_Echanges | Ligne : 310 | Méthode : in `animation_attente'
Script : Scene_Echanges | Ligne : 60 | Méthode : in `main'
Script : Main | Ligne : 49


Voilà tout ^^

Posté par Sphinx le 18 Aoû - 18:57 (2011)
Imbécile heureux Le e, c'est effectivement un oubli de ma part, la variable à utiliser en théorie à cette ligne s'appelle nme.

=> Pour l'autre bug, à quel niveau se déclenche t il ?

pikachu5000 a écrit:
Sphinx a écrit:
 (il en existe énormément de gratuits sur internet, inutile de vous ruiner pour ce tutorial). 


comme par exemple?

http://www.infowebmaster.fr/hebergeur_gratuit_sans_pub.php
Voici une liste - que je suppose à jour - d'hébergeurs gratuits sans publicité Clin d'œil foireux Il est vrai que je n'ai pas abordé l'ouverture d'un espace perso (appelé serveur dans ce tutoriel) sur internet, j'aurais peut être du.

Posté par Brendan75 le 18 Aoû - 19:01 (2011)
Sphinx a écrit:
Imbécile heureux Le e, c'est effectivement un oubli de ma part, la variable à utiliser en théorie à cette ligne s'appelle nme.

=> Pour l'autre bug, à quel niveau se déclenche t il ?


Dès le premier "animation_attente".

Posté par Legendaire45 le 19 Aoû - 11:27 (2011)
Sphinx,ton script est-il compatible avec PSP ds,quel modif faut-il faire pour le rendre compatible??

Posté par Nuri Yuri le 19 Aoû - 11:28 (2011)
Il faut modifier les classes d'affichage et utiliser la DLL non modifié (elle fais moins d'un Mo).

Posté par Legendaire45 le 19 Aoû - 12:05 (2011)
QUel est la dll(elle est pas sur ce topic),sinon pour l'affichage j'ai trouvé mais j'ai des bug avec le script afficher_message de PSP DS qui prend en compte que 3 argument et non 5!!

Posté par Pαlвσlѕку le 19 Aoû - 13:04 (2011)
La dll est présente dans PSP 0.7 et PSP 4G+ et PSP DS v0.3.

Posté par Legendaire45 le 19 Aoû - 19:05 (2011)
Oui mais quel est cette dll,quel est son nom??

Posté par Brendan75 le 19 Aoû - 19:31 (2011)
RGSS 100J.dll, je crois.

EDIT : mon bug est résolu, je n'avaiss pas rentré de code dans "Son_code.txt"... Cela dit, il serait bon de rajouter qq lignes de codes pour les oublieux de mon genre. ^^'
EDIT2 : Serait-il possible de rendre les DLLs compatibles ?

Posté par Yorick le 20 Aoû - 14:21 (2011)
Peut-être faudrait-il maintenant un Tuto' pour l'adapter à PSPDS 0.4 ? Imbécile heureux

Posté par Pαlвσlѕку le 20 Aoû - 14:46 (2011)
Yorick a écrit:
Peut-être faudrait-il maintenant un Tuto' pour l'adapter à PSPDS 0.4 ? Imbécile heureux

Le problème c'est que la dll actuelle ne permet pas de faire fonctionner le système, et je ne compte pas remettre l'ancienne dll.

Donc, pour le moment pas de tuto', le temps qu'on trouve une solution au problème.

Posté par Sphinx le 20 Aoû - 17:02 (2011)
Clin d'œil foireux De toute facon je suis en train de refondre ce script pour passer outre les codes échange. Quand il sera fonctionnel à 100%, vous serez "connectés" au serveur, et vous choisirez votre ami dans une liste.

En outre, Yuri travaille sur une nouvelle DLL qui règlerait le soucis de l'incompatibilité de celle de PSPDS0.4
Restera encore à adapter l'animation à DS 42

Posté par Nuri Yuri le 20 Aoû - 17:09 (2011)
Le souci d'incompatibilité n'est pas réglable :S, sinon, pour que ça fonctionne, utilisez la DLL fourni avec RMXP et ça marchera parfaitement, après faut faut modifier les script d'affichage.
Pour la résolution de l'écran, normalement PSP DS met automatiquement la bonne quand la DLL n'est pas celle qui est fourni avec PSP DS 0.4 alors ça ne devrai pas poser de problèmes.

Posté par Pαlвσlѕку le 20 Aoû - 17:24 (2011)
C'est vrai, mais c'est moche si c'est la redimension par script.

Sinon, j'ai déjà commencer à modifier les scripts d'affichage, entre autre, l'affichage des messages.
Je n'ai pas encore travaillé sur les animations.

Posté par Sphinx le 20 Aoû - 17:36 (2011)
Je précise au cas où que j'utilise une Window_Command (ou plus exactement une classe héritant de) pour la liste des connectés, donc que les animations n'ont pas été retouchées ^o^

Posté par Nuri Yuri le 20 Aoû - 18:07 (2011)
Pour la DLL que j'ai codé... Pour le moment, elle fonctionne en mode RGSS redimensionné par défauts... Mais il me semble que le test avais échoué avant hier donc je sais pas si ça marche à 100% en tout cas vous pourrez peut être (peut être c'est pas sur du fonctionnement) utiliser la DLL modifié de PSP DS avec ma DLL.

Posté par Sphinx le 24 Aoû - 17:24 (2011)
Clin d'œil foireux Nouvelle version présentée :

./10279.html