Aller au contenu
essaic

tutoriel [Global] Les packets, les sockets

Messages recommandés

Bonjour,

 

Ayant vu que beaucoup de personnes ne comprenant rien au principe des packets et dirent n'importe quoi dessus j'ai décidé de faire un tuto pour expliquer ce principe. Soyez indulgent c'est seulement mon 2ème tuto.

Ici je vais uniquement développer le côté théorique de la chose.

 

Socket :

 

Avant toute chose, on va commencer par les sockets. Socket en anglais veut dire prise de courant.

 

Imaginez que vous avez 2 ordinateurs qui doivent communiquer entre eux, pour cela il faut établir une connexion entre eux grâce à une socket.

 

La socket peut donc être vue, comme un lien, un pont entre 2 programmes sur 2 ordinateurs différents.

 

Paket :

 

Une fois reliés, ces 2 programmes vont vouloir communiquer. Par exemple, sur Deaufous, lorsque vous cliquer pour vous déplacer votre "Client" (le programme avec lequel vous jouez) va dire au serveur "Eh oh il veut se déplacer à la case numéro 332, dit moi si c'est possible ou pas" sauf que les échanges d'informations ne s'écrivent évidemment pas en français, ce serait beaucoup trop long et il y a 36 milles façons de dire là même chose avec d'autre mots.

 

Votre Client Deafous va donc dire au Serveur quelque chose comme ca : Ga332 (j'invente là). Le serveur va lui comprendre ceci : ga332 = Ga & 332, Ga = se déplacer et 332 la case sur laquelle le joueur veut se déplacer.

 

Ca va ? Mais faire un packet différents pour chaque action serait trop long alors ils ont choisit quelque chose qui ressemble à ca :

Ga001332 = Ga + 001 + 322 ou Ga = Game Action (un action) 001 l'action en question (se déplacer) et 332 bin l'id de la case.

 

 

Partie Added : Le 28/3 :

 

Les dev de Deaufous ont donc "codifié" les packets. Ça veut dire qu'ils ont pas choisi au hasard ces noms et ont donné à chaque packet un structure propre qui se ressemble de packet en packet.

 

Si vous avez pas compris voilà un exemple :

 

Si on reprend nos Games Actions. En réalité il y a 3 packets :

 

GA - GameAction

GAS - GameACtionStart

GAF - GameActionFinish

 

Chacun avec évidemment des informations à cotés (comme par exemple l'id de la case) qu'on apelle des arguments ou args. Gardez toutefois en tête qu'ils s'agit d'une convention que ce sont imposées les créateurs il aurait pu aussi bien Choisir Agaga Agaga2 et Agaga3.

 

Prenons un autre exmple : les émotes.

 

Dans votre "Client" Deafous vous cliquez sur une émote. Aussitôt il enverra au Serveur "Je veux faire l'émote n°7" (sauf erreur de ma part la 7 c'est la flûte.) Et le serveur vérifiera si c'est possible. Il lui répondra : "Joue l'émote X au personnage sur la map qui a comme numéro Y".

En langage codé :

Client envoie : eU7 => eU EmoteUse et 7 l'id ou némuré de l'émote voulue.

Le serveur renvoie eUK|7

 

Ici ca se corse un peu car il renvoie "Idperso" qui correspond à l'id (au numéro) d'un perso affiché sur la map. Imaginez que ce soit votre ami qui fasse un émote sur la même map et bin vous recevrez : eUK|

 

Ca va ? vous suivez toujours ? Si non n'hésiter pas à relire on peut pas tout comprendre tout de suite.

 

PS : Les mots mit entre <> sont là pour expliquer à quoi correspond ce qui doit s'y trouver.

 

La structure Client-Serveur

 

Je vais essayer de vous expliquer cette structure du mieux possible toutefois il se peut que je ne soit pas toujours clair prière de me le dire ou si j'oublie de parler de qqchose dites le moi aussi.

 

Bon jusqu'à présent on avait 2 ordinateurs ou plustôt 2 programmes qui se parlaient d'égal à égal or ici ce n'est le cas on a un despote (Le serveur) et un "esclave" (le Client).

 

90 % des choses sont décidées par le serveur, c'est lui qui dit à votre client d'afficher un joueur sur une map, c'est lui qui vous dit si vous pouvez ou pas mettre cette objet comme arme.

Il a accès à la Base De Données (Bdd), autre concept que je n'expliquerait que peu. Dites-vous qu'il s'agit d'un énorme tableau contenant presque tout ce qu'il fait le jeu.

La liste des pnjs, la listes des items, la liste des mobs, etc.

 

Le client lui se contente d'effectuer et d'afficher ce que le serveur lui dit de faire. Évidemment c'est le joueur qui clique sur la case pour se déplacer mais c'est le serveur qui décidera si il peut ou non, si cela entraînera un action (si on se met sur un trigger) et envoie à tous les joueurs sur la map : "affiche que le perso X sur la map se déplace à la case X s'il te plaît".

 

Dans ce jeu presque toutes les actions passent par le serveur ce qui permet un contrôle presque total de chaque action et réduit fortement les possibilités de cheat (si l'ému est bien codé hein).

 

Voilà ce tuto est pas fini je le finirait bientôt en le complétant avec des explications sur Client-Serveur.

 

MODIFIABLE ET COPIABLE A CONDITION DE ME CITER.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×

Information importante

By using this site, you agree to our Conditions d’utilisation.