Pong Community - La communauté des Geeks de... Pong Aventure !

Ping... Pong! Site créé en support à un jeu nommé Pong Aventure, un éditeur de jeux de plateforme développé en Java. Vous pourrez partager vos niveaux crées avec l'ensemble de la Communauté et donner vos avis ou tout simplement discuter entre membres !
 
AccueilPortailFAQRechercherMembresGroupesS'enregistrerConnexion
Connexion
Nom d'utilisateur:
Mot de passe:
Connexion automatique: 
:: Récupérer mon mot de passe
Facebook
Sondage
Que penses-tu de l'éditeur Pong Aventure ? ( postes un message afin de te justifier )
Super !!
57%
 57% [ 34 ]
Bien !
12%
 12% [ 7 ]
Bof...
8%
 8% [ 5 ]
Nul !
5%
 5% [ 3 ]
Inutile !!!!
18%
 18% [ 11 ]
Total des votes : 60

Partagez | 
 

 Du fonctionnement probable d'un réseau Pong

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Topoxy
Dieu de la Matrice
Dieu de la Matrice


Messages : 1115
Points Pong : 1234573069
Date d'inscription : 02/02/2010
Age : 24
Localisation : Castelginest (un coin paumé)

MessageSujet: Du fonctionnement probable d'un réseau Pong   Sam 9 Oct - 18:02

Salut! Ce qui suit risque d'être compliqué à suivre et à comprendre, considérez ça comme un brouillon de pensées :p. Les degrés signifient le niveau de difficulté, plus celui-ci est important plus ça parlera de prog et de trucs compliqués x).

Degré 1
Alors voilà, je veux que pong puisse marcher en réseau. Déjà je sais pas encore si je ferai une phase dessus, ou si je sépare l'éditeur et le lanceur de niveau + réseau, je pense que je ferai un mix des deux avec une phase réseau dans l'éditeur pour les options de réseau et une nouvelle partie du jeu, Pong of Duty xD.
On peut par exemple choisir les règles du jeu, cela dépendra des options permises dans la phase Réseau de l'éditeur, donc cela dépendra du niveau choisi. Il y aura comme type de jeu les courses (aller unique, ou aller retour, ou même plusieurs tours si le niveau tourne en boucle), les "battle mode", càd des poussées (ceux qui tombent perdent de la vie, voir mort subite, survivor quoi), ou des combats armés (un peu plus tard xD), chacun pour sa peau ou en groupe...

Degré 2
Les connexions réseaux s'effectuent entre un serveur et un client. On lance le jeu sur une première machine, on recherche si un serveur existe déjà, sinon on en crée un sur notre machine. On appelle ça "héberger un salon". Une fois le salon créé, on choisit une map ou une liste de map à utiliser, et on règle certaines options et règles du jeu. Là, deux possibilités possibles :
- soit on organise des "manches", et les joueurs qui viennent juste de se connecter devront attendre la prochaine manche, mais pourront quand même regarder le combat soit en utilisant la souris avec le décalage et le clic droit, soit accrocher leur caméra à un bloc.
- soit il s'agira d'un système dynamique ou les nouveaux joueurs débarqueront au point de départ.

Degré 3
Quand on héberge un salon, le jeu installe un serveur sur la machine. Votre machine dispose d'une ip locale (généralement du type "192.168.1.xx"), votre routeur ou machinBox possède une ip internet (là ça dépend des pays, et des FAI). Un client, pour se connecter à un serveur, doit connaître l'adresse IP du serveur, et doit pouvoir se connecter dessus. Si vous avez déjà expérimenté ConversaPong, vous comprenez sûrement ce que je raconte.
Généralement cela marche parfaitement en réseau local, à condition que vous connaissiez l'adresse IP locale de la machine, mais vu que c'est à côté, comme c'est local, ça pose pas de problème...

Degré 4
Mais en réseau international là c'est plus compliqué. Déjà les temps de latence sont plus élevés, et les histoires d'adresses IP se compliquent énormément. Et s'il n'y avait que cela... disons que vous connaissez l'IP d'une machine serveur d'un ami qui possède une IP fixe (oui, certaines adresse IP sont dynamiques, elles changent, donc les machines qui utilisent une livebox, CIAO. Les freebox sont statiques par contre). Vous lancez votre jeu, et dites au client de se connecter à cette adresse IP. Sauf que ça marche pas. Pourquoi ? A cause des ports! S'il n'existait aucune protection, n'importe quel gars expérimenté pourrait pirater votre ordinateur depuis Mars, voler toutes les données d'un site, etc... Les ports permettent l'accès à une machine, or votre routeur, ou machinBox, dispose d'un parefeu qui bloquent les ports normalement non utilisés! Il faut donc dire à la machine qui héberge le salon d'accéder à son routeur, de le paramétrer pour libérer le port que le jeu utilise!

Degré 5
Alors, vous me direz, comment des logiciels comme MSN nous permettent de chater facilement sans avoir quoi que ce soit à faire ?
Je vous répondrais que Microsoft a de l'argent, donc des serveurs. Les serveurs sont des machines, en fait des ordinateurs, qui disposent d'une base de données accessibles, d'une IP statique, etc... et MSN n'est qu'un client, alors que Pong se doit d'être soit serveur soit client, idem pour ConversaPong. Càd qu'MSN n'héberge jamais de salon sur votre ordinateur, le salon c'est le serveur qui l'héberge.

Degré 5(,5)
Là ça devient plus compliqué. Disons que vous avez réussi à connecter une machine serveur à plein de machines client. Comment Pong est censé gérer ça alors ?
J'y ai réfléchi, et le meilleur moyen (et le plus économique en matière d'envoie de données et de rapidité) est de n'envoyer que les commandes de votre clavier. Qui envoie, et à qui ?
C'est votre client, qui reçoit les commandes de votre clavier, qui est transformé en un message genre "LE PERSO DE L'ORDI 1 VA A GAUCHE", ce message est envoyé au serveur qui héberge le salon, ce serveur envoie ensuite ce message à tous les clients qui sont connectés à lui, comme ça ceux-ci verront le perso de l'ordi 1 bouger à gauche. Ca marcherait si tous les ordinateurs allaient à la même vitesse. Vous commencez à comprendre ? Non ?

Degré 6
La vitesse de Pong dépend de la fréquence de votre écran, l'affichage et la fréquence sont égales et synchronisées pour des questions de fluidité d'image. Vous aurez par exemple 75 FPS avec un écran d'ordi fixe, et 60 FPS avec un ordi lent. Sauf que si l'ordinateur est nul, ou si le niveau a énormément de collisions à gérer, il sera par exemple à 40 FPS, voir à 10 FPS. Et quand celui-ci recevra le message, il bougera le perso à gauche, mais la situation ne sera pas du tout la même que celle des autres ordinateurs. Il faut donc vérifier environ toutes les 2/3 secondes que tous les clients d'un serveur ont les mêmes positions, angles, activations d'interrupteurs, vitesses XY, vitesses angulaires, points de vie, munitions, etc...
Donc au final, votre client enverra bien les commandes de votre perso, mais le serveur utilisera le client qui héberge le salon comme modèle pour les autres machines, récupèrera les données du niveau et les enverra aux autres machines pour qu'elles se mettent à jour.
Donc si on a un boulet à 15 FPS dans le salon, on va en chier (désolé :p).

Degré 7
La théorie est ainsi complétée, faut passer à la programmation. Je vais utiliser une 4ème (oui, après JBox2D, Slick et SUI) API pour gérer les transferts de données, nommée Kryonet. Il paraît qu'elle est "simple" à utiliser, rapide et efficace, on vera ^^. Dans les grandes lignes, on a une classe "Server" qui joue le rôle... d'un serveur, on en crée un à partir de l'adresse de votre machine, et du port utilisé; on a ensuite une classe "Client", crée à partir d'une adresse IP et d'un port, elle vous crache des insultes si elle arrive pas à se connecter. On dispose d'une méthode/fonction pour faire un "ping", càd vérifier si un serveur est dispo à une certaine adresse IP.

Degré 8
Afin de gérer les informations nécessaires pour sauvegarder des niveaux et les utiliser, j'ai crée certaines classes :
- "Bloc"
- "Lien"
- "Evenement"
- "Décorateurs"
- "Niveau", qui contient des listes de tout ce que j'ai dit avant.
Pour ne pas surcharger le réseau et perdre de la vitesse, je vais devoir prendre uniquement certaines de leurs informations, genre la position et l'angle pour les blocs, la position des ancrages pour les liens, l'activation pour les évènements.
Pour le jeu j'utilise deux classes principales : la classe "Editeur", l'éditeur quoi, et la classe "Processus", qui permet de jouer à un niveau directement, sans passer par l'éditeur.
Je vais devoir créer deux classes supplémentaires, "Serveur" et "Client", qui contiendront les élements du même nom, mais qui gèreront tout ce que j'ai dit dans les degrès précédents. Le client ajoutera des écouteurs sur le déplacement des persos, et transmettra ces commandes au serveur grâce à une méthode de son "client" de kryonet, et le "server" kryonet du Serveur recevra ces commandes et les transmettra aux autres clients. Ces clients mettront à jour le personnage concerné.
Toutes les 3 secondes, le client de la machine hébergeuse stockera les infos dans un objet, l'enverra au serveur, et le serveur l'enverra aux autres clients, qui mettront à jour tous les objets du niveau.

Degré 9
Dernier degré Very Happy.
Ben... rien x)

Voilà!


Dernière édition par Topoxy le Sam 9 Oct - 18:55, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://pongcommunity.geekaddict.net
Anton
Testeur Vétéran
Testeur Vétéran
avatar

Messages : 139
Points Pong : 3042
Date d'inscription : 10/07/2010
Age : 24
Localisation : au coeur de rpg maker !!

MessageSujet: Re: Du fonctionnement probable d'un réseau Pong   Sam 9 Oct - 18:28

des fois c'est tellement compliqué qu'on a pas remarqué qu'il y a deux degrés 5 Razz
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://cid-0d0e0b5e7d921711.office.live.com/browse.aspx/.Public
Tanguy100
Mini-Concepteur
Mini-Concepteur


Messages : 279
Points Pong : 3146
Date d'inscription : 12/09/2010

MessageSujet: Re: Du fonctionnement probable d'un réseau Pong   Sam 9 Oct - 18:40

xD
Moi non plus je l'avais pas remarqué! xD
Sinon, c'est une super idée! =D
Et je veux pas attendreuh! xD
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Anto
Disciple du Dieu de La Matrice
Disciple du Dieu de La Matrice
avatar

Messages : 1171
Points Pong : 4786
Date d'inscription : 02/02/2010
Age : 24
Localisation : Pechbonnieu

MessageSujet: Re: Du fonctionnement probable d'un réseau Pong   Sam 9 Oct - 18:46

Mort de rire Very Happy

_________________
Invité passe voir Mon Blog-Ziik ; Un +5 quotidien pour Pong Community ==> ICI
Merci, bonne journée !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.youtube.com/user/antoOoh31
Topoxy
Dieu de la Matrice
Dieu de la Matrice


Messages : 1115
Points Pong : 1234573069
Date d'inscription : 02/02/2010
Age : 24
Localisation : Castelginest (un coin paumé)

MessageSujet: Re: Du fonctionnement probable d'un réseau Pong   Sam 9 Oct - 18:54

mdr
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://pongcommunity.geekaddict.net
Contenu sponsorisé




MessageSujet: Re: Du fonctionnement probable d'un réseau Pong   

Revenir en haut Aller en bas
 
Du fonctionnement probable d'un réseau Pong
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [ Résolu] Mon lapin n'émet aucun réseau wifi.
» [Réglé] réseau filaire et une led verte
» [Echange] PS2 fat avec HDD 500GB adaptateur réseau +Memor32
» [GW2] Une sortie probable pour... 2012
» Connexion de mon lapin à mon réseau wifi (freebox v4)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Pong Community - La communauté des Geeks de... Pong Aventure ! :: Pong Aventure :: Informations & Discussions sur Pong Aventure-
Sauter vers: