Didacticiel pour enregistrer des scores en ligne
Deux Extensions :
Get objet : qui va permettre d'envoyer des données sur internet.
String Parser : (Heum non et non, rien de coquin dans l'extension String Parser)
String Parser peut être remplacée par un autre objet qui permet de transformer une chaine en signature MD5 pour la sécurité..
Les logiciels compatibles :
Multimedia Fusion 2 et Multimedia Fusion developer 2. Utilisable aussi avec le module Flash mais pensez à protéger votre fichier swf. Fonctionne aussi en HWA
et très certainement avec le module Unicode.
Ce didacticiel n'est pas compatible avec les versions de démonstration et The Game Factory 2 à cause des incompatibilités à ajouter des extensions.
Autre :
Un espace internet qui accepte le PHP et une base de donnée pour enregistrer les scores.
Une connaissance en PHP.
Ce didacticiel n'est pas vraiment centré sur la partie php. Il vous faut donc une petite connaissance dans ce domaine. Je travaille sur une version française
de Multimedia Fusion dev II, j'utilise donc les termes Français pour tous ce qui touche le logiciel en lui même. Pour les extensions, je ne traduit pas les
termes utilisés. Si l'extenssion est en anglais, alors les termes utilisés dans le didacticiel sera en anglais.
Voici donc le plan de travaille.
-Récupérer le nom du joueur
-Récupérer le score du joueur
-Réaliser une clef de sécurité et la coder en format MD5.
-Envoyer le nom du joueur + le score du joueur + la clef de sécurité codée en MD5 sur une page Web.
-Faire un script pour récupérer les données qui ont étés envoyées.
-Récupérer le nom du joueur, le score du joueur et la clef de sécurité.
-Vérifier la clef de sécurité.
-Si la clef de sécurité est bonne, enregistrer le nom du joueur et le score du joueur dans la base de donnée..
Voici le cahier des charges pour le tuto. Pour l'exemple nous allons faire très simple. Une fois l'application téléchargé, un nombre aléatoire est généré
pour représenter le score du joueur. Un champ est présent pour récupérer le pseudo du joueur. Et un bouton poussoir sera implantée pour savoir le moment ou
l'aplication envois les données sur internet.
-Ouvrez un nouveau projet dans Multimedia Fusion 2.
-Nous allons utiliser la 1er scène pour notre programmation.
-Allez dans l'éditeur d'événement.
-Nous allons faire une nouvelle condition avec l'option, ''En début de scène''
-Allez dans la case ''objet joueur'' ( Représenté un Pad bleu.), et comme effet faite :
=>scores =>changer le score.
-L'éditeur d'expression s'ouvre.
-Cliquez en bas à droite sur
=> Récupérée les données d'un objet.
-Une nouvelle fenêtre s'ouvre pour sélectionner des objets.
-Allez sur l'objet condition spécial. Clique droit.
=>Générer un nombre aléatoire.
-Vous allez voir ça dans l'éditeur d'expression.
Random(>Entrer le nombre de base<)
Nous allons placer 10000.
Ce qui donne donc
=> Random(10000)
Maintenant nous allons faire apparaître le chiffre pour qu'il puisse être lisible.
-Placez un compteur sur la scène.
Toujours sur la même ligne avec comme condition : début scène.
-Allez sur la case du compteur, clic droit et choisissez comme effet
=>Changez le compteur.
-Récupérer les données d'un objet.
-Sur l'objet spécial joueur,
=>récupérer la valeur courante du score.
-Ce qui donne dans l'éditeur d'expression :
score( "Joueur 1" )
Nous avons terminé la partie score du joueur pour l'exemple.
Nous allons proposer de faire entrer un nom au joueur.
-Ajoutez l'objet 'Boîte d'Edition'' dans la scène.
Et c'est tous.
Nous allons utiliser un bouton poussoir pour déclencher l'envoi du score sur le net.
-Ajouter simplement l'objet Bouton.
-Changer le texte par Ok. (Double clique sur l'objet)
Bon nous allons détecter l'utilisation du bouton.
Nous allons donc faire une nouvelle condition.
Clique droit sur l'objet ''le bouton '' pour les conditions.
=>Si le bouton est cliqué.
Dans les actions nous allons tout de suite bloquer l'édition du pseudo.
Clique droit dans la case
Boite Édition. dans les effets.
=>Contrôle => Lecture Seul => On.
Avant de continuer le didactiel et les manipulation, voici un peu de théorie.
Pour notre exemple, nous allons prendre une adresse d'un site internet qui n'existe pas.
www.mmf2forever.fr
La page web qui va contenir le script qui aura l'effet d'ajouter le nom et le score dans la base de donnée. Cette page se nomme :
scorein.php , et elle se trouve à la racine du site web.
www.mmf2forever.fr/scorein.php
Dans notre exemple, MMF va envoyer 3 paramètres à l'adresse ou se trouve le scripte.
=>Le nom du joueur
=>Le score du joueur
=>Et une clef de sécurité crypté en format MD5.
Nous allons réaliser une clef en format MD5 qui va servir de sécurité. Une clef MD5, est une recette secrète de votre crus pour contrôler les données envoyées
sur internet. Il y a plusieurs manières de la faire. Voici un exemple.
Pour notre didacticiel, la clef de sécurité sera composé de :
-Le Pseudo du joueur
-Le score du joueur
-Et un mot clef choisi par le créateur.
C'est trois ingrédients sont placé bout à bout. Et le tout sera crypté en format MD5.
Voici un exemple.
-
Sylvanor c' est le pseudo
-
1000 c'est le score
-
Aëdemphia c'est le mot clef choisi.
Mise bout à bout cela donne donc ça :
=>Sylvanor1000Aëdemphia
Une fois transformé en format MD5, nous obtenons cette formule.
=>4ce13e6c21262a5c10565ec5f70defde
Dans un site web, il y deux moyens de communiquer des informations d'une page à une autre.
-La fonction Get (les variables sont visibles dans les liens).
-La Fonction Post. (Les variables sont invisibles dans les liens)
Avec
l'objet Get, nous avons la faculté d'envoyer des données en utilisant les deux procédés.
Nous allons utilisé la plus sécuritaire. L'option POST.
Téléchargez et ajoutez l'objet
Get sur vôtre scène.
Deux précisions :
-Vérifiez que dans les effets il y a bien l'option :
=>Post.
Car les vielles version de l'extenssion ne pouvait envoyer qu'en mode Get.
- L'objet Get n'a rien à voir avec les Robots du jeu vidéo Mass Effect. Vous avez donc rien à craindre de Saren.
(Oui je recycle l'image speudo xd)
Nous allons placer le nom du joueur dans la variable pseudo du mode Post.
Dans la même condition du Bouton enclenché.
-Clique droit dans la case de l'objet Get.
=>Add Post Data
L'éditeur d'expression va s'ouvrir. Et vous allez avoir des paramètres à configurer.
=>Name : nous allons écrire le nom de la variable. « pseudo »
=>Value :Nous allons récupérer ce que le joueur à marqué dans la boite d'édition pour cela :
-Récupérer les données de l'objet.
-Clique droit sur l'objet boite d'édition.
=>Récupérer le texte
.
Ce qui me donne ça dans mon 'exemple.
Editselect$( "boite-pseudo" )
(Toujours du recyclage et toujours sur la même ligne et l'objet Get.)
=>Add Post Data
=>Name : score
=> Value : Attention : il faut convertir un nombre en chaine. Cliquez sur récupérer les données de l'objet.
-Objet spécial :
=>Convertir un nombre en chaine. Ce qui donne ça :
Str$(>Entrer le nombre à convertir<)
Placez le score courant du joueur entre les ( ). (Le technique à été donnée au début du tuto pour récupérer un score !)
Vous devez placez l'objet
string parser sur la scène pour convertir en MD5.
Nous allons entrer du texte dans string parser.
-Toujours sur la même ligne, clique droit dans la case string parser.
=>Set source string.
Récupérer le nom du joueur dans l'objet boite d'édition +
récupérer le score converti en chaine du score du joueur +
le mot clef que vous avez choisis. Aëdemphia dans notre exemple.
Exemple d'expression :
Edittext$( "boite-pseudo" )+Str$(score( "Joueur 1" ))+"Aëdemphia"
Maintenant nous allons transformer ça en MD5 et faire comme plus haut paramétrer un Post.
=>Add Post Data
=>Name : clef
=>Value : Récupérer les données de l'objet string parser,
=>Filters => Get MD5 signature.
Allez derniers truc. Toujours sur la même ligne. Nous allons envoyer le score à la page web.
Pour ça toujours avec l'objet Get et sur la même ligne.
=>Get URL
L'éditeur d'expression s'ouvre. Dans l'éditeur je place la page web ou se trouve le script.
Dans mon exemple :
www.mmf2forever.fr/scorein.php
Et si je veux envoyer en GET ?
Il est tous à fait possible d'envoyer vos donner plus facilement lisible. Pour cela, ce n'est pas la peine d'utiliser les options posts. Dans notre exemple,
il suffit d'utiliser l'expression Get URL et d'écrire manuellement les variables + d'aller chercher le pseudo, le scores et la clef md5.
Ce qui donnera en gros ce genre de truc à envoyer.
www.mmf2forever.fr/scorein.php?pseudo=
pseudo du joueur&score=
score du joueur&clef=
la clef md5
Dans le script pour sortir les variables, il ne faut pas utiliser, $_POST
mais $_GET
(Encore ?)
Oui, je vais vous expliquer pourquoi une clef en format MD5 !
C'est une sécurité pour savoir si les données qui sont envoyés proviennent bien de votre application, et non d'un envoi extérieur.
Dans notre exemple, la page internet ou se situe le scripts va analyser deux variables. Le Pseudo du joueur, et le scores pour enregistrer ces deux données.
Si une personne mal intentionné trouve les deux variables Posts, il peut envoyer un score et un pseudo très facilement, votre script ne fera pas de différence
si cela provient de l'application ou pas.
C'est la que la clef de sécurité entre en jeu pour limiter la casse on va dire. L'application va envoyer une 3em donnée qui est une signature en cryptage MD5.
Dans cette signature, il y a un mot clef secret qui doit être connus seulement de vous, de l'application et du script.
Dans le script PHP, grâce à la formule, la signature MD5 va être recomposée et comparé à la signature envoyé par votre application. Si les deux formules sont
identiques alors, le score et le pseudo sont enregistrés. Pour qu'un élément extérieure enregistre dont le score cette fois si, il doit connaître la formule
secret que vous avez composé.
Pourquoi utiliser du MD5 ?
Tous simplement par ce que le cryptage MD5 est pour le moment pratiquement irréversible.
L'envoi fini
Nous allons faire une nouvelle condition.
Objet Get :
=>On Get Complete.
Dans les actions :
=>Terminer l'application.
Voici la feuille de programmation.
Bon c'est la que vos compétences en php doivent être utile.
-Dans ma base de donnée, j'ai réalisé une table tutoscoremmf
avec 3 champs.
Id en int avec la case auto-increment
pseudo avec type verchage.
et score en type int
Voici le script avec des commentaires.
<?php
// Variable de connexion
$adresse = 'localhost';
$nom = 'root';
$motpasse = '';
$basedonnee = 'vivemmf';
//récupération des variables qui sont envoyées par MMF
$pseudo = stripslashes($_POST['pseudo']);
$score = stripslashes($_POST['score']);
$keymmf = stripslashes($_POST['clef']);
//Mot Clef choisi
$key = "Aëdemphia";
//Connexion à la base de donnée
mysql_connect($adresse, $nom, $motpasse);
mysql_select_db($basedonnee);
//Re codage MD5
$V_md5 = md5($_POST["pseudo"].$_POST["score"].$key);
//Verification si le codage du nom et du score récupéré en POST = au codage dans MMF
if ($V_md5 == $keymmf)
{
// Si oui enregistrement dans la base de donnée.
mysql_query("INSERT INTO tutoscoremmf VALUES('', '" . $pseudo . "', '" . $score . "')");
}
?>
Attention, ceci est un exemple de script.
Voilà. Maintenant à vous de travailler pour améliorer, et surtout sécuriser les scripts php pour vos jeux et faire le script pour lire les scores de votre
base de donnée.
Bonne création et Bisous.
Télécharger le MFA