L’ennemi caché des développeurs de jeux vidéos

Durée: 53m34s

Date de sortie: 23/07/2024

Martin Bruder, développeur de jeu vidéo indépendant, nous explique très didactiquement l’un des casse-tête du métier : la latence dans les modes multijoueurs compétitifs. En réalité, les jeux vidéos nous mentent…


Pensez à mettre 5 étoiles pour soutenir l’émission !


Préparation : Matthieu Lambda



Hébergé par Acast. Visitez acast.com/privacy pour plus d'informations.

...
Les gens qui ont assisté au dernier live te connaissent déjà,
mais la partie qu'on a fait ensemble n'est pas encore sortie.
Donc elle n'est pas encore sortie sur YouTube,
mais ça va bientôt être le cas.
On avait parlé de quoi, est-ce que tu peux nous rappeler ?
On avait parlé d'informatique quantique.
Et on avait donné un exemple d'un algorithme
qui ne sert à rien, comme celui-ci est bien dit,
mais qui permet d'un peu comprendre pourquoi
il y a certaines choses qui peuvent faire plus vite en quantique
que l'initiation, on va dire, à l'algorithme quantique.
Et aujourd'hui, on va parler de complètement autre chose.
Rassurez-vous, ne partez pas.
On n'est pas repartis pour un cours.
T'es un insuré, faire de la traumatisé au fond de la classe.
Là, on va parler de jeux vidéo.
Je te redis de les micro-conseignures.
C'est le micro de pot de case où tu peux un peu le tirer
pour bien qu'il soit proche de ta bouche.
Ça bouge pour le bras, c'est bon.
Tu peux vraiment le tirer comme ça.
Ok, parfait.
Et qui essaie quoi les toutes conseignes ?
C'est juste pas ta peine en gros.
Mais t'inquiètes pas.
Parce que moi, j'en fais trop.
Je n'en fais plus que toi.

