Discuss Scratch

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
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.
benoit-aubry
Scratcher
12 posts

Variable cloud et jeux en ligne

Merci !
_-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
samoht1616
Scratcher
500+ posts

Variable cloud et jeux en ligne

#3 de rien
benoit-aubry
Scratcher
12 posts

Variable cloud et jeux en ligne

_-ValX-_ wrote:

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
benoit-aubry
Scratcher
12 posts

Variable cloud et jeux en ligne

Ps : (j’ai tt lu XD)
_-ValX-_
Scratcher
500+ posts

Variable cloud et jeux en ligne

Pas de soucis content que t'es tout lu
benoit-aubry
Scratcher
12 posts

Variable cloud et jeux en ligne

_-ValX-_ wrote:

Pas de soucis content 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

benoit-aubry wrote:

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 code “ccab” est transformé en 12121011 ( 12 12 10 11 )
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

Powered by DjangoBB