je ne pense pas que les collisions sont gères par le client mais je peux me tromper , et oui si c le prix a payer pour avoir un jeu fluide et jouable en masse je dis oui .
Oui, les collisions sont gérées coté clients UNIQUEMENT.
Le serveur (pour ceux connaissent un peu) fonctionne (TRES GLOBALEMENT) comme un serveur IRC.
C'est à dire que:
- Un client envoit au serveur ses changements d'état (
sa position, sa direction, ses buff, l'action en court, son skin etc ..).
- Le serveur reçoit l'information du client et grosso modo, renvoit ces informations au autres clients (
donc si vous avez 10 joueurs dans une zone. Chaque fois que vous faites un pas, votre client envoit l'info au serveur, et le serveur le renvois au 9 autres).
- La valeur ajouté du serveur: CHOISIR à QUI envoyer les infos. En fait, chaque fois que vous faites un pas, le serveur ne l'enverra pas à tout le monde. Et c'est ça son GROS TRAVAIL. En effet, inutile d'envoyer les infos de votre déplacement à un joueurs qui serai dans la même zone, mais au fin fond d'une caverne, et qui ne pourrait avoir aucune interactions avec vous.
- La valeur ajouté du client: Il interprete les données reçu du serveur. Ainsi, votre client reçoit en permanence (du serveur) les états des autres joueurs et leur position (ça permet déja de les afficher et de voir leur mouvement/buff/skin). Ca lui permet également de gérer les collision, puisqu'en permanence, il sait ou sont les autres. Ainsi, quand vous voulez faire un pas en avant, VOTRE CLIENT, sait DEJA, s'il y a quelqu'un en face de vous, ou pas. Et peut donc décider d'avancer, ou pas.
Ce système, est une optimisation majeure, car elle soulage le serveur qui aura des infos à moins à traiter. En effet, si vous ne pouvez pas avancer, votre client n'enverra pas l'info au serveur, qui n'aura pas à la distribuer.
Si ce n'était pas le cas, imaginez le bordel tant au niveau charge serveur, que réseau.
Je veux avancer, je demande au serveur, le serveur vérifie par rapport à la position des 100 joeurs a coté de moi si je peux le faire, si c'est Ok, le serveur renvoit OK. Mon client recoit OK, et il affiche l'action "avancer" ....
Qui plus est, dans un tel cas, en cas de LAG ou de deco, votre avatar serait bliqué, puisqu'en train d'attendre de savoir s'iil peu avancer ou pas ... sans même entrer dans la technique, c'est une question de logique.