Je dirais que je suis inévitable dans la conne.
Il ne faut pas trop être matricé non plus,
mais on essaie de faire des efforts.
Alors explique-nous comment c'est possible que tu sois à la fois
un ancien prof en informatique quantique
et que tu fasses du jeu vidéo.
Qu'est-ce qui s'est passé ?
La quantique, c'était plus académique.
C'est que j'avais pu l'enseigner quand j'étais aux États-Unis
et le jeu vidéo, c'est vraiment plus une passion.
Je joue depuis que j'ai 6, 7 ans.
Mais aucun des deux n'est ton travail.
Aucun des deux n'est mon travail.
Le travail, c'est l'IA.
Enfin, le jeu vidéo va devenir mon travail dans un mois.
Ah, c'est la question.
Merci.
Si j'ai bien compris, donc peut-être aux États-Unis,
là, tu viens en France pour développer ta passion,
ton projet de jeu vidéo.
En fait, on développe un jeu avec un de mes amis depuis deux ans et demi.
Et c'était après le boulot.
Et là, on s'est dit qu'il y avait quelque chose
qu'on pourrait en faire un business.
Donc, j'ai quitté mon boulot il y a deux mois.
Lui quitte son boulot ce matin prochain.
Et on se met à temps plein sur le jeu.
Il y a un lien avec le quantum computing et...
Pardon, la pharmatique quantique.
Et...
Aucun rapport.
D'accord.
Aucun rapport.
Moi, je peux me permettre d'en mettre une là.
C'est que t'es en train de quitter un job dans l'IA
pour aller dans le jeu vidéo.
C'est-à-dire qu'en termes de recrutement,
c'est quand même le pire bout.
Oui, c'est vrai.
C'est ça qui est beau.
C'est la passion, j'allais dire.
Et la passion, tu peux pas tester.
Voilà. Tu peux pas lutter.
Mais ça nous enge.
Puisque justement, on va pouvoir un petit peu parler
de sujets et jeux vidéo.
Puisque vous êtes en plein développement.
Tout à fait.
On est en train de travailler sur notre démo,
qui serait un peu le MVP,
qui devrait sortir assez vite.
Je pense qu'on a 90% à peu près.
Et puis en fonction des retours,
après, on essaiera de faire
quelque chose de plus fourni.
OK.
Mais j'attends que mon ami,
qui s'appelle Nicolas Bhuisson,
je le salue parce que je pense qu'il nous regarde.
Il viendra sur ce plateau un peu plus tard aussi
pour parler avec moi du jeu.
Et voilà, j'adore qu'il a bientôt quitté son boulot.
Puis là, on peut s'y mettre.
OK.
Aujourd'hui, on a choisi un sujet,
puisqu'on va pas parler de toute la roadmap
d'un jeu vidéo, il y a un sujet.
Qui je l'avoue est un truc qui m'intrigue depuis super longtemps.
Depuis que j'ai fait mes premières études de développeur,
et que on a un tout petit peu touché au développement de jeu,
c'est un truc qui m'intrigue énormément.
Et justement, on va pouvoir en parler ensemble
et rentrer un petit peu loin justement.
De l'extérieur, quand on n'est pas un développeur de jeu vidéo,
on se rend bien compte que parfois,
il y a des triple A qui sont développés
par des équipes de 50 personnes,
ou des jeux 1D,
qui, de l'extérieur, visuellement, comme ça,
sont un peu dans le même genre.
Tu vois, tu vois, on a l'impression parfois
qu'il faut 50 fois plus de ressources
pour faire certains jeux
qu'un seul développeur arrive à sortir tout seul de temps en temps.
Et un truc que j'ai déjà entendu, c'est que la différence
entre ce très gros projet d'entreprise et ce petit développeur,
c'est un truc qui s'appelle le multijoueur.
Et que c'est comme une bête noire de tout studio de développement de jeu vidéo,
qui, en réalité,
nous, on se dit, c'est juste une débris
qu'on fait du développement,
mais est une horreur d'implémentation,
un truc super complexe qui vient tout complexifier.
J'ai entendu des histoires comme quoi, en fait,
on est constamment en train de tricher quand on fait du multijoueur,
parce que c'est des histoires insolubles ou des actions
en lieu avec des latences différentes
et doivent être synchronisées.
C'est que des trucs que j'ai déjà entendu.
Et justement, j'ai envie qu'on démystifie tout ça
et qu'on voit ensemble, c'est quoi le vrai du faux, déjà,
et concrètement, pourquoi, quand on développe un jeu vidéo,
avec plusieurs personnes simultanées à distance,
on doit constamment tricher.
Et c'est quoi toutes les techniques un peu malignes,
bizarres, torduques qui ont été inventées au fil du temps
par les développeurs de jeu vidéo.
Et pour ça, on te reçoit, Martin, justement,
parce que toi, tu es en plein développement d'un jeu,
donc tu as les mains dedans,
et c'est un jeu multijoueur, j'imagine.
– Tout à fait. Et en fait, je préciserais même ce que tu disais.
On dit, oh, ce qui est compliqué, c'est le multijoueur,
mais on va voir qu'il y a plein de sous-specialisations
dans le multijoueur, quand le multijoueur de Minecraft
et le multijoueur de Counter-Strike, ça n'a rien à voir.
Absolument rien à voir.
Et nous, ce qu'on développe, c'est un jeu multijoueur compétitif.
Et c'est pour ça qu'il y a une complexité.
– Quand tu dis compétitif, ça veut dire quoi ?
– C'est pas que pour s'amuser, c'est aussi pour gagner.
C'est que tu as un classement qui fait que les joueurs veulent monter dans les rangs
et potentiellement, quand tu as un gros jeu, avoir des tournois
avec des cash-prises, comme on dit en français, avec des précompenses.
Si tu fais un jeu...
Parce que l'origine, les jeux étaient tous développés avec la même technique,
qui est le hosting.
C'est-à-dire, on se souvient, les plus de 25 ans,
sur une tête de ça où tu allais avec ton pc portable chez ton pote,
et puis tu m'ont de se collecter un switch,
il y avait une personne qui crée la partie, c'était le host,
et puis les gens se connectent à cette personne.
Ils vont dans la liste des parties.
– Moi, je fais ça avec Edge of Empires.
– Edge of Empires 2...
– Mais tu n'es pas si vieux.
– Edge of Empires 2, Warcraft 3...
– Edge of Empires, combien ? 2 ? Ah ! Mais non !
– Il y a une grosse scénie sport sur Edge of Empires 2 maintenant.
– C'est vrai ? – Énorme.
– On y joue en ce moment.
– Le freu bac.
– Et donc, c'était cette manière-là, Minecraft, c'était le même système.
Souvent, à la base, tu avais un monde,
et puis les gens, ils peuvent se connecter à ton monde,
après, ils ont développé des serveurs, mais à la base, c'était ça.
Ça, c'est très facile à implémenter,
surtout avec les...
Aujourd'hui, les jeux, ils sont faits avec des moteurs,
donc il y a Unreal Engine et Unity qui sont très connus pour les développeurs indés,
et après, les grosses boîtes ont leurs propres moteurs.
Et ces moteurs, elles ont des systèmes de réplication
qui sont implémentés de base.
Donc, c'est-à-dire, si je fais une action,
et que je lui dis, réplique-moi ces actions, un mouvement, par exemple,
automatiquement, ça sera envoyé à tous les joueurs
du réseau.
Donc, ça, c'est assez simple.
Et quelqu'un que s'y connaît, en deux semaines,
il peut faire une architecture multi-joueur pour un jeu cop,
où il y a pas d'enjeu.
Ce que ça ouvre, c'est la possibilité de faire des LAN, en fait.
Voilà, faire des LAN ou le faire à travers le réseau.
Mais ça ne fonctionne que pour des jeux où il n'y a pas d'enjeu, justement.
Pourquoi ça ne marche pas dès que tu fais des jeux compétitifs ?
Les jeux compétitifs, donc, ça arrive avec
Counter-Sack 1.6, Doom, et puis maintenant, les énormes League of Legends, etc.
Tu ne peux pas faire du hosting.
Tu as deux problèmes.
Le problème, c'est que le joueur qui hoste la partie,
qui, ça se passe sur son ordinateur,
lui, n'a pas de délai dans les actions.
Puisqu'il fait une action, son ordinateur lui répond directement
et lui donne l'état du monde.
Alors que quelqu'un qui se connecte soit en LAN ou via Internet,
il faut le temps, quand il fait une action, que la requête arrive
jusqu'au l'ordinateur où se déroule la partie,
et puis il faut le temps que la requête reparte.
Donc, si tu as 50 ms de latence, ça fait 50 plus 50, ça fait 100 ms.
Donc, tu as un délai dans les actions que tu fais.
Et, juste pour bien comprendre, c'est le host,
en fait, c'est celui qui détient la vérité, c'est censé.
Exactement.
Il détient la version du monde qui va déterminer...
Il a primé sur la décision.
...qui est en fait la partie tournée sur son ordinateur.
Et donc, c'est pour ça que, typiquement, dans les premiers Call of Duty, etc.,
parfois, on avait un message, c'était le host déconnecté.
Exactement.
Et du coup, tu as parti à s'arrêter.
Parce que c'est lui qui... En fait, c'est lui qui agit comme le serveur.
Ça se passe sur son ordinateur.
Donc, il est, comme tu dis la vérité,
et lui, quand il fait une action, la réponse est instantane,
il n'y a pas de connexion, en fait.
Et puis, évidemment, vu que la partie se passe chez lui,
s'il est un peu malveillant, il peut modifier la mémoire de sa machine
pour changer l'état du monde et tricher concrètement.
Donc, les entreprises de jeux vidéo, quand elles ont compris
que c'était pas possible, elles ont implémenté un nouveau système,
ce qu'on appelle des serveurs dédiés, où tu as un serveur dans le cloud
qui est contrôlé par l'entreprise qui édite le jeu
et les joueurs se connectent à ce serveur.
C'est pour ça que, quand tu joues à League of Legends, par exemple,
en fait, tu te mets dans une file d'attente.
Et puis, dès qu'il y a 6 joueurs, hop, ils t'envoient sur le serveur
qui appartient à Rio de Games, dans ce cas-là.
Et ça, évidemment, ça résume nos deux problèmes,
parce que tout le monde a de la latence,
puisqu'il faut le temps que ton ordinateur communique avec le serveur.
Et puis, tu peux plus tricher en théorie,
parce qu'il y a une séparation des tâches qui est faite.
C'est-à-dire que tout ce qui est important pour le jeu,
donc le mouvement, les points de vie, les dégâts,
ça, c'est géré par le serveur.
C'est le serveur qui fait tous ces calculs-là.
Et toi, sur ta machine, t'as pas accès à ces calculs-là.
Et tout ce qui est cosmétique, qui n'a pas d'impact sur le monde,
donc les sons, les effets de particules, l'interface utilisateur aussi.
Ça, c'est géré par ton client, c'est-à-dire ta machine.
C'est pour ça, par exemple, que si tu joues à World of Warcraft,
c'est très facile de changer ton interface.
Il y a plein d'adones qui existent pour changer un peu la tête de ton nuail,
parce que, vu que c'est géré sur ta machine, tu peux modifier ce que tu veux.
Par contre, tu ne peux pas changer la vitesse avec elle-plus de déplace,
parce que ça, c'est géré côté serveur.
Voilà.
– Ou alors, si tu la changes, tu vas avoir des rollbacks constamment,
tu vas te... Des choses comme ça.
– Exactement. En fait, c'était de la changer.
Ce qui se passe, c'est que le serveur va se rendre compte que tu n'es pas au bon endroit.
Le serveur, lui, son rôle, c'est de maintenir la cohérence du monde entre les gens,
de s'assurer que les gens voient la même chose à l'écran.
Donc, si toi tu essaies de te déplacer plus vite,
ça n'est que sur ta machine, le serveur et les autres, ils ne sont pas au grand.
Donc, le serveur, à chaque tic, c'est-à-dire 30 fois par seconde,
il va venir dire, mais tu n'es pas au bon endroit, hop, je te ramène.
Et donc, tu as cette espèce de...
Depuis, je crois qu'on a une vidéo qu'on pourra montrer,
qu'on a enregistré, justement, dans notre jeu, où c'est exactement ça,
où tu vois le perso qui fait ça,
parce qu'il essaie de se déplacer plus vite qu'il a le droit, en fait.
– Ah, oui.
– Et, alors, juste pour reprendre un petit peu dans le lore,
parce qu'on a déjà été partés tout de suite dans les détails,
si on...
Si on doit dire exactement, justement, c'est quoi la transition ?
Qu'est-ce qu'il y a ? Est-ce qu'il y a un moment où le multi-joueur s'est complexifié, en gros ?
Ce que tu expliquais, c'est que c'est seulement un changement de compétitivité.
Il n'y a rien d'autre qui a changé dans le multi-joueur depuis 15 ans.
– Je ne sais pas si le critère, c'était vraiment pour de la compétition,
si ils ont commencé à faire des serveurs pour simplifier l'expérience des joueurs.
Il faut regarder historiquement.
Mais à mon avis, il y a quand même une idée que...
C'est une grosse infrastructure de faire des serveurs dédiés.
Il faut gérer des serveurs en tant qu'entreprise.
En termes d'implémentation, c'est vachement plus compliqué.
On verra un peu après pourquoi.
Donc si tu fais un jeu, ce qu'on appelle casu, entre potes,
tu ne vas pas t'emmerder à faire ça.
Je pense qu'il y a une dimension compétitive,
même si ce n'est pas forcément des tournois avec de l'argent.
– Du coup, si on récapitule, aujourd'hui, moi je veux créer un jeu,
comme toi, tu viens de créer un jeu.
C'est quoi tes options pour gérer du multi-joueur ?
C'est quoi, tu es du plus simple au plus compliqué ?
– Du multi-joueur par Internet.
Par Internet, c'est hosting.
Donc tu as un joueur qui est le serveur et les gens se connectent à lui.
Ou serveur dédié.
Ça, c'est les deux grandes catégories.
Après, tu peux faire du serveur dédié de base.
C'est ce que je viens de vous présenter.
Si tu n'as pas des grandes ambitions pour avoir un jeu
avec un classement, avec vraiment de l'enjeu,
on verra que cette implementation de base,
avec le serveur qui vérifie tout ce qui est important,
et le client qui ne fait que ce qui est visuel,
il y a des petits soucis.
Et ça, c'est quelque chose dont on s'est rendu compte, nous,
parce que quand tu vas sur Internet, tu regardes comment faire un jeu multi-competitif,
ils disent, tu fais cette architecture, le serveur vérifie tout, il n'y a pas de triche,
et le client gère ce qui est visuel.
Et puis, on l'a implémenté, et puis on s'est rendu compte qu'il y avait des petits problèmes, quand même.
Je peux prendre un exemple tout de suite pour illustrer.
Tu vas prendre l'exemple d'un jeu de tir à la première personne, ce qu'on appelle un FPS.
Situation, tu es en tournoi, c'est un contraint,
si tu tu le mets qu'en face, tu gagnes 10 millions de dollars,
parce que maintenant, c'est ça les enjeux.
Tu vois l'adversaire, tu vises, tu tires.
Toi, sur ton écran, qu'est-ce que tu vois ?
Tu vois, tu entends le bruit du flingue, la balle qui part,
tu entends le bruit du headshot, de tir dans la tête qui te dit, t'as touché,
l'agerve de sang, le petit, ce qu'on appelle un hit marker,
c'est la petite croix qui te dit que t'as touché,
et là, il n'y a pas de kill.
Ce n'est pas de rien, le mec prend pas de dégâts.
Et ça, quand ça arrive en tournoi, en général,
le taux de gars qui prennent leurs claviers, qui les clacent,
tu vois, et augmentent...
Le rage-coup, tu es énorme.
En tant que développeur, tu dis comment je peux éviter ça ?
Comment c'est possible ?
Parce que le joueur, il se dit, c'est quoi ce jeu qu'on déclépie ?
En fait, qu'est-ce qui s'est passé derrière ?
Au moment où tu as appuyé sur clic gauche, pour tirer avec ton arme.
Il y a deux choses qui se sont passées en parallèle.
D'abord, ton client fait ce qu'on appelle un line-trace.
C'est une simulation de tir.
Donc, il tire une droite entre l'arme et l'adversaire
pour vérifier qu'il n'y a pas d'obstacle.
Il voit qu'il n'y a pas d'obstacle entre les deux.
Il te dit, c'est un tir réussi.
Donc, il te met tous les indicateurs cosmétiques d'un tir réussi,
le son, la gerbe de son, etc.
En parallèle de ça, il y a une requête qui part au serveur,
disant, je veux tirer sur tel ennemi.
Sauf que la requête, elle arrive 50 000 secondes plus tard.
C'est toujours le problème de la latence.
Le serveur, il reçoit cette requête 50 000 secondes plus tard
et lui, entre temps, dans son référentiel, l'ennemi s'est déplacé.
Et dans le cas présent, 50 000 secondes plus tard,
l'ennemi s'est retrouvé derrière le mur.
Donc, le serveur, lui, fait son propre line-trace, sa propre simulation
et dit, bah non, en fait, t'as pas touché.
Le mec est derrière le mur, il y a un obstacle.
Donc, il renvoie un message au client disant,
t'as pas touché, donc je te donne pas le kill.
Ça, ça s'appelle un noregg pour non-registered.
Parce que ton client, il a enregistré
qu'il n'y avait pas de problème.
Mais le serveur, qui reçoit l'info plus tard,
bah, lui, dans son référentiel, il y avait un obstacle.
Mais du coup, là, tu me dis ça comme ça, ça parait insoluble.
Ça parait insoluble.
Alors, qu'est-ce qu'on pourrait faire ?
Une petite astuce.
Et d'ailleurs, je précise juste que
cette implémentation avec le serveur qui vérifie tout
et les clients qui font ce qui est cosmétique,
c'est là que s'arrête la plupart des jeux indés.
Nous, on a un peu regardé ce qu'ils se faisaient dans les jeux indés.
Ça s'arrête là et ça explique en trop de pourquoi
les jeux indés compétitifs ne réussissent pas, à mon sens.
C'est parce qu'il y a ces problèmes-là...
Et ces 5 % de cas un peu subtils
qui font que ça dégrade l'expérience de jeu.
Donc, si on essaie d'imaginer comment on pourrait résoudre ça,
bataille une méthode, c'est-à-dire,
le serveur, il connaît la latence du joueur.
Il peut lui envoyer un paquet et voir combien de temps ça revient.
Il peut mesurer son looping du joueur.
Donc, ce qu'il peut faire, c'est qu'au moment où il reçoit la requête de tir,
au lieu de faire le calcul dans son référentiel,
il revient dans le temps.
Il dit qu'est-ce que le client, il a vu ?
Lui, il a vu la scène il y a 50 000 secondes.
Donc, on va prétroper d'aller 50 000 secondes.
On va resimuler la scène du point de vue du client.
Et puis là, on voit qu'il n'y a pas de problème.
Donc, on accorde le kill.
Donc, concrètement, c'est-à-dire que côté serveur,
tu dois garder un historique, par exemple, de la dernière seconde,
pour pouvoir toujours recalculer dans le passé pour chaque client
qui a sa propre latence.
Tu as fait. Tu as un tableau des positions, par exemple.
Mais, question bête, mais est-ce que c'est plus juste ?
En gros, quand il pose, l'ennemi, il a vraiment bougé.
Voilà.
Oui, tu dis, c'est un peu injuste.
Bah, j'y viens.
La perfaite transition.
Alors attends, parce que du coup, en fait...
Toi, ça a tiré.
Ce qui est compliqué, c'est que le vécu des deux joueurs,
il est pas cohérent, en fait.
Tout à fait.
Puisqu'il est différent.
Oui.
C'est tout le challenge.
Comment résoudre ce problème ?
Comment on tranche la vérité ?
C'est ça. Tu vas dire, en fait, maintenant, on a simulé du point de vue du tireur.
On a fait ce qu'on appelle ça un avantage tireur.
Tu simules du point de vue du gars qui a tiré.
Lui, il est content.
Tout est cohérent pour lui.
Il a vu un mec, il a tiré, il l'a tué.
Mais le gars qui se fait tirer dessus,
lui, il a reçu l'info 50 ms plus 50 ms plus tard.
Donc, lui, sur son écran, il était déjà derrière le mur.
Il s'est caché.
Et après, il meurt.
Et après, il meurt.
Donc, pareil, très frustrant.
Comment tu résous ça ?
Et là, pour moi, c'est l'aspect vraiment passionnant de ce sujet.
C'est que t'es obligé de sortir de l'aspect technique.
Parce qu'il n'y a pas de solution technique à ça.
Pour entrer dans l'aspect psychologique.
Puisque tu as des écarts, puisque il y a des gens...
J'y arrive.
Puisque tu as des écarts,
tu as forcément quelqu'un qui se fait avoir dans l'histoire.
Donc, comment tu impléments ton système
pour minimiser la frustration générale ?
Si on prend cet exemple-là,
on a vu que quand tu tirais et que tu avais un oreille,
c'était hyper frustrant.
Parce que tu vois vraiment tous les indicateurs
et il n'y a pas de kill.
Si tu te fais tirer dessus,
t'es derrière le mur et que tu meurs quand même.
Sur un jeu, à la première personne,
tu te dis, peut-être que mon bras y dépassait.
Ou t'as pas forcément conscience de tout ton corps.
C'est moins visible le fait qu'il y ait une injustice.
Donc, dans ce cas-là, en général,
on va avoir tendance à avantageer le tireur.
Ok.
Mais c'est vachement subjectif.
Ouais, ça, ça fait ça.
Je comprends, ouais.
Et c'est pour être même culturellement,
tu pourrais imaginer une culture différente.
En Occident, c'est toujours des avantages tireurs, quasiment, pour ça.
Tu pourrais imaginer une autre culture où ils disent,
c'est vachement plus injuste de mourir alors que t'arrêtes pas dû,
que d'avoir une injustice sur un tire,
une opportunité manquée,
donc, ils pourraient avantageer le receveur.
Mais vous voyez que c'est super intéressant.
Moi, j'ai fait une l'exercice.
J'avoue que je pense que le plus frustréci...
Vraiment, j'ai l'impression d'avoir réussi mon let-shot,
en plus, j'arrive pas à souvent en faire.
Je suis plus frustré si il passe pas que de mourir,
parce que, en fait, tu meurs régulièrement, tu t'es habitué à...
En fait, ce qui est beaucoup plus frustrant dans l'histoire,
c'est que t'as tous les signaux...
t'as tous les signaux visuels et sonores que ça a marché.
Ouais, c'est ça.
Donc, si tu vois une gerbe de sang et qu'il n'y a pas un cadavre après,
t'es là et guisque.
Alors qu'effectivement, oui, t'as pas forcément conscience.
En fait, ce qui est assez bien là, c'est que...
Tu peux te dire, oui, j'imagine que mon épaule a dépassé,
il y a plus de doute, en fait,
d'une position de la personne qui s'est fait tirer dessus.
Moi, j'ai une question, c'est comment on sait...
Parce que t'as dit que, en Occident, quasiment tous les jeux,
ils font de l'avantage tireur.
Comment on sait ça ?
Parce que t'as quasiment jamais de nos règles
quand tu joues à Call of Duty ou à Battlefield.
Et donc, c'est forcément la preuve qu'il y a un avantage tireur.
Oui, parce qu'il y a...
Ils peuvent pas empêcher la latence.
On verra qu'il y a des fois où ils font des entre-deux.
Ça, ce serait la partie à la fin.
Mais en général, sur les jeux très nerveux où il y a du tir,
je mettrai ma main à couper que c'est quasiment toujours des avantages tireurs.
Là où c'est subtil, c'est qu'on a vu que,
psychologiquement, s'il y avait une... C'était subjectif.
Non seulement c'est subjectif en général, mais c'est aussi par cas.
Là, on a pris l'exemple d'un tir dans un FPS, on dit enfin un avantage tireur.
Nous, dans le jeu qu'on développe, qui s'appelle Soul Shards,
on a pas mal de sorts de zones.
Donc, en fait, tu places une zone au sol qui explose,
et puis tous les ennemis dedans, ils prennent des dégâts.
Si t'imagines du point de vue du lanceur de sorts,
tu places une zone, t'as 10 mecs dedans, ça explose,
t'as plein de chiffres, t'es content ?
Si t'as un gars qui est un peu dedans et qui prend pas de dégâts,
c'est pas très grave, tu vois, tu ne vas même pas te rendre compte.
Par contre, si toi, tu te prends le sort,
je précise que c'est un jeu à la troisième personne,
donc tu vois ton personnage devant toi.
Si tu vois ton perso, t'es un peu dehors,
et tu prends quand même les dégâts,
tu vas être hyper frustré.
Parce que toi, t'es concentré pour éviter la zone,
t'en as rien à faire des neufs autbus qui se le prennent,
t'es concentré sur toi.
Donc là, pour minimiser la frustration,
on va avoir temps à avantageer le receveur.
Ah, super intéressant, en fait.
C'est vraiment du cas par cas.
Oui, c'est trop grand.
Moi, il y a un autre exemple que je connais, c'est d'un Rocket League.
Il y a un truc qui s'appelle...
On appelle ça les Ghosted.
En gros, c'est quand tu as ta voiture, par exemple,
tu vas voir une petite étincelle,
parce que tu penses avoir touché la balle,
tu penses... Enfin, tu la frôles, tu vois,
tu vois l'étincelle du fait que tu l'as touchée,
et en réalité, elle passe,
et en fait, elle rentre dans le but, par exemple.
On a passé une Ghosted,
et je me suis toujours demandé ça à vos doux,
et en fait, c'est juste pas solide.
Voilà, parce que, en fait, l'étincelle, c'est cosmétique,
donc c'est géré côté client.
Tu dirais pourquoi il ne le gère pas côté serveur,
parce que sinon, tu aurais des délais.
Tu aurais, en fait, tu touches et tu aurais 50 ms avant de voir l'étincelle.
C'est pas esthétique.
C'est horrible. Donc, t'es obligé d'y gérer côté client,
mais du coup, en fait, du point du serveur,
toi, t'es passé à cooter.
Mais du coup, dans ces quatre figures-là,
comment est-ce qu'ils gèrent la latence de chaque joueur ?
Des fois, il y a des joueurs, ils ont moins de...
Ils ont moins de frame par seconde.
Enfin, ils voient les choses peut-être avec du retard,
mais, enfin, est-ce que ça s'est pris en compte, du coup ?
Le serveur a juste, quand je dis, il revient dans le temps,
c'est pour faire le calcul, il revient dans le temps de la valeur de ta latence.
OK, OK.
Alors, tu pourrais dire, il y a des moyens de tricher
où tu simules une latence fausse,
mais, en fait, déjà, tu peux forcément...
Tu peux simuler qu'une latence plus élevée que ce que tu as.
Oui.
Après, il y a un paquet.
Et puis, tu as des systèmes où, en fait,
si tu simules, tu dis, j'ai 5 secondes de latence,
donc tu simules les trucs, il y a 5 secondes dans le passé,
le serveur, il va dire non.
Au max, 110 secondes.
Et puis, c'est une connexion pourrie, t'en veux pour toi ?
Ah oui, OK, il y a quand même un seuil, quoi.
Voilà. Tu as des systèmes.
Très bien.
Pareil, si ta connexion, elle fait yo-yo,
on dit souvent, il faut mieux avoir beaucoup de ping dans les jeux,
mais que ce soit stable, plutôt que d'avoir un yo-yo.
Pourquoi ? Parce que, quand tu fais le yo-yo,
en fait, ça peut simuler un attaque,
parce que tu pourrais très bien imaginer que le client y tire,
et en fonction, il dit soit, j'avais 150 000 secondes de ping,
soit j'avais 50 000 secondes en fonction de ce qu'il arrange.
Et donc, ça fait comme si tu avais ton ping qui faisait ça.
Et donc, le serveur, pour éviter ce genre de triche en moyenne,
quand un truc fait yo-yo, le serveur, il ne liche sa vente à je plus jamais,
et puis, t'as qu'à acheter une bonne connexion.
C'est trop intéressant.
C'est pour ça qu'il faut mieux une connexion stable.
C'est vrai que j'avais même pas pensé à ce système.
C'est énorme comme cas de figure.
Attends, mais...
C'est-à-dire que, du coup, ton yo-yo, tu dois...
t'es obligé de mettre une range.
Et donc, en fait, si ça te trouve, il y en a qui arrivent à jouer à l'intérieur.
C'est trop intéressant.
Donc, tu pourrais te dire, en fait, si...
je vérifie, dans mon historique de mon jeu en local,
il y a 50 000 secondes, je serais mort.
Il y a 80 000 secondes, je serais pas mort.
A 100 000, je serais mort.
Je t'envoie la bonne, quoi.
Oh, là là, c'est trop bon.
C'est pour ça qu'il peut quand même y avoir de la triche,
malgré ce que t'as expliqué, malgré la vérification du côté serveur.
En fait, certains joueurs arrivent à tricher dans des jeux multis, malgré tout.
Il y a ça, et il y a un autre cas qu'on donnera à la fin,
où les éditeurs pourraient empêcher la triche, c'est les wallacks.
Les wallacks, c'est quand tu vois les ennemis à travers les murs.
Les éditeurs pourraient l'empêcher, mais ils choisissent de pas le faire,
parce que ça dégraderait l'expérience générale.
Mais pour expliquer ça, il faut que...
On y reviendra à la fin, parce que c'est un cas intéressant.
Là, on a expliqué le cas du tir, manquer pas manquer, de la préférence tir, etc.
Tu dirais que c'est quoi le deuxième truc auquel t'as été confronté ?
Ensuite, il y a toujours des petits problèmes.
Je crois que j'ai une vidéo, si tu peux envoyer...
La vidéo qui s'appelle boule de feu 1.
Une vidéo, sinon, tant pis.
Ah oui, voilà, c'est ça.
Ça, c'est enregistré, je ne sais pas si on verra bien.
C'est votre jeu ?
Ça, c'est notre jeu.
Je fais l'animation, et la boule de feu, elle spawn à 3 mètres à ma droite.
Je ne sais pas si tu peux la remettre.
Ah, c'est toi qui l'alance ?
C'est moi qui l'alance.
Là, j'ai forcé, j'ai mis 400 ms de ping.
J'ai mis un ping énorme, pour qu'on voit que ce soit très clair,
que la boule de feu, elle spawne hyper loin.
Pourquoi elle apparaît à droite ?
Elle apparaît là où j'étais, il y a 410 ms.
Pourquoi ? Parce que là, il y a un avantage tireur qui se passe.
Au moment où j'appuie sur mon clic gauche,
ça envoie une requête au serveur, disant ce que je peux encerner le boule de feu.
Le serveur fait oui, c'est bon, tu as de la manarette, tu as tout ce que tu veux.
Il a fait apparaître, mais vu qu'il est remonté dans le temps,
il a fait apparaître, là où j'étais, il y a 410 ms.
Ah oui.
Donc là, c'est hyper visuel, parce que j'ai mis une attente énorme.
C'est vraiment 3G en Edge, même.
Je suis en rien du tout. Normalement, le serveur me tige de la partie.
Oui, parce que tu es trop dangereux.
Mais si tu as une attente normale, ils ont 30, 50 ms,
il y aura quand même ce phénomène, le serveur ne s'en rendra pas compte,
parce que ça sera un écart tout petit.
Mais il ne s'en rendra pas compte consciemment.
Mais il y aurait une gêne. Tu te diras, c'est pas...
Mais bah, elle ne part pas, quoi.
Oui, ça part pas bien. Tu ne sauras pas dire pourquoi,
mais le serveur ne sera pas agréable à jouer.
Et ça, pour moi, c'est un des trucs qui fait que les jeux 1D, entre autres,
ne réussissent pas les jeux compétitifs.
Ne réussissent pas, parce que tu as cette espèce de gêne.
C'est pas... En anglais, ils ont un terme, c'est snapy,
c'est pas comment on dirait en français, c'est réactif, quoi.
C'est pas réactif, parce que les développeurs 1D,
à la plupart, ils ne posent pas ces questions, tu vois.
Mais en fait, tu auras un petit écart.
Dès que tu feras une action, tu auras un petit délai.
Ce ne sera pas réactif. Ça, c'est vachement frustrant.
Salut ! Si vous appréciez Ender Score, vous pouvez nous aider de ouf,
en mettant 5 étoiles sur Apple Podcast,
en mettant une idée d'invité que vous aimeriez qu'on reçoive.
Ça permet de faire remonter Ender Score.
T'es l'une fusée.
Alors comment résous-tu ça ?
Comment résous-tu ça ?
Et bien, en réalité, t'aurais une vraie trajectoire,
j'imagine, côté serveur, pour la partie dégâts,
ou la partie, est-ce que tu meurs, est-ce que tu meurs pas ?
Et tu aurais une trajectoire cosmétique qui, elle,
partirait du nouvel endroit du joueur.
Mais comment il sait dans quelle direction il est parti ?
Le joueur, le client, une fois qu'il a la réponse du serveur,
qui lui dit c'est bon, tu as...
Non, ça marche pas, mon truc.
Non, tu es très très bon.
Tu es très très bon.
Voilà, c'est pas de ça d'en faire parler, mais ça c'est un truc qui existe.
Qui est, et on aura un exemple à la fin avec Overwatch,
où tu as différentes trajectoires qu'il faut réconcilier après.
Mais là, ce qu'on va faire, c'est de la simulation client.
Qu'est-ce que ça veut dire ?
Au lieu d'avoir, tu appuies sur la compétence, ça envoie un message,
ça attend la réponse, ça c'est, on dirait, de la prévention.
Le serveur, il vérifie avant, est-ce que tu as le droit de faire les trucs ?
Et si tu n'as pas le droit à non, si tu as le droit, il te laisse faire.
Donc c'est une forme de prévention.
Là, on va faire de la guérison.
En game dev, on dit, il faut mieux guérir que prévenir,
c'est un peu l'inverse de la médecine, on dit, c'est ça.
Donc là, ce qu'on va faire, c'est, on va laisser le client faire son truc.
Il veut lancer une boule de feu, il lance une boule de feu.
En parallèle de ça, il y a la requête qui part,
et le serveur, il va vérifier que tu avais le droit à posteriori.
Si tu avais pas le droit, il va annuler ton action.
Donc toi, de ton point de vue, tu appuies, tu as instantanément le truc qui part,
c'est super agréable.
Par contre, si tu as triché ou qu'il y avait une incohérence,
le serveur va faire disparaitre la boule de feu après coup
et annuler tout ce que tu as fait.
Mais c'est...
En fait, ce cas est suffisamment rare pour que ce soit...
Si tu ne triches pas, oui, c'est des ajustements.
Ça arrive beaucoup sur le mouvement,
parce que tu as très rapidement des incohérences sur le mouvement,
mais en fait, tu peux faire des thèmes d'interpolation,
ça fait un truc très doux.
Donc tu ne te rends pas forcément compte.
Mais par exemple, ça arrive sur Counter Strike,
les gens qui jouent à Counter, quand tu fais tirer dessus,
tu as un espèce de petit ajustement
où ton mec, il gèle un peu sur place.
Ça, c'est typiquement des histoires d'interpolation de mouvement.
Le mouvement est géré côté client, mais le serveur corrige.
En fait, tu t'es pris une balle, donc t'es censé être ralenti.
Ah !
Tu veux dire, dans le mouvement, dans le mouvement de ton perso, c'est pas...
Voilà. Le serveur, il a juste fait...
Parce que ton client, il n'était pas au courant qu'il s'était fait tirer dessus.
Il a dit ça, en fait, tu t'avais tiré dessus,
en le cas où ça te ralentit dans Counter.
C'est donc ça.
Et donc, il te réajuste, mais il essaie de le faire de la manière la plus douce possible.
Mais l'idée reste la même.
L'idée, c'est que tu laisses le client faire son truc.
Tu le fais instant, instant, réactif.
Ça apparaît pile au bon endroit, c'est trop bien.
Et s'il y a un problème, que ce soit une incohérence client,
parce qu'il y a eu une perte de paquet, par exemple,
ou une friche, tu corriges l'action qui n'était pas autorisée.
C'est couvé.
Évidemment, c'est assez chaud à implémenter,
parce qu'annuler une action, déjà, c'est en cas barca,
ça dépend de la compétence.
Et puis, ce n'est pas toujours évident.
Si tu prends l'exemple, aucun mouvement, c'est assez facile à annuler.
Tu remets là où il était il y a 30 minutes, mais un projectile,
déjà, il faut faire disparaître le projectile, annuler les effets visuels,
enfin, tout bien annuler.
Il faut annuler les dégâts aussi.
Il faut annuler les dégâts, il y a des dégâts.
Et nous, on a des sorts, genre des retours dans le temps, par exemple.
Donc, il faut annuler un retour dans le temps.
Ça m'use bien.
Voilà.
Mais c'est comme ça que tu fais des trucs vraiment agréables à jouer.
C'est comme ça que les jeux triple A fonctionnent tous.
Ok.
C'est hyper intéressant.
Donc là, on a progressé, déjà.
C'est à dire qu'on a le projectile qui part du pile du bon endroit,
et nos headshots sont toujours pris en compte.
Voilà.
Et je conclure juste avec ça.
En plus, ça, où c'est difficile, c'est que ce n'est pas toujours évident
d'identifier une triche d'un problème réseau.
Parfois, le client, il n'est pas au bon endroit.
Et tu ne sais pas si c'est parce qu'il a essayé de tricher
de se téléporter alors qu'il n'est pas droit,
ou si c'est juste qu'il y ait une perte de paquet.
Et il faut juste le remettre, mais ce n'est pas sa faute.
Donc, t'es obligé de faire des études, des trahées statistiques
pour essayer de voir, est-ce que c'est répété ?
Ah oui, statistiques sur le long.
Voilà.
S'il est tout le temps à la mauvaise position de beaucoup,
il y a Anguille-sur-Roch.
Oui, en fait, c'est pas blanc ou noir, la détection de triche.

