Apex Legends : le netcode est toujours aussi mauvais

19

Quelques mois après sa première vidéo, Battle(non)sense refait un petit tour sur Apex Legends. Le netcode est toujours aussi mauvais en comparaison de ses concurrents, malgré une très légère amélioration du network delay entre deux joueurs. Le lag compensation favorise toujours le tireur avec un ping élevé. Je vous invite à découvrir la vidéo ci-dessus pour avoir plus de détails sur la manière de tester, ainsi que les résultats.

Article précédentS.T.A.L.K.E.R. 2 : toujours pas d’éditeur mais aucun Kickstarter de prévu
Article suivantVous verrez du gameplay de Cyberpunk 2077 à la PAX West en septembre

19 Commentaires


  1. le « lag compensation » qui permet de compenser les gros pings donne des situations aberrantes dans tous les jeux ou il est utilisé je trouve.
    Genre sur PUBG sur vikendi (qu’est pas bien optimisée) c’est nawak.
    Sur cs go je decal awp un type en pause kaka qu’a 130 de ping, je vise je tire, « hein je suis mort », « ou qu’elle est ma balle? » « quand est ce qu’il a tiré ? » what ??????
    Sur Apex c’est la même avec un TTK plus élevé donc c’est un peu moins « dévastateur ».
    Du coup avec ma fibre et mon ping qu’est plutôt du genre très bon, je n’y vois aucun avantage particulier, au contraire même dans certaines situations.

  2. Il faudra un jour qu’on écrive un article simple expliquant pourquoi les gens qui ont des pings bas sont toujours avantagés. Un article de référence qu’on puisse linker à chaque fois que quelqu’un pense l’inverse.

  3. On peut aussi se dire que, sur le court extrait, celui qui a un faible ping peut engager l’autre avant qu’il ne le voit. Je pense que certaines situations avantagent l’un ou l’autre. Quoi qu’il en soit, ce n’est pas fameux.

  4. Il faudra un jour qu’on écrive un article simple expliquant pourquoi les gens qui ont des pings bas sont toujours avantagés. Un article de référence qu’on puisse linker à chaque fois que quelqu’un pense l’inverse.

    Souvent avantagé: oui, toujours: non. Imagine le cas suivant:
    Un type (A) avec un gros ping (disons 1 seconde) tire sur un autre type (B) qui est de dos sur un type a faible ping (disons 0 ms). Pour tuer ton adversaire on va dire qu’il faut lui tirer dessus avec une arme type lighting gun pendant 0.5s. A va pouvoir tranquillement tiré sur B qui n’a pas conscience de se faire agresser pendant un long moment. Si le serveur implémente le lag compensation, A va réussir à toucher B sans problème (autrement ca risque d’être compliqué) et B ne pourra réagir qu’au mieux 1 seconde plus tard. Il sera possiblement déjà mort (sans le savoir) avant d’avoir une chance de réagir, ce qui aurait pu être possible si A avait un ping plus faible.

    Les valeurs de ping sont aberrantes dans l’exemple mais cette situation reste valable avec des pings plus faibles.

    Dans les autres cas B sera avantagé sur A. Mais cela suppose que la plupart des netcodes ne sont pas codés à la truelle. Et ça reste une grosse hypothèse qui ne doit pas toujours se révéler correcte.

  5. Il faudra un jour qu’on écrive un article simple expliquant pourquoi les gens qui ont des pings bas sont toujours avantagés. Un article de référence qu’on puisse linker à chaque fois que quelqu’un pense l’inverse.

    Peut-être en combinant des infos de l’article de e-t172 sur le netcode de source et ça : https://www.ra.is/unlagged/faq.html où il explique très bien comment fonctionne le « lag compensation » (sur le moteur de Quake 3, mais le principe est le même dans les grandes lignes sur les autres jeux).
    Les valeurs sont juste différentes – par ex. le framerate (aka sv_fps, aka « tickrate ») des serveurs c’est plutôt 30-60 que 20 de nos jours.

    Mais flemme 😀

  6. Cela me fait souvenir des parties sur COD ( sur Xbox360 ) quand j’étais l’hôte, mon score était bien meilleur. C’est marrant à chaque fois que je joue sur un fps shooter, j’essaie de glisser comme dans apex mais non ce n’est pas possible, tu ne peux pas glisser ^^, un des trucs du jeu que je trouvais bien.

  7. Codec-abc : je pense que ce qu’il va se passer, c’est que le joueur avec un gros Ping aura l’impression de toucher, et il se demandera pourquoi sa cible a eu le temps de se retourner pour riposter alors qu’elle aurait dû être morte. L’état du monde est calculé au niveau du serveur. Ce que le joueur voit, surtout s’il a 400ms de ping, ce n’est pas ce se passe vraiment sur le serveur.

    Tu peux lire le lien de kal. Il donne des explications ainsi qu’un exemple similaire au tien.

  8. drloser: Ça dépend de l’implémentation du netcode. Si la détection est faite « client side », le joueur avec le gros ping touchera sans soucis celui avec le ping plus faible (ça m’est arrivé assez nettement dans Dirty Bomb, car ce n’est pas rare de croiser des joueurs avec 300-500 ms de ping). Autrement ça dépend encore plus de l’implémentation du lag compensation. J’imagine que le serveur doit garder en mémoire les positions et l’état des autres joueurs sur une fenêtre glissante. Après est-ce qu’elle monte jusqu’à une seconde, ça reste à voir en fonction des jeux. Ceci dit, ça serait intéressant de faire des tests sur plusieurs jeux de manière objective. Ce petit programme (que j’utilise régulièrement au taf) permet de rajouter artificiellement de la latence (entre autre) et serait parfait pour faire quelques tests.

  9. Lis l’article linké.

    Les FPS où la détection est calculée client side, je ne suis pas sûr que ça existe encore.

  10. J’imagine rien. A titre d’info Quake Champions utilise du hit reg client side. Tout comme dirty Bomb. Et de quel article tu parles ?

  11. Non, l’enregistrement est toujours côté serveur. Extrait d’un patch QC :

    NEW HIT DETECTION INTEGRATED

    Phase 1: (NOW LIVE) Weapon hits are now detected client-side on our new capsule based hit skeletons, validated server-side

    Lis l’article cité plus haut par kal.

  12. J’imagine rien. A titre d’info Quake Champions utilise du hit reg client side. Tout comme dirty Bomb. Et de quel article tu parles ?

    C’est pas parce que le hit-reg est soit disant « client side » (c’est à dire qu’on évite aux joueurs de devoir compenser leur ping en en essayant de prédire la position des joueurs) qu’il n’y a pas un contrôle côté serveur. Tu imagine la triche sur PC sinon?

    C’est exactement ça le netcode « unlagged » de Quake 3 dans mon lien https://www.ra.is/unlagged/faq.html

    Ce type de netcode est devenu le standard à peu près partout. C’est pas courant de devoir compenser son ping de nos jours.

  13. Pour QC ça a du changé depuis la dernière fois que j’y ai joué.

    Autrement, l’article de kal parle de Q3 qui est pas ce qu’on fait de plus récent. Quant bien même, il corrobore ce que je dis:

    « Unlagged uses a technique called “backward reconciliation” for hitscan weapons’ hit tests. For the duration of a hit test, it moves players to where you saw them when you fired. (It knows because it sent you the player origins in the first place, it saves that information up in a history queue, and your fire command contains a timestamp.) After the hit test, it moves them back. »

    Autrement le « backward reconciliation » replace ton modèle la ou il était quand la personne t’as tiré dessus. Si on reprend l’exemple de tout à l’heure (tir dans le dos) et que cette personne a un très grand ping alors c’est qu’elle t’as tiré dessus il y « longtemps » dans le passé. Donc même si tu réagis tout de suite et que tu te mets à dodger, tu vas recevoir encore des shots pendant un moment car des tirs ennemis sont encore en transit sur le réseau qui seront estimés par rapport aux positions passés de ton modèle.

    Bref, le débat est un peu stérile (et je vais m’arrêter là) mais on peut pas être absolu et dire qu’un joueur ayant ping plus élevé sera désavantagé dans 100% des situations.

  14. C’est pas parce que le hit-reg est soit disant « client side » (c’est à dire qu’on évite aux joueurs de devoir compenser leur ping en en essayant de prédire la position des joueurs) qu’il n’y a pas un contrôle côté serveur. Tu imagine la triche sur PC sinon?

    Je suis bien d’accord et j’ai jamais dit ça.

  15. Bref, le débat est un peu stérile (et je vais m’arrêter là) mais on peut pas être absolu et dire qu’un joueur ayant ping plus élevé sera désavantagé dans 100% des situations.

    Il y a des cas très rares où bidouiller son ping peut donner l’avantage. Mais est-ce le cas de ton exemple ? Regardons ce qu’il se passe quand un joueur avec un gros ping tire dans le dos d’un joueur avec un petit ping :

    – t est le temps côté serveur
    – A a un ping de 500ms. Il tire au lightning gun et il lui reste peu de vie
    – B a un ping de 20ms. Il tire au railgun
    – j’ai simplifié à l’extrême pour que ce soit pas trop compliqué à comprendre

    t : A arrive dans le dos de B qui est immobile
    t+250ms : A voit B et tire. Le « hit calculation » étant client side, il entend le son indiquant qu’il touche
    t+500ms : le serveur est informé que A tire sur B et qu’il a touché – le serveur valide le tir – d’un point de vu serveur, B commence à prendre des dommages.
    t+510ms : B est informé qu’on lui tire dessus
    t+610ms : B se retourne et met un coup de railgun dans la tête de A
    t+620ms : le serveur est informé que B tir au railgun – il valide le tir. Comme A n’avait pas beaucoup de vie, il meurt. Et comme A est mort, le serveur arrête de valider ses tirs. B s’est donc pris des dommages pendant 120ms.
    t+870ms : A reçoit l’info lui indiquant qu’il est mort, alors qu’il a l’impression d’avoir touché B pendant 620ms.

    A va sur un forum pour se plaindre que « ça touche pas », que même en vidant un chargeur dans le dos d’un type, ce dernier a le temps de se retourner et de le tuer. Ça vous rappelle quelque chose ce genre de message ?

    Maintenant, si tu veux un exemple où le joueur avec un ping bas est avantagé, tu peux lire le chapitre « touchabilité » de l’article d’e-t172, mais attention, lui il ne simplifie pas les choses pour les rendre plus faciles à comprendre.

  16. Et si B décide de se mettre à couvert plutôt que de riposter, que se passe-t-il ? Il meurt derrière sa couverture ?

  17. S’il réussit à se mettre à couvert en moins de 500ms, il ne crève pas. Mais sinon, il peut effectivement se voir à couvert, puis recevoir juste après l’info comme quoi il est mort. Mais c’est une situation qui affecte encore plus les joueurs avec des gros ping, car ces derniers sont informés qu’ils sont morts encore plus tard.

    Si des joueurs avec des petits ping se retrouvent souvent dans cette situation, c’est parce que le netcode est pourri et envoie les info avec beaucoup de retard même si t’as un bon ping. C’est ce dont parle la news : même si tu as un excellent ping dans Apex, tu recevras toutes les info du serveur avec au moins 100ms de retard, donc des fois t’auras l’impression d’être à couvert alors qu’en fait t’es déjà mort.

  18. Côté « ressenti » du joueur dans QC j’ai souvent l’impression que les joueurs avec un ping plus grand touchent alors qu’ils n’auraient pas dû.
    Par exemple, une situation qui s’est reproduit plusieurs fois :
    – Je suis poursuivi par un gars avec 100 ping, je passe un téléporteur
    – J’arrive de l’autre côté
    – Killcam : qui me montre qu’en fait je suis mort avant de passer le téléporteur, touché par le mec à 100 de ping…

  19. Maintenant, si tu veux un exemple où le joueur avec un ping bas est avantagé, tu peux lire le chapitre « touchabilité » de l’article d’e-t172, mais attention, lui il ne simplifie pas les choses pour les rendre plus faciles à comprendre.

    Mais il est génial cet article, je l’avais jamais vu avant.

Connectez-vous pour laisser un commentaire