Shimmy
Touriste
Petit texte sur le net code a BF 1942 ;
Clientside prediction ou pas ?
Je vais tenter d'aborder un sujet qui provoque bien des tensions entre les différentes communauté de FPS : le netcode.
Tout d'abord le netcode, c'est quoi ? C'est tout simplement la partie de programme du jeu qui est chargée d'echanger les informations sur le réseau pour établir toutes les conséquences en fonction des actions des joueurs (Ex: Si le joueur X tire selon telle droite, alors vérifier s'il y a un autre joueur Y ennemi sur cette droite et déterminer les dégats infligés). Jusque ici pas de problème, tout parrait simple.
L'affaire se complique lorsque l'on joue sur internet, avec un ping très différent de 0ms. le ping est le temps que met un paquet de données à faire un aller-retour de chez vous vers le serveur de jeu. Si vous avez un ping de 100ms, ça veut dire que ce que vous voyez est décalé de 100ms par rapport au serveur. Le problème se complique encore quand on s'apperçoit que tout le monde n'a pas le même ping. Un joueur X qui à 20ms de ping verra un joueur Y à 100ms de ping avec 80ms d'avance.
Je vais essayer de vous expliquer quel est l'autre problème engendré par le ping ... Admettons que 2 joueurs X et Y ont 100ms de ping.
Lorsque X tire sur Y, X envoie une information au serveur. Cette information est reçue 100ms plus tard et analysée : Si X tire sur Y, alors on tue Y. Puis le serveur renvoie l'info à tous les joueurs.
Le problème est juste ici : entre l'instant où X a réelement tiré sur Y et l'instant où le serveur analyse l'action, Y a très bien pu se déplacer et peut ne plus être dans la ligne de mire de X. Le serveur indiquera donc que X tire à coté et n'infligera aucun dégat à Y, alors qu'en réalité, X avait la ligne de mire parfaitement sur Y.
Pour éviter ce problème, il existe une technique de programmation du netcode apellée "Clientside Prediction", soit "Prédiction coté client" en français. Le netcode Half-Life (et ces mods, CS, DoD, TFC) utilise cette technologie depuis la version 1.1.0.0 alors que Quake3 est resté dans un code sans prédiction.
Le "Clientside Prediction" a une toute autre approche du code réseau : lorsque le serveur recoit une information de tir, il analyse les dégats infligés aux ennemis en tenant compte du ping de chacun et ensuite les transfert les données au joueur touché.
Ainsi, lorsque X tire parfaitement sur Y, le serveur tiendra compte du ping pour définir le tir réellement effectué par X, tel qu'il l'a effectué sur son ecran. Le serveur envoie ensuite au joueur Y la quantité de vie qu'il a perdu.
Le seul inconvenient du Clientside prediction, c'est le décalage entre tous les joueurs.
Par exemple, entre le moment où X voit Y mort et le moment ou Y se voit mort, intervient la somme du ping de X et Y, soit 200ms. Ainsi, Y peut mourrir alors qu'il s'etait caché derriere une caisse juste avant que X tire (Alors que X voyait encore bien Y lorsqu'il l'a tué).
Pour conclure, je dirais que le clientside prediction a vraiment fait des adeptes sur CS, DoD, ou TFC. Il est evident que ce netcode à quelques défauts, mais le principal problème du ping y est tout simplement supprimé. DICE prévoit d'implanter ce netcode dans la version 1.2 : s'il est réussi, le principal problème de BattleField 1942 sera résolu et on pourra s'attendre à un enorme engouement autour du jeu.
Faux
Clientside prediction ou pas ?
Je vais tenter d'aborder un sujet qui provoque bien des tensions entre les différentes communauté de FPS : le netcode.
Tout d'abord le netcode, c'est quoi ? C'est tout simplement la partie de programme du jeu qui est chargée d'echanger les informations sur le réseau pour établir toutes les conséquences en fonction des actions des joueurs (Ex: Si le joueur X tire selon telle droite, alors vérifier s'il y a un autre joueur Y ennemi sur cette droite et déterminer les dégats infligés). Jusque ici pas de problème, tout parrait simple.
L'affaire se complique lorsque l'on joue sur internet, avec un ping très différent de 0ms. le ping est le temps que met un paquet de données à faire un aller-retour de chez vous vers le serveur de jeu. Si vous avez un ping de 100ms, ça veut dire que ce que vous voyez est décalé de 100ms par rapport au serveur. Le problème se complique encore quand on s'apperçoit que tout le monde n'a pas le même ping. Un joueur X qui à 20ms de ping verra un joueur Y à 100ms de ping avec 80ms d'avance.
Je vais essayer de vous expliquer quel est l'autre problème engendré par le ping ... Admettons que 2 joueurs X et Y ont 100ms de ping.
Lorsque X tire sur Y, X envoie une information au serveur. Cette information est reçue 100ms plus tard et analysée : Si X tire sur Y, alors on tue Y. Puis le serveur renvoie l'info à tous les joueurs.
Le problème est juste ici : entre l'instant où X a réelement tiré sur Y et l'instant où le serveur analyse l'action, Y a très bien pu se déplacer et peut ne plus être dans la ligne de mire de X. Le serveur indiquera donc que X tire à coté et n'infligera aucun dégat à Y, alors qu'en réalité, X avait la ligne de mire parfaitement sur Y.
Pour éviter ce problème, il existe une technique de programmation du netcode apellée "Clientside Prediction", soit "Prédiction coté client" en français. Le netcode Half-Life (et ces mods, CS, DoD, TFC) utilise cette technologie depuis la version 1.1.0.0 alors que Quake3 est resté dans un code sans prédiction.
Le "Clientside Prediction" a une toute autre approche du code réseau : lorsque le serveur recoit une information de tir, il analyse les dégats infligés aux ennemis en tenant compte du ping de chacun et ensuite les transfert les données au joueur touché.
Ainsi, lorsque X tire parfaitement sur Y, le serveur tiendra compte du ping pour définir le tir réellement effectué par X, tel qu'il l'a effectué sur son ecran. Le serveur envoie ensuite au joueur Y la quantité de vie qu'il a perdu.
Le seul inconvenient du Clientside prediction, c'est le décalage entre tous les joueurs.
Par exemple, entre le moment où X voit Y mort et le moment ou Y se voit mort, intervient la somme du ping de X et Y, soit 200ms. Ainsi, Y peut mourrir alors qu'il s'etait caché derriere une caisse juste avant que X tire (Alors que X voyait encore bien Y lorsqu'il l'a tué).
Pour conclure, je dirais que le clientside prediction a vraiment fait des adeptes sur CS, DoD, ou TFC. Il est evident que ce netcode à quelques défauts, mais le principal problème du ping y est tout simplement supprimé. DICE prévoit d'implanter ce netcode dans la version 1.2 : s'il est réussi, le principal problème de BattleField 1942 sera résolu et on pourra s'attendre à un enorme engouement autour du jeu.
Faux