Mais du coup, parce que là, on a vu votre jeu,
il n'est pas encore...
Bientôt.
Il y a encore des jouets, un Tiffany.
Mais tu peux te naturaliser d'attente.
Du coup, quand vous allez le lancer,
vous allez avoir des serveurs dédiés.
Oui.
Sur AWS.
Ah, intéressant, on tient.
Tu n'as pas des codes parraines.
En vrai, oui.
Tu as des crédits.
Je suis hyper sûr.
On discute après si tu veux.
Mais...
Ça coûte pas si cher, mais ça coûte quand même un peu cher.
Et tu as mentionné Overwatch.
C'est quoi, la différence entre la cette démonstration
et ce qu'il faut Overwatch ?
Voilà, c'est là où on en est nous.
Pour l'instant, pour nous, c'est la formule team.
Mais peut-être que dans deux ans, je reviens et je te dis,
mais en fait, c'était nul à ce qu'on a fait.
Overwatch, les gens ne se rendent pas compte,
mais c'est une proïste technique, un jeu comme Overwatch.
Déjà, il faut voir que, comme je le disais,
les jeux, normalement, ils sont développés sur des moteurs.
Overwatch, ils sont partis papier crayon, les gars.
Ils ont fait un moteur de zéro.
Déjà, il faut être motivé.
Et ils ont fait un jeu sur ce moteur.
C'est pour ça que Overwatch a des collisions aussi particulières.
Par exemple, quand tu es sur un toit et que tu arrives,
en fait, tu glisses, c'est un peu tout doux.
Alors que dans les autres jeux, c'est Resh.
Ils ont fait des trucs comme ça,
parce que vu qu'ils ont un propre moteur, ils contrôlent tout,
en termes de la physique, sur l'impact des projectiles, etc.
Donc, d'un point de vue, déjà, moteur, c'est impressionnant.
Et d'un point de vue réseau, c'est un truc de zinzin.
Parce que tu as à la fois un shooter nerveux, compétitif,
donc tout va très vite, et tu as des compétences hyper variées.
C'est pas juste du tir comme Call of Duty.
Tu as des explosions, des atits, tout qui t'attire, etc.
Donc, par exemple, tu as un perso dans Overwatch qui s'appelle Junker Queen,
où elle a une compétence où elle lance un couteau,
et si ce couteau touche un ennemi, il s'accroche,
et puis si tu réappuies sur clic droit, ça ramène le couteau à toi
et ça tire l'ennemi avec.
Donc, quand tu es un joueur, tu connais pas le GAMEDEF,
tu dis, c'est pas très compliqué, t'appuies sur clic droit,
t'applique une force en direction de la Junker Queen,
et puis c'est terminé.
Pas tout à fait.
On va reprendre l'exemple de la latence.
Quand toi, t'appuies, instantanément, l'ennemi est tiré vers toi.
Donc, il a une position sur ton écran.
Lui, le temps qu'il reçoit l'information qui se fait attirer,
il s'est passé 50 000 secondes plus 50 000 secondes.
Entre temps, il s'est déplacé.
Donc, tu vois que sur l'écran de la Junker Queen,
t'as une trajectoire comme ça,
sur l'écran du mec qui se fait attirer, t'as une trajectoire comme ça,
sauf que, bah, à un moment, il faut bien réconciler les trajectoires,
parce que le monde, il doit être pareil pour tout le monde.
Comme ils ont fait, je sais pas.
Faudrait lire le code.
Ah, j'ai méjécouté les deux de la réponse.
Là, à mon avis, il faut une forme d'interpolation.
En fait, t'as deux courbes et ils essaient de faire une interpellation
le plus propre possible pour que...
Réconcilier les deux et entre temps, ils font peut-être une position médiane,
qui fait que s'il y a un tir sur la personne pendant l'attraction,
le truc est à peu près cohérent, mais c'est hyper compliqué.
Et moi, je trouve que c'est ça le plus intéressant,
c'est qu'en fait, tu te rends compte que faire du développement
aux musulgeurs, c'est crâde.
Ça ne peut... En fait, ça ne peut être que crâde.
Faut masquer, en fait, que c'est crâde.
Le but, c'est que le joueur se rend compte de rien,
mais derrière, tu as des trucs...
C'est du bricolage, en fait.
Comment tu bricoles pour que le joueur ne se rende jamais compte
qu'il y a des incohérences partout, partout.
D'ailleurs, tu le vois bien sur les jeux qu'on a...
Non, parler avec Nicolas, il n'y a pas longtemps.
Les jeux qu'on a en mode replay, tu sais, où tu peux regarder tes partis après.
En fait, si tu enregistres ton écran pendant que tu joues avec OBS,
ça te fait une version.
Ça, c'est ce que tu vois contre tes clients.
Ensuite, tu regardes la partie qui a été enregistrée par le serveur.
Tu te mets de ton point de vue.
Donc, en théorie, ça devrait être la même chose.
T'es du point de vue de ton personnage.
Du coup, maintenant que tu nous as dit tout ça, non ?
On va rien avoir.
OK, c'est trop mal.
Rien avoir.
Tu auras des trucs trop bizarres.
Dans Overwatch, tu le vois avec le mode replay.
Il y a un perso qui s'appelle Anzo, il tire des flèches.
Quand tu regardes les replays, les flèches, elles font des 180 degrés.
Elles arrivent dans les têtes, des trucs.
Mais qu'est-ce qui se passe ?
Parce qu'elles font ce qu'ils peuvent pour maintenir une forme de cohérence.
Mais derrière, c'est le zoo.
C'est trop intéressant.
Est-ce qu'il y a des trucs dont on n'a pas parlé
justement des problématiques que vous avez eues dans la gestion du midi ?
Je réfléchis, attend, je regarde.
Sur la gestion du mult, je crois pas.
Dans le chat, ça peut arriver dans les kill cams.
Par exemple, tu vois ce genre de trucs bizarres.
Si vous êtes toujours demandé, c'est pour ça.
Tous les trucs où par exemple, les crochets, les jeux où tu as un gars qui lance un crochet,
et ça t'attire, il y a toujours des trucs super bizarres.
Parce qu'il peut...
En général, ils font des mélanges d'avantage tireur et avantage receveur
pour que ce soit trop incohérent, mais t'as des fois où le truc,
ils te capturent derrière les murs, il faut y casser, ils devraient pas.
C'est à cause de ça.
Et justement, tu as mentionné un truc à propos de la triche.
C'est les wallhacks.
Et malgré tout ce qu'on a expliqué,
le fait que le serveur est capable de vérifier tout quelque chose, etc.
Tout le monde sait bien qu'il existe
toujours des tricheurs qui utilisent des wallhacks.
Et pourtant, théoriquement, on pourrait l'empêcher, c'est ça ?
Parce que si on réfléchit, comment ça marche un wallhack ?
Un wallhack, c'est un programme qui lit la mémoire du jeu sur ta machine,
et il lit la position des autres joueurs.
Et il connaît ta position, il connaît la position des autres joueurs,
donc il fait un calcul et il te montre l'ennemi à travers les murs.
Un calcul n'a pas hyper compliqué.
Tu pourrais dire, mais pourquoi est-ce que le serveur te donne l'information
de la position des autres joueurs quand tu les vois pas ?
Tu pourrais faire en sorte que ton client n'a la position des autres
que quand ils sont visibles.
Et dans ce cas-là, tu peux pas faire de wallhacks,
parce que ton PC ne connaît pas la position.
Si tu fais ça, tu as un problème avec la latence,
parce que imagine, tu regardes une porte.
T'as un ennemi qui passe la porte, donc il n'est pas répliqué, pour l'instant.
Au moment où il passe la porte, le serveur réalise,
oh, maintenant il est visible, il faut que j'envoie la position au client.
Sauf que toi, tu reçois la position 50 ms plus tard.
Donc, c'est-à-dire que tu vas voir le gars apparaître de nulle part
le temps de recevoir l'info.
C'est pas agréable.
C'est pas grave, mais c'est pas agréable que t'es un petit délai
pour que les joueurs apparaissent.
Et donc pour empêcher ce malaise, ce fait que c'est pas sympa pour le joueur,
on va répliquer la position tout le temps, ce qui autorise les wallhacks.
Tempille pour les wallhacks.
En fait, tu devrais pouvoir...
Je pense que peut-être un d'entre eux, ce serait tant que...
Il est super loin d'une zone où t'es potentiellement visible,
genre on va dire 10 mètres avant l'angle où c'est visible,
on considère que t'es pas visible, tout simplement.
Et puis quand tu commences à t'approcher de l'angle,
où tu commences à avoir une potentielle vision,
là, tu fais apparaître la personne.
En amont, quoi.
C'est super fort.
Des transitions de fou.
C'est exactement ce qui se fait.
Ah ouais ?
C'est super fort.
C'est trop fort sur ce plateau.
C'est trop fort.
Sur un jeu de tir, c'est compliqué de faire ça,
parce que prévoir les positions possibles,
parce que tu dis que tu vas prévoir où il pourrait être dans le futur,
et si c'est une zone qui est visible, tu répliques.
Alors que s'il est hyper loin,
dans les 10 prochaines secondes, il ne sera pas visible,
donc tu ne répliques pas.
Sur un jeu comme Counter-Strike, c'est compliqué
parce que le champ des possibles est assez énorme,
et ce calcul, il faut le faire à chaque tick,
il faut le faire 30 fois par seconde pour tous les joueurs,
sur le serveur, beaucoup trop cher.
Et encore, ça, c'est Counter.
Nous, dans Soulchars, on a des téléportations, des retours dans le temps et tout,
donc le champ des possibles des positions, il est stratosphérique.
Donc tu ne peux pas le faire.
Par contre, il y a un autre type de jeu, c'est les MOBAs.
League of Legends, Dota 2,
et il y a un truc qui s'appelle le brouillard de guerre.
En fait, tu ne peux pas avoir une partie de la carte.
Tu vois que ce qui est autour de tes alliés
et des tours, mais ce qu'il y a dans le camp ennemis, tu ne le vois pas.
En fait, ce qu'ils font, les gars, c'est, ils ont la séparation,
si tu réfléchis, il y a la zone sombre et la zone éliminée.
Ils prennent une partie de cette zone sombre
qu'ils appellent la zone de transition.
Et quand un ennemi rentre dans cette zone de transition,
là, il le réplique.
Tant qu'il est trop loin, donc il n'est pas proche de la zone visible pour les ennemis,
dans ce cas-là, ils savent qu'il ne sera pas visible dans les N prochaines 10 secondes,
et donc ils ne le répliquent pas.
Ça permet de l'unité des wall-hacks.
Du coup, un wall-hack te permet de voir qu'un peu plus qu'un joueur normal,
mais pas toute la carte.
Pas beaucoup plus.
Ok.
Et donc, c'est exactement ce qu'ils font.
Bravo.
Tu pourrais être déjavelé.
Ça, il y a des zones interdites, mais je pense que c'était avant.
Oui, dans Edge of, le jeu, il a 15 ans.
Exactement.
Il y avait des hacks à cet époque-là.
Moi, sur Edge of Ember, je sais pas pourquoi.
J'ai un souvenir de ces jeux-là où il n'y avait pas de triche.
Peut-être qu'il n'y avait pas le code, mais Edge of,
la plupart des trucs sont gérés côté clients,
ils n'ont même pas le niveau 1 de ce que je vous parlais,
où c'est des serveurs.
Tu peux tricher ce que tu veux sur Edge of.
C'est pour ça que les tourneaux, en général, sont en LAN.
Oui.
Pas que les mecs qui...
En fait, je dis ça, mais j'ai exclusivement joué en LAN sur Edge of.

Très bien.
Bon, ok.
Christian qui amène un vaste sujet, évidemment,
mais est-ce que tu penses que sur des jeux typiquement comme Star Citizen,
ou en fait, t'as des maps qui sont gigantesques,
avec ce qu'ils appellent du server-maching, etc.
À quel point ça rajoute encore un niveau de complexité
sur la gestion du multi ?
Parce que, techniquement, c'est-à-dire que ton architecture,
c'est pas juste plein de clients un serveur,
mais que là, d'un coup, t'as une synchro client-serveur
et même une synchro serveur-serveur
sur ce qui se passe dans ton monde, j'imagine.
C'est une super bonne question.
Après, Star Citizen, il n'est pas compétitif.
Ouais.
Donc s'il y a des triches,
effectivement, le ressenti doit être bon,
parce que les mecs, ils ont des ambitions quand même importantes,
mais s'il y a de la triche, c'est moins grave pour l'instant.
Je ne sais pas.
Après, ils ont quand même des experts réseaux
qui ne sont peut-être pas tant de travail que ça pour eux.
S'agent qu'il n'y a pas tant de...
Star Citizen, il y a du mouvement, il y a du tir.
C'est tout.
Il n'y a pas forcément plein de compétences.
C'est pour ça que je dis Overwatch,
j'ai une proéste technique, parce qu'Overwatch,
tu as plein d'interactions différentes.
Tu as des forces d'attraction, de répulsion.
Il y a plein d'effets particuliers.
C'est ça qui rend difficile.
Beaucoup de manières différentes de modifier l'état du monde
et de la physique.
Il faut resynchroniser tout le temps.
Exactement.
Si tu as juste du tir et du mouvement,
ça reste compliqué.
Le mouvement, c'est le truc le plus dur.
Juste faire en sorte que les personnages puissent bouger dans l'espace
et que ce soit cohérent.
Nous, c'est la moitié de notre blow,
mais ça reste moins compliqué
quand tu as plein de trucs en plus qui affectent.
Après Overwatch, tu te dirais que c'est quoi le genre de jeu
ou le jeu où c'est le plus galère de Gérelle de la Latence ?
Le vôtre.
Les critères, il faut que le jeu soit nerveux.
Un jeu, par exemple, un jeu de stratégie,
un Edge of ou un plus moderne,
enfin, un StarCraft, c'est plus simple,
parce que les choses mettent du temps arrivé,
donc tu as le temps d'anticiper quand tu es le...
Les jeux où tout se passe très vite, c'est vachement dur.
Il y a des gens qui font, je ne sais plus combien d'actions par minute
aussi sur StarCraft.
Oui, bien sûr.
Mais si tu as des incohérences sur le mouvement des dents,
persos dans ton armée, on sent.
Oui, oui.
Alors que sur du FPS, c'est vraiment super critique.
Tu disais, ce n'est pas trop un problème qu'on rencontre en cop,
mais je viens de penser à un exemple où, pour le loot,
si tu es en cop dans, par exemple, un Diablo 2,
et que tout le loot qui tombe par terre,
et que tout le monde clique frénétiquement par terre
pour ramasser tout le loot, je pense qu'il y a des débats.
Sur qui a récupéré les armures légendeurs ou autre comme ça ?
Je pense qu'il y a quand même...
T'as eu des problèmes de duplication aussi, d'ailleurs.
Oui.
Tu as deux clients qui envoient une requête en même temps,
en serveur disant, j'ai eu ce truc-là,
et le serveur fait, bah oui, que ce truc est disponible.
En voilà deux.
Ah, ça peut arriver du coup que tu es...
C'est pas bien codé.
Ouais.
Nice.
C'est un des challenges, d'ailleurs.
Quand tu impléments ton serveur sur un jeu compétitif,
il faut vérifier tout, tout ce que fait le client.
Ah oui, ouais.
Mais il y a des...
Il n'y a pas assez de créativité pour imaginer
tous les trucs absurdes que les gens peuvent essayer de faire.
C'est pour ça que, même dans les gros jeux, t'as encore des triches.
Des gens qui peuvent se téléporter.
Vous avez eu un gars qui est venu avec ça, où il vole,
il fait des trucs de fou, parce que t'as tellement de manière différente
d'envoyer des requêtes un peu foireuses au serveur.
C'est très dur quand même.
Et puis, comme tu disais, il n'y a pas noir ou blanc
pour la détection de triche.
Il va constamment essayer de deviner si jamais...
Si jamais c'est un chaos normal ou un chaos prévu.
Voilà.
Parce que si tu commences à baner les mecs ou ce qui est un ADSL,
les commentaires vont rester très mauvais.
Et justement, sur ton jeu, on va, tu vas revenir bientôt,
nous parler plus en détail, évidemment, de ce jeu,
parce que là, c'était un peu frustrant.
On n'a montré que quelques images pour les gens.
On veut un early access, nous.
Exactement.
Mais on va en parler en détail.
Malheureusement, tu seras un palatiphanie, mais c'est pas vrai.
Tu verras la VOD.
Justement, dans le cas, toi, du jeu que t'as développé
et de toutes les techniques dont tu nous as parlé,
à quel point c'est des choses que tu dois développer toi à la main
ou est-ce qu'il y a un peu des briques toutes faites qui sont disponibles ?
C'est quoi le travail nécessaire ?
On ne parle pas de zéro.
On ne fait pas tout en, évidemment, c'est plus de base.
Mais il y a quand même beaucoup d'implémentation
sur tout ce qui est, justement, au cas barcat.
Comme je vous disais, en fonction de la compétence,
la solution ne va pas être la même.
C'est tout à la main qu'on doit le faire.
C'est Nicolas qui s'en occupe, mon collègue principalement.
C'est lui qui est vraiment expert sur la ture.
Je dirais que la gestion, ce qu'on appelle le netcode,
c'est toute la gestion réseau, c'est 40% de notre tarfe.
C'est hyper intéressant.
On fait un jeu compétitif.
Si on faisait un jeu à la Minecraft, ce serait 5%.
Ok.
Tu ne te dis pas...
Honnêtement, de l'extérieur, tu ne te dis pas vraiment ça.
Tout ce que tu vois, c'est les textures, les niveaux,
le gameplay, mais juste la synchro.
Il ne faut pas que tu le vois.
La moitié de tes ressources qui partent là-dedans, c'est dingue.
Cela dit, après cette discussion-là, je pense que je serais moins rageuse
sur un coontheur, un truc, un ça, parce que je me dirais...
C'est le lag.
C'est juste la physique.
Ouais, je me dirais... Je ne serais plus chill là-dessus.
En fait, c'est vrai que la conclusion, ça est...
Il n'existe, dans tous les cas, pas de solution parfaite.
Donc tous les jeux font un peu comme ils peuvent.
Peut-être certains sont meilleurs que d'autres à le maquiller.
Mais voilà, ne rageons pas contre l'impossible, finalement.
C'est ce que tu disais.
Je reviens à ta question de départ au tout début, qui était pourquoi les jeux,
il faut 300 devs en 4 ans, alors que Minecraft, c'est fait par une personne.
Parce qu'en fait, entre une compétence simple et une version compétitive,
c'est 100 fois plus de boulot côté réseau.
C'est pour ça qu'aujourd'hui, il n'y a pas de jeu multi-joueur compétitif
fait par une petite équipe.
On aimerait bien être les premiers, mais ça n'existe pas aujourd'hui,
parce qu'il y a des gros enjeux.
Mais vous êtes un peu les premiers.
Oui, mais on n'a pas de succès pour l'instant.
En vrai, je suis en trackmania déjà.
Nadéo, ils sont 40 en 30, non ?
Mais c'est ça que tu veux appeler le grand équipe.
Ils sont, ils appartiennent à Ubisoft, Nadéo, maintenant.
Non, c'est vrai.
Mais ce que j'ai à dire, c'est que des shootmania ou des trucs comme ça,
tu le mets dans la catégorie compétitive nerveux.
Oui, mais ils ne sont pas deux les mecs.
Trackmania...
C'était juste pour voir un peu l'ordre de grandeur.
Quand on est moins de cinq, en fait, ça va être ok.
Alors que les jeux, même co-op, à une ou deux personnes, il y a plein.
Et vous gérer combien de personnes en même temps,
sur une même session de jeu ?
Jusqu'à présent, on était à six.
Et on essayait de monter à 48.
La transition est énorme.
48 ? Mais est-ce que la complexité n'est pas exponentielle, voire plus,
au fur et à mesure que tu rajoutes des gens,
parce que les interactions se démultiplient ?
Tout à fait.
Ça dépend de à quel point les joueurs sont au même endroit au même moment.
Si tu as une très grande carte et que tu as 16 équipes de trois, 48,
ça va, parce que tu as des systèmes de streaming
qui font que tu ne répliques pas les trucs qui sont moins.
Par contre, quand tu as beaucoup de gens au même endroit,
c'est là que tu dois faire les trucs les plus précis.
Dans Fortnite, par exemple,
il y a une zone qui s'appelle Tata Wars, où c'est une grande ville,
et tout le monde veut aller là.
Chaque fois, ça l'agaisse, c'est horrible.
Parce que tu as 50 gusses au même endroit en train de louter des choses,
il faut tout répliquer et le serveur est en train de mourir.
Donc, il y a un challenge là-dessus.
C'est pour ça qu'on va rappeler.
48, c'est un beau challenge, là, c'est sûr.
Oui, ça veut dire que même si Fortnite a des énormes lags et galère à 50 personnes,
à peu près au même endroit,
il n'existe pas de solution au miracle.
Il n'y a pas de solution au miracle.
Si on a 48 joueurs au même endroit, ça va l'aguer horrible.
C'est de se déroiller pour adapter le gameplay aussi,
pour que les joueurs se rencontrent une équipe par une équipe,
ou un trois équipes.
Tu peux faire en faisant même l'architecture de ta carte.
C'est une carte qui est très interconnectée.
Tu sais où tu fais apparaître les joueurs.
Naturellement, ils vont se rencontrer un peu comme un arbre.
Tu aurais une finale, une demi-finale, une trocarde finale.
Alors que la map est complètement ouverte au début, tu es dans un bus.
Donc, s'il est sans joueur, il décide d'aller au même endroit.
Et bah, tant pis pour toi.
C'est trop intéressant comment le game design peut derrière
de mettre ta technique, ta relation...
Je ne suis pas allé des problèmes.
...en PRS.
Il était tout le temps limité par ça.
On ne se rend pas compte, mais les jeux aujourd'hui,
ils pourraient être cinématographiques, avoir des graphismes comme Avengers,
des gameplay de fou, et tu as toujours une imitation technique.
Qui fait que c'est pas possible, parce que X, Y, Z.
Les environnements, par exemple, on en parlera plus en détail semaine prochaine,
mais on se dit souvent qu'un environnement, c'est beau,
parce qu'il y a des super textures, des super matériaux, et tout.
En fait, non, un environnement de jeu, c'est beau, s'il y a une bonne lumière.
Il n'y a que la lumière qui compte.
T'as des jeux, t'as Valheim, par exemple.
Valheim, les textures sont ignobles, mais la lumière est exceptionnelle,
et du coup, le jeu, il est magnifique.
Alors que t'as des jeux, pareil, la lumière n'est pas très travaillée,
mais ils ont des assets de hyper haute qualité, et bah, c'est pas top.
Mais pourquoi tout le monde ne fait pas de la super lumière,
parce que c'est super cher ?
Tu fais du raytracing, ou autre, c'est plein, plein, plein de calculs.
C'est gourmand en chien.
C'est hyper gourmand.
Mais est-ce que c'est pour ça que les gros jeux multi, au final,
souvent, ils ont des graphismes assez simplifiés ?
Hum hum.
Et inversement, du coup, quand t'es en solo, bah, tu peux avoir des très beaux,
des très beaux environnements.
Est-ce que, en fait, ça ferait complètement exploser les serveurs,
d'avoir des graphismes avec une lumière très, enfin, ouais, super réaliste, ultra réaliste,
et en même temps, d'avoir plein joueur au même endroit.
Est-ce que c'est ça qui fait que c'est pas possible de rassembler les deux ?
Le graphisme pur, il va être géré côté client.
Donc le fait que t'es plein de joueurs...
La lumière aussi ?
Ouais, la lumière, c'est déjà côté client.
Parce que c'est...
Y a pas, comment dire...
Alors ça dépend...
Des calculs RTX, là, sur le serveur, il...
Tu pourrais imaginer un jeu où la lumière a un impact sur le gameplay.
Je dirais, tu as des zones d'ombre, il faut pas que tu puisses voir.
Là, ça serait géré côté serveur, mais la plupart des jeux,
si tu changes ta luminosité, on s'en fiche.
Vous ramènes, tu peux désactiver dans les paramètres.
Je peux pas être activé, exactement.
Si t'es un...
Donc c'est géré côté client.
Donc le fait que t'es plein de joueurs, c'est pas forcément une gène.
En général, les jeux limitent les graphismes quand ils sont multi-joueurs,
parce que multi-joueurs, typiquement compétitifs,
tu veux atteindre des taux de images par seconde élevés,
sur un jeu solo,
un jeu solo, tu as 40 fps, tu es content.
Un jeu nerveux, tu as 40 fps, tu peux pas jouer.
Ouais, ok.
Dernière question, parce qu'après, il faut qu'on enchaîne,
mais je suis même pas sûr de l'avoir totalement compris.
Le chat mentionne notamment le fait qu'il existe des jeux qui soient déterministes ou pas.
Je sais pas si tu...
Moi je pense qu'ils devraient préciser leurs questions.
Le terme ne me dit rien, ouais.
Non, c'était qu'en gros, comme quoi, des jeux comme enquête League ou Trackmania seraient déterministes,
et du coup ça pourrait, ça changerait des choses au niveau du multi-joueur.
Moi, j'ai pas vraiment compris le sens honnêtement de la question.
Donc si le chat vous voulez vous faire une précision.
Préciser la question.
Je regarderai après si mais le terme ne me dit rien en soi.
Déternier, ça voudrait dire que à partir d'un état donné, t'es capable de...
En gros, ça fait deux fois qu'on le mentionne, qu'il s'est mentionné, que ce soit en requête League ou Trackmania,
sur justement la gestion des collisions, etc. et des calculs et qu'est-ce que ça implique.
Et ça fait deux fois que ça revient le terme déterministe,
et du coup on n'a pas compris, mais ça avait l'air intéressant.
Et on se supposait que peut-être comme les voitures avaient une inertie,
tu sais, tu peux prédire, en fait, disais que c'était très...
Toutes ces faits en prédiction.
Et on s'est supposé que peut-être, voilà, avec l'inertie de la voiture,
tu peux prédire très facilement où elle va aller,
et même s'il y a un input du joueur, le temps qui soit répercuté...
Oui, il n'y a pas de RNG.
Oui, enfin, de ce que j'ai compris, effectivement, en fait, ce qui dit, c'est que...
Depuis que tu connais la trajectoire des voitures,
le serveur peut anticiper les positions de tes clients dans le futur.
Et ça, c'est un truc, nous, on le fait.
Ou justement pour que...
Tu sais, quand tu fais des corrections, on disait,
si ton client n'est pas au bon endroit, le serveur, il va venir corriger.
Un des moyens de rendre ça plus doux et moins violent,
c'est que le serveur essaie d'anticiper les positions possibles des clients.
Et comme ça, il sait, oh, je sais que mon client, il va être mal placé dans le futur.
Donc, au lieu de le corriger d'un coup sur une frame,
je vais faire une interpolation douce.
Et le fait que t'aies une trajectoire qui soit prévisible,
rend ça 1000 fois plus simple.
Je ne sais pas si c'est ça qui était évocé.
En gros, la définition d'un jouet de détermination,
c'est si tu rejoues les mêmes inputs,
tu obtiens exactement la même run, le même résultat.
Donc, typiquement, dans Rocket League, tu n'as aucune partie aléatoire.
Contrairement, j'imagine, par exemple, un FIFA, tu vois,
où tu vas rejouer les mêmes inputs,
tu as une partie d'aléatoire dans le jeu,
parce que la manière dont on interagisse les joueurs,
tu as peut-être des IA, des endroits, des dégâts aléatoires, des choses comme ça.
Et donc, j'imagine, ça peut avoir des incidents
sur à quel point tu peux prédire le futur,
ou chérer des collisions.
Bref, merci énormément.
On a bien divagué, mais c'était trop, trop intéressant, franchement.
Vraiment, j'ai appris plein de trucs.
C'est trop cool.
Comme tu dis, on va m'en rager maintenant.
Et on te revoit très bientôt.
On te revoit la semaine prochaine.
À bientôt.
Pour reparler de ton jeu en plus en détail.

Les infos glanées

Je suis une fonctionnalité encore en dévelopement

Signaler une erreur

Underscore_

IA, Hacking, Robotique — Des conversations de terrain avec ceux qui construisent. 🥨


Partenariats: underscore@micorp.fr


---


Hébergé par Acast. Visitez acast.com/privacy pour plus d'informations.

Tags
Card title

Lien du podcast

[{'term': 'IA', 'label': None, 'scheme': 'http://www.itunes.com/'}, {'term': 'Investissement', 'label': None, 'scheme': 'http://www.itunes.com/'}, {'term': 'Nouvelles Technologies', 'label': None, 'scheme': 'http://www.itunes.com/'}, {'term': 'Tech', 'label': None, 'scheme': 'http://www.itunes.com/'}, {'term': 'Actu tech', 'label': None, 'scheme': 'http://www.itunes.com/'}, {'term': 'Cybersécurité', 'label': None, 'scheme': 'http://www.itunes.com/'}, {'term': 'Développement', 'label': None, 'scheme': 'http://www.itunes.com/'}, {'term': 'Dev', 'label': None, 'scheme': 'http://www.itunes.com/'}, {'term': 'Entreprenariat tech', 'label': None, 'scheme': 'http://www.itunes.com/'}, {'term': 'IT', 'label': None, 'scheme': 'http://www.itunes.com/'}, {'term': 'Robotique', 'label': None, 'scheme': 'http://www.itunes.com/'}, {'term': 'Technology', 'label': None, 'scheme': 'http://www.itunes.com/'}]

Go somewhere