Salut,
Documente-toi sur ce que sont exactement TCP et UDP et tu vas comprendre.
UDP est plus rapide mais la'utre bout de la connexion ne confirme pas
que le message a été reçu; et s'il y a plusieurs messages en transit,
ils ne sont pas assurés d'arriver dans l'ordre.
TCP par contre tu es sûr que l'autre bout a reçu le message car il
confirme, et les paquets arrivent toujours dans l'ordre; mais c'est, à
cause de ça, plus lent.
Les meilleurs jeux utilisent bien entendu UDP, mais il faut bien garder
à l'esprit que tu ne sais pas si ton correspondant reçoit tout ce que tu
lui envoies. Un moment donné tu vas être obligé de recoder des aspects
assez compliqués du réseau: accusé de réception, renvoi d'information en
l'absence de confirmation après un délai, remettre les informations dans
l'ordre, etc. tout ce que tu n'as pas à faire si tu utilises TCP parce
que c'est implicite avec TCP. Il faut bien y réfléchir.
Suivant l'application, ce n'est pas trop grave s'il te manque des
informations momentanément, p.ex. audio/vidéoconférence; mais dans
d'autres c'est fatal, p.ex. pour reprendre la VOIP, le signal d'appel.
Donc UDP c'est plus rapide, mais il y a une réflexion de fond à avoir
sur ce que tu peux te permettre de rater et ce que tu ne peux pas, le
but étant bien sûr que tu n'aboutisses pas à deux joueurs ayant une vue
différente de l'état du jeu, des parties incohérentes, des
désynchronisations, etc. tu as déjà dû t'apercevoir de ce genre de
phénomène si tu as déjà joué à SoundRTS, où les désynchro arrivent
parfois (p.ex. chacun a détruit le camp de l'autre sans que l'autre ne
s'en aperçoive)
Après pour l'architecture générale, en fait, tu as le choix, avec
toujours des avantages et des inconvénients.
Si tu n'as pas de serveur central, tu risque d'avoir à te frotter aux
routeurs récalcitrants, besoin de demander aux joueurs d'ajouter des
NAT, activer UPNP & Co si tu veux que les joueurs puissent jouer entre
eux. Ca peut être vachement bien, sauf qu'il n'y a que les geeks qui
savent à peu près comment faire et parfois les opérateurs t'empêchent
de le faire (dans ce cas change d'opérateur).
Après, il y a la vision réseau en étoile, plus simple, tout le monde se
connecte sur le serveur central ou la machine d'un des joueurs. Relayer
est le job du serveur, forcément; tu n'y coupes pas.
Sinon tu as le modèle graphe complet, tout le monde se connecte à tout
le monde. C'est plus compliqué, et en général on ne le fait pas parce
que c'est trop compliqué. Mais c'est assurément plus rapide parce que
toutes les communications sont directes.
Pour les jeux de rapidité, ce qui fait aussi la différence à un moment
donné (les FPS sont célèbres pour faire ça), c'est la prédiction. IL y a
des tas d'algorithmes qui tentent de prédire les choix du joueur et qui
sont très utiles si le réseau lague momentanément ou si le joueur est
très loin (p.ex. autre côté de l'atlantique) car dans ce cas les ping
sont de toute façon inacceiptables pour ce genre de jeu (150ms et plus).
Progliste :
Pour se désinscrire de la liste :
mailto:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
Je vous rappelle que les pièces jointe sont activés leur taille est limité à 2 MO
Pour accéder aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en privé, je
vous répondrez en privé.