Salut,

Mes premiers tests HappyBoom de jeu en réseau n'ont pas été très
concluant. Le projectile n'était pas très fluide sur un serveur pourtant
peu chargé (ça ramait autant avec un ping de 400ms qu'avec un ping de
100ms). Je suis alors renseigné. Le soucis venait de deux choses :
- J'utilisais une connexion TCP (orientée connexion) : elle renvoie un
accusé de réception à chaque paquet émis.
- Tous les paquets *devaient* arriver. Or, certains paquets peuvent être
ignoré (disons, que c'est pas grave s'ils se perdent en route).

La solution est donc d'utiliser une connexion UDP, et de marquer
certains paquets comme "non-importants". J'ai pas mal galéré pour
arriver à écrire le client/serveur, mais ça en vaut la chandelle. En
gros, il faut réécrire TCP au-dessus d'UDP. Le minimum étant de renvoyer
un accusé de réception à chaque paquet reçu (pour les paquets demandant
un accusé de réception).

J'ai donc écrit un client/serveur UDP minimaliste, et j'ai marqué les
paquets "le projectile a bougé" comme optionnels. Et bien, je peux
maintenant vous dire que c'est super fluide ! En tout cas, avec un
serveur qui a un ping de 100ms, le jeu est aussi fluide que s'il
tournait en local ! Pas mal non ?

---

Si certains sont intéressés, je peux donner des détails techniques sur
le code. Pour la suite, je vais peut-être utiliser la librairie "enet".

C'est du python avec plein de threads ! (y'a a certains qui ont du
serrer les dents en lisant cette phrase je suppose :-D)

@+ Haypo


Répondre à