Ce que tu ne comprends pas, c'est que avec ou sans collision, le contrôle de position des joueurs est fait en permanence.
Sans ce contrôle de position, pas d'affichage des différents joueurs sur la zone, pas de sort de zone, pas de combat, etc...
???
Heu... bien sûr que je le comprend. La position des joueurs est une donnée vitale pour toute ses actions. Je n'ai jamais dit le contraire. Mais ce que tu ne saisis pas, c'est que la collision entre deux joueurs implique beaucoup plus qu'un simple
IF distance entre J1 et J2 < largeur du corps THEN stop bouger !
Les collisions, c'est juste une restriction en plus, mais l'intégralité des calculs des uns par rapport aux autres existent quand même.
Ce n'est pas
juste une restriction en plus mais une
énorme contrainte dans les flux et calculs serveurs.
Habituellement, quand on se déplace dans un MMO sans collision, le client envoie la direction demandée par le joueur toutes les secondes (durée donnée pour l'exemple, ca varie d'un MMO a l'autre). Ca permet d'alléger les flux client/serveur.
Si le
serveur vérifie toutes les secondes, le
client lui vérifie bien plus souvent (mettons toutes les 0.1 secondes). Si le client voit un obstacle, il anticipe la décision du serveur. Ca permet d'éviter que le joueur soit à moitié dans le mur avant que le serveur ne se rende compte du problème et warp le joueur 1m en arrière.
Cette technique marche très bien pour les jeux sans collision mais elle ne marche pas du tout pour les jeux avec collision de joueur.
Prend deux joueurs volant l'un vers l'autre à pleine vitesse.
- Seconde 0 ils sont à 10 m l'un de l'autre.
- Seconde 0.5 ils se croisent et se traversent.
- Seconde 1 ils sont à nouveau éloignés de 10 m l'un de l'autre.
Côté serveur (seconde 0 et 1) il n'y a pas eu collision car les deux joueurs ont toujours été éloignés de 10m l'un de l'autre.
Sur cet exemple, si tu veux gérer la collision :
- soit tu laisses le client gérer la collision à la seconde 0.5 >>> 1 semaine après la sortie du jeu, la moitié des joueurs sont équipés de programmes de hack qui permettent de passer au travers des joueurs.
- soit tu fais passer la fréquence de traitement des infos du serveur de 1 seconde à 0.1 seconde >>> augmentation très importante de la bande passante.
Pour résumer, la collision entre joueurs ne peut pas être gérée avec le même moteur réseau et les mêmes algorithmes qu'un jeu sans collision des joueurs. Un jeu avec collision est plus lourd et plus complexe a mettre en place qu'un jeu sans.