Discuss Scratch
- Discussion Forums
- » Français
- » Variable cloud et jeux en ligne
- benoit-aubry
-
Scratcher
12 posts
Variable cloud et jeux en ligne
bonjour je sais un peu me servir de la variable cloud mais que pour les « high-score » sinon pour faire des jeux en ligne j’ai pas vraiment compris. Est ce que quelqu’un qui sais s’en servir pourrait m’expliquer.
Merci
Merci

- samoht1616
-
Scratcher
500+ posts
Variable cloud et jeux en ligne
Salut ! Je ne sais pas trop m'en servir pour le multijoueur, mais je pense que ce topic pourrais t'intéresser.
- _-ValX-_
-
Scratcher
500+ posts
Variable cloud et jeux en ligne
Salut !
En fait il y a plusieurs façons de faire des jeux en lignes, mais toutes reposent sur le même système : l'encodage.
Les variables clouds n'acceptent que les chiffres, donc pour envoyer des données textuelles il faut utiliser un encodage. Ça consiste à transformer ta donnée textuelle en une donnée numérique, et faire l'inverse pour extraire la donnée du cloud.
Par exemple, si je veux encoder “ABC” dans le cloud, et que dans mon algorithme sait que A=4 B=7 et C=8 (c'est des valeurs que j'ai choisi au hasard pour l'exemple) alors il va envoyer dans le cloud “478” et il pourra aussi décoder ce nombre en “ABC”.
Si tu veux le code, regarde ici : https://scratch.mit.edu/projects/1232107543/
Maintenant que tu peux envoyer des données dans le cloud, il te faut un moyen d'utiliser ces données pour synchroniser les joueurs entre eux.
Pour ça, deux méthodes:
1 - Tu assignes l'une des 10 variables cloud (la limite de scratch par projet) à ton joueur et tu lui dis d'envoyer toutes ces données dans la variable en boucle. C'est très simple à implémenter (tu check dans l'ordre quel variable est utilisé = est changé régulièrement et si aucunes n'est dispo tu dis juste qu'il n'y a pas de place) mais ça pose quand même un inconvénient : on est limité à 10 joueurs max.
2 - Tu envoies tes données en boucles dans une variable au hasard. Tu n'a pas besoin d'assimiler des variables, juste tu regardes en permanence le cloud et si il y a une donnée que tu n'as pas déjà décodé tu la décode. C'est très pratique car ça évite d'avoir une limite de joueur (même si ça commence à lagger au bout d'un moment)
Ça c'est pour l'envoie de données. Mais pour la gestion d'évènement serveurs, c'est un peu plus compliqué. Il y a des éléments dans les jeux clouds qui sont communs à tout les joueurs et qui ont leur script à eux. Mais comment savoir quel joueur exécute ce script ? Quand c'est juste une petite animation qui boucle ça va, on peut utiliser une constante commune comme le bloc “secondes actuelles”, mais quand c'est un objet complexe comme un ballon de foot qui réponds à de la physique, il faut qu'il soit exécuté sur la machine de quelqu'un. Du coup, on assimile juste un “host” qui va se charger d'exécuter tout ces scripts sur sa machine. Si le “host” se déconnecte, tu changes juste le joueur (mais du coup il faut gérer qui va prendre le host, c'est encore une histoire de syncro les joueurs. Moi j'aurai pensé à faire une chaîne, genre le joueur choisi un joueur au hasard et envoie dans ses données “c'est CE joueur qui me remplacera” pour pas que ça est à se discuter entre les joueurs quand le host se déco.)
Voilà je sais pas si tu vas tout lire ça fait un peu beaucoup d'infos mdrr xDD essaie de regarder des tutos.
Bonne journée et bonne chance pour tes jeux clouds
En fait il y a plusieurs façons de faire des jeux en lignes, mais toutes reposent sur le même système : l'encodage.
Les variables clouds n'acceptent que les chiffres, donc pour envoyer des données textuelles il faut utiliser un encodage. Ça consiste à transformer ta donnée textuelle en une donnée numérique, et faire l'inverse pour extraire la donnée du cloud.
Par exemple, si je veux encoder “ABC” dans le cloud, et que dans mon algorithme sait que A=4 B=7 et C=8 (c'est des valeurs que j'ai choisi au hasard pour l'exemple) alors il va envoyer dans le cloud “478” et il pourra aussi décoder ce nombre en “ABC”.
Si tu veux le code, regarde ici : https://scratch.mit.edu/projects/1232107543/
Maintenant que tu peux envoyer des données dans le cloud, il te faut un moyen d'utiliser ces données pour synchroniser les joueurs entre eux.
Pour ça, deux méthodes:
1 - Tu assignes l'une des 10 variables cloud (la limite de scratch par projet) à ton joueur et tu lui dis d'envoyer toutes ces données dans la variable en boucle. C'est très simple à implémenter (tu check dans l'ordre quel variable est utilisé = est changé régulièrement et si aucunes n'est dispo tu dis juste qu'il n'y a pas de place) mais ça pose quand même un inconvénient : on est limité à 10 joueurs max.
2 - Tu envoies tes données en boucles dans une variable au hasard. Tu n'a pas besoin d'assimiler des variables, juste tu regardes en permanence le cloud et si il y a une donnée que tu n'as pas déjà décodé tu la décode. C'est très pratique car ça évite d'avoir une limite de joueur (même si ça commence à lagger au bout d'un moment)
Ça c'est pour l'envoie de données. Mais pour la gestion d'évènement serveurs, c'est un peu plus compliqué. Il y a des éléments dans les jeux clouds qui sont communs à tout les joueurs et qui ont leur script à eux. Mais comment savoir quel joueur exécute ce script ? Quand c'est juste une petite animation qui boucle ça va, on peut utiliser une constante commune comme le bloc “secondes actuelles”, mais quand c'est un objet complexe comme un ballon de foot qui réponds à de la physique, il faut qu'il soit exécuté sur la machine de quelqu'un. Du coup, on assimile juste un “host” qui va se charger d'exécuter tout ces scripts sur sa machine. Si le “host” se déconnecte, tu changes juste le joueur (mais du coup il faut gérer qui va prendre le host, c'est encore une histoire de syncro les joueurs. Moi j'aurai pensé à faire une chaîne, genre le joueur choisi un joueur au hasard et envoie dans ses données “c'est CE joueur qui me remplacera” pour pas que ça est à se discuter entre les joueurs quand le host se déco.)
Voilà je sais pas si tu vas tout lire ça fait un peu beaucoup d'infos mdrr xDD essaie de regarder des tutos.
Bonne journée et bonne chance pour tes jeux clouds

- benoit-aubry
-
Scratcher
12 posts
Variable cloud et jeux en ligne
Salut !
En fait il y a plusieurs façons de faire des jeux en lignes, mais toutes reposent sur le même système : l'encodage.
Les variables clouds n'acceptent que les chiffres, donc pour envoyer des données textuelles il faut utiliser un encodage. Ça consiste à transformer ta donnée textuelle en une donnée numérique, et faire l'inverse pour extraire la donnée du cloud.
Par exemple, si je veux encoder “ABC” dans le cloud, et que dans mon algorithme sait que A=4 B=7 et C=8 (c'est des valeurs que j'ai choisi au hasard pour l'exemple) alors il va envoyer dans le cloud “478” et il pourra aussi décoder ce nombre en “ABC”.
Si tu veux le code, regarde ici : https://scratch.mit.edu/projects/1232107543/
Maintenant que tu peux envoyer des données dans le cloud, il te faut un moyen d'utiliser ces données pour synchroniser les joueurs entre eux.
Pour ça, deux méthodes:
1 - Tu assignes l'une des 10 variables cloud (la limite de scratch par projet) à ton joueur et tu lui dis d'envoyer toutes ces données dans la variable en boucle. C'est très simple à implémenter (tu check dans l'ordre quel variable est utilisé = est changé régulièrement et si aucunes n'est dispo tu dis juste qu'il n'y a pas de place) mais ça pose quand même un inconvénient : on est limité à 10 joueurs max.
2 - Tu envoies tes données en boucles dans une variable au hasard. Tu n'a pas besoin d'assimiler des variables, juste tu regardes en permanence le cloud et si il y a une donnée que tu n'as pas déjà décodé tu la décode. C'est très pratique car ça évite d'avoir une limite de joueur (même si ça commence à lagger au bout d'un moment)
Ça c'est pour l'envoie de données. Mais pour la gestion d'évènement serveurs, c'est un peu plus compliqué. Il y a des éléments dans les jeux clouds qui sont communs à tout les joueurs et qui ont leur script à eux. Mais comment savoir quel joueur exécute ce script ? Quand c'est juste une petite animation qui boucle ça va, on peut utiliser une constante commune comme le bloc “secondes actuelles”, mais quand c'est un objet complexe comme un ballon de foot qui réponds à de la physique, il faut qu'il soit exécuté sur la machine de quelqu'un. Du coup, on assimile juste un “host” qui va se charger d'exécuter tout ces scripts sur sa machine. Si le “host” se déconnecte, tu changes juste le joueur (mais du coup il faut gérer qui va prendre le host, c'est encore une histoire de syncro les joueurs. Moi j'aurai pensé à faire une chaîne, genre le joueur choisi un joueur au hasard et envoie dans ses données “c'est CE joueur qui me remplacera” pour pas que ça est à se discuter entre les joueurs quand le host se déco.)
Voilà je sais pas si tu vas tout lire ça fait un peu beaucoup d'infos mdrr xDD essaie de regarder des tutos.
Bonne journée et bonne chance pour tes jeux clouds
Merci

- _-ValX-_
-
Scratcher
500+ posts
Variable cloud et jeux en ligne
Pas de soucis
content que t'es tout lu
content que t'es tout lu- benoit-aubry
-
Scratcher
12 posts
Variable cloud et jeux en ligne
Pas de souciscontent que t'es tout lu
Salut ! J’ai pas trop compris comment on peut décoder, est ce que tu peux m’expliquer ?
- _-ValX-_
-
Scratcher
500+ posts
Variable cloud et jeux en ligne
Salut ! J’ai pas trop compris comment on peut décoder, est ce que tu peux m’expliquer ?je reviens un peu tard excuse moi

Décoder c'est faire l'inverse de ce que fait ton script d'encodage.
Donc en gros imaginons que ton script d'encodage est un script qui convertis chaque caractère en un nombre à 2 chiffres. Par exemple avec la table très simplifié :
"a"=10
"b"=11
"c"=12
Le décodeur va ensuite utiliser cette même table pour décoder ton code. Il utilise juste la table à l'envers : au lieu de se dire “je regarde chaque caractère 1 par 1 et je remplace ”a“ par 10, ”b“ par 11, etc…” il se dit “je regarde 2 chiffres par 2 chiffres et je remplace 10 par ”a“, 11 par ”b“, etc…”
12 -> c
12 -> c
10 -> a
11 -> b
Ce qui donne bien “ccab”
On a encodé notre code en une valeur décimal qu'on peut mettre dans le cloud, et on a pu la décoder.Ce n'est pas le seul encodage qui existe et tu peux très bien inventer ton propre encodage. Par exemple, dans mon encodeur, j'ai différents encodages pour différents types de donnée, pour ne pas gâcher de place. Mais je vais pas rentrer dans les détails, c'est long à expliquer.
Cet encodeur là est suffisant et simple à implémenter. Je te conseille d'utiliser des costumes et pas une liste pour pas que Scratch confondent minuscules et majuscules.
Bonne soirée

Voir bonne nuit vu l'heure qu'il est
- Discussion Forums
- » Français
-
» Variable cloud et jeux en ligne