La latence et l’input lag dans le jeu vidéo

    1

Fri Sep 01 2023

La latence et l’input lag dans le jeu vidéo

Titre : La latence et l’input lag dans le jeu vidéo.

Cet article est la suite de l’article précédemment publié sur La Latence et l'Input Lag sur Arcade en JAMMA

Le précédent article se focalise sur le Recalbox RGB Jamma, celui-ci sera plus général autour du jeu vidéo.

Introduction

On entend régulièrement parler, notamment pour le rétrogaming de problèmes d'input lag et de latence.

Vous l'avez sûrement déjà rencontré un jour en mourant dans un jeu et vous avez rejeté, avec une infinie mauvaise foi, la faute aux développeurs qui ont prétendument codé le jeu avec les pieds.

Chacun le ressentira à sa manière, mais en général ce sont surtout les joueurs les plus exigeants (les professionnels, et les gros joueurs), ou les personnes qui veulent retrouver l'expérience originale, qui y sont les plus sensibles.

Qu'est-ce que la latence et l’input lag

Pour simplifier, la latence correspond tout au temps entre une pression d’un bouton sur votre manette, et son action visible à l’écran, qui peut varier selon plusieurs facteurs.

Pour les jeux du type puzzle game ou RPG tour par tour, elle n’a souvent qu’un impact limité sur l’expérience de jeu.

Cependant, pour des jeux plus rapides et nécessitant de faire travailler vos réflexes comme par exemple les jeux de tir, les jeux de plateforme ou les jeux de combat, il peut avoir un impact plus ou moins important sur l’expérience de jeu.

Par abus de langage, on utilise souvent le terme d’Input lag alors que c’est n’est en réalité qu’une composante de la latence globale.

Lag

La latence, ou lag, se découpe en trois composantes :

L’input lag : Comme son nom l’indique, l’input lag, ou décalage d’entrée en Français, correspond au délai lié à la saisie. C’est le délai entre le moment de votre pression sur un bouton et le moment où le signal arrive jusqu’à la console

Le process lag : Il s’agit du temps que prend le système/la console pour changer l’état du jeu en y appliquant l’événement de la manette.

Le video lag : Le lag d’affichage correspond au temps nécessaire à votre écran pour afficher le signal vidéo fourni par la console.

Cette latence se mesure en général en millisecondes (ms) mais on peut le mesurer en nombre d’images (ou de frames).

Quels sont les éléments qui produisent de la latence ?

La manette

Pad 6 boutons

Le contrôleur (manette, clavier ou souris) que vous utilisez peut déjà à lui seul vous impacter.

Si vous avez une manette “no-name”, premier prix, mal conçue électroniquement, ça ne va pas aider, loin de là, car l’électronique va être générique, peu coûteuse, et pas forcément conçue pour cet usage.

Une bonne manette va avoir une électronique adaptée, pensée pour le jeu et donc réduisant au maximum cet input lag.

Ensuite, toute connexion sans fil va rajouter physiquement de l’input lag, plus ou moins important selon le type de connexion utilisée (2,4GHz ou Bluetooth principalement), et peut ajouter quelques millisecondes de lag.

Sur de vieilles consoles, on peut aussi trouver de l’infra rouge, mais ce n’est plus utilisé aujourd’hui car cela présente pas mal d’inconvénients.

Le matériel sur lequel tourne le jeu

Tate Anbernic

Pour le cas de l’émulation matérielle via FPGA, celle-ci a un gros avantage qui lui permet d’émuler le matériel d’origine au niveau matériel, et donc sans surcouche de conversion vers une architecture tierce, ce qui lui permet d’avoir un process lag équivalent au matériel d’origine.

Concernant l’émulation logicielle, cela va par contre être plus variable, selon la qualité et l’implémentation de l’émulation, la complexité du matériel original, et la puissance de calcul, on peut plus ou moins se rapprocher du matériel original.

.

Il faut garder en tête que la conception du matériel d’origine reste majoritairement de l’information non publique et donc on ne peut que faire de la rétro-ingénierie pour en déduire le comportement et donc l’émulation peut difficilement être parfaite.

L’objectif premier de l’émulation reste tout de même de se rapprocher au maximum du comportement du matériel original.

Les différents boitiers d’adaptation.

Converter

Ce cas là ne va pas concerner tout le monde. Si vous utilisez un boîtier ou un câble par exemple pour pouvoir brancher en HDMI une console d’origine (ce qu’on appelle un "scaler"), ou inversement si vous utilisez du matériel pour convertir un signal numérique en signal analogique, selon sa conception, cela par rajouter du lag vidéo. Un splitter HDMI (pour envoyer le signal vidéo sur différents écrans) peut aussi jouer sur ce lag vidéo.

De la même manière, si vous utilisez un boîtier pour pouvoir brancher vos vieilles manettes d’époque en USB, celui-ci peut rajouter de l’input lag selon sa conception.

Je pense que vous l’aurez compris, tout ce que vous rajoutez entre vous et votre écran, en plus de la console, peut potentiellement ajouter de la latence.

Si vous avez réellement besoin de ce type de boitiers ou câbles, notamment pour les scalers et splitters, je vous conseille d’aller regarder les vidéos de la chaîne youtube Anglophone RetroRGB qui essaie de tester un maximum de ces solutions pour identifier les meilleures.

Les écrans

Screen

L’écran que vous utilisez va aussi avoir un impact.

Au passage, la chaîne youtube RetroRGB citée plus haut a aussi effectué des tests sur ce sujet. Concernant les écrans à tube cathodique en général, ceux-ci ne présentent pas de lag vidéo perceptible. Il y a tout de même une exception concernant les écrans CRT de dernières génération dits HD ou 100/120Hz qui, si on active ces modes de fonctionnement, peuvent ajouter du lag vidéo lors du traitement.

Les écrans modernes eux posent plus souvent souci. Si vous branchez une vieille console directement sur un écran moderne (en péritel, Composite, S-Video ou Component), l’écran fera un traitement pour réadapter le signal, transformer le signal analogique en signal numérique, et l’agrandir à une définition correspondant mieux à la définition de l’écran. Or ce traitement prend du temps, en plus souvent de toucher à la qualité de l’image d’origine. C’est souvent dans ce cas que l’on se dit que nos jeux d’époque étaient moches, mais c’est en réalité en partie la faute à un traitement fait par notre écran (ainsi que le fait que les écrans CRT affichent le signal différemment).

En plus de cela, surtout sur les écrans de TV modernes, il peut y avoir un lag vidéo ajouté par les traitements type “Mode cinéma” (ou autre), qui n’a pas d’impact lorsqu’on regarde un film mais cela a son importance pour du jeu vidéo de manière générale.

Comment y remédier

Pour la manette ça ne va pas être compliqué, tout simplement, choisissez une manette de qualité, ou un contrôleur usb sans latence. Cela vous garantira une bonne qualité de conception et donc une réduction au maximum de l'input lag.

De même sur la manette, privilégiez les connexions filaires au sans fil si vous souhaitez réduire au maximum cet input lag.

Pour l’écran, , si possible, éviter toute conversion faite par votre écran, restez sur le même type de signal sur toute la chaîne. Par exemple, branchez une console analogique (les consoles de votre enfance) sur un écran CRT qui était fait pour, et ne gardez vos écrans plats que pour brancher des appareils fonctionnant en numérique via HDMI (Raspberry pi, PC, consoles récentes, etc.). Sur ces mêmes écrans plats, pensez à activer le mode “Jeux”, souvent présent, qui désactivera tous les traitements ajoutant potentiellement du lag.

L’idéal pour les écrans plats restant les écrans de PC orientés gaming, qui sont conçus pour diminuer au maximum ces temps de traitement (en général entre 1 et 5ms de lag ajouté).

Concernant Recalbox sur Raspberry pi, il peut fonctionner dans les deux modes, en numérique en natif et donc branché sur une écran moderne (les écrans plats) via la prise HDMI, ou en analogique via la prise mini-jack (mais avec une qualité de signal moyenne) ou via le Recalbox RGB Dual, conçu spécifiquement pour cela.

Pi4+RGB Dual

Si vous ne pouvez ou ne souhaitez pas rester sur une chaîne 100% analogique pour vos anciennes consoles, utilisez un scaler fait pour le jeux vidéo, évitez les scalers premier prix, qui sont plus adaptés pour regarder des films mais pas du tout pour le jeu vidéo. De plus, certains d’entre eux ne sont pas compatibles avec les signaux RGB.

Pour ce qui est de l'émulation, la première chose à faire est d’appliquer les dernières mises à jour de l’émulateur, du core ou du système afin de profiter des dernières optimisations et améliorations. Cela se passe tout simplement en mettant à jour votre recalbox**.

Dans Retroarch (dont recalbox hérite d’un certain nombre de cores et fonctionnalités), on retrouve à disposition des options qui permettent de réduire la latence, en profitant de la puissance de calcul de nos ordinateurs, et en calculant certains éléments à l'avance, pour ajuster le délai et compenser le délai pouvant être apporté par les différents éléments de la chaîne.

Comment travaillons nous pour réduire la latence sur Recalbox

Recalbox étant une solution d’émulation logicielle, nous sommes concernés par ces problèmes de latence et faisons tout notre possible pour être au plus près du matériel original.

Mais avant de se lancer dans des développements tête baissée, il nous faut d’abord des données de référence, et nous avons pour cela effectués des mesures

Les méthodes de mesure : l’existant

Plusieurs méthodes existent pour mesurer la latence. Selon les méthodes utilisées, on pourra mesurer les différentes composantes de la latence.

Pour mesurer l’input lag d’une manette, il est possible de faire usage d’un oscilloscope pour mesurer ce décalage précisément. Plus d’explications sur cette méthode sont disponibles à cette adresse. On a utilisé notamment cette méthode pour vérifier nos mesures d'input lag..

Il est possible de calculer la latence d’affichage, en passant par l’usage de la 240p test suite, via son lag test (sur console d’origine ou en émulation), par comparaison visuelle (avec usage d’une caméra), avec deux écrans branchés sur la même source, il est possible de comparer la différence de latence entre les deux écrans. Si cela est fait en prenant comme référence un écran CRT (qui ne présente qu’une latence d’affichage négligeable), il devient alors possible de calculer la latence d’affichage d’un écran en particulier.

D’autres méthodes existent aussi, par exemple pour mesurer le display lag sur un écran avec le Time Sleuth, qui sort un signal en HDMI et permet avec l’aide d’un phototransistor de lire ce signal et de mesurer sur l’écran le retard d’affichage.

Ces méthodes n’étant pas toujours simples d’usage, nécessitant parfois du matériel qui peut être coûteux, ou n’étant pas assez complet, nous avons aussi créé nos propres outils, que nous avons comparé avec les méthodes existantes pour vérifier leur bon fonctionnement.

Les méthodes de mesure : nos développements

Afin de mieux répondre au besoin, nous sommes allés jusqu’à développer nos propres outils pour simplifier ces mesures

En premier, nous avons développé, côté logiciel, un programme permettant de tester l’input lag sur un Raspberry Pi, pouvant être intégré et exécuté sur toute distribution, dont Recalbox.

Il vous suffit d’un Raspberry Pi, d’une manette, d’un peu de soudure pour se connecter directement sur la manette, via le port GPIO du raspberry pi, et le programme fait le reste.

Vous pourrez d’ailleurs trouver le code source et la documentation à cette adresse.

Ci dessous les input lag tools en fonctionnement, avec l'oscilloscope pour comparer :

En second, nous avons développé du matériel : Le Latency Bro. Celui-ci nous permet de faire deux types de mesures: l'input lag, et la latence de bout en bout (de la pression du bouton jusqu’à l’affichage sur l’écran), le tout de manière autonome.

Il se matérialise par une carte que l’on branche sur les boutons de la manette/du stick, avec un port USB (pour la mesure de l’input lag et l'alimentation), et un phototransistor permettant de capter un changement de couleur sur l’écran de tv (lors de la saisie manette). Pour la mesure de latence, on utilise idéalement la 240p test suite qui propose un test passant du noir au blanc lors d’un appui de touche sur la manette.

Le Latency bro nous affiche ensuite directement sur son écran la latence mesurée sur un ou plusieurs essais (avec calcul automatique de la moyenne).

latency bro

Voici un aperçu du latency bro en fonctionnement :

Les résultats

Nous avons effectué des mesures sur différents contrôleurs/manettes, mais aussi comparé du matériel original et de l’émulation sous Recalbox.

Input Lag

Input Lag

Comme vous pouvez le voir sur les mesures prises, le contrôleur utilisé peut vous rajouter presque jusqu’à une image de retard (pour ceux testés), ce qui est très peu en soi mais il faut regarder la chaîne complète jusqu’à l’affichage pour voir l’impact complet sur l’utilisateur.

Latence

Pour la latence, nous avons fait le comparatif sur deux consoles, et leur équivalent en émulation sur Recalbox: la Playstation 1, et la Super NES, en 60Hz sur tous les matériels.

Pour être exhaustif côté émulation, nous avons testé différents cores avec différents paramètres.

La manette Playstation 1 utilisée a été branchée à Recalbox via un adaptateur USB “NoName”.

Côté matériel pour l'émulation, nous avons utilisé un Raspberry Pi 4 avec un Recalbox RGB Dual,ces mesures ont été prises en 2022, nous n’avons pas encore de mesure sur le Raspberry Pi 5. Nous ferons des mesures dans le futur sur cette carte arrivée plus récemment.

Nous remercions au passage @FFVIMan qui a effectué le lag test pour le matériel Super NES.

Lag tests

On peut remarquer à la suite de ces tests, que la latence moyenne, qui nous a servi de référence, pour ces deux consoles sont respectivement de 41 ms pour la PS1 et 30 ms pour la Super NES.

Dans les différents tests qui ont été effectués, vous pourrez voir aussi que l’on a travaillé à trouver les paramètres permettant d’optimiser au mieux l’émulation afin de se rapprocher de la référence pour chaque console. La qualité de l’émulation évoluant avec le temps, ces réglages sont amenés à évoluer afin de les optimiser.

Pour vous simplifier la tâche et vous permettre de retrouver l’expérience du matériel original, toujours dans l’idée d’une expérience plug-and-play, nous avons pré-configuré cela sous forme d’une option à activer, présente dans les menu dédiés au Recalbox RGB Dual, sous le libellé “Reduce Latency”.

Ces options ne seront d’ailleurs plus limitées aux utilisateurs du *RGB Dual/JAMMA à partir de la version 10 de recalbox et vous pourrez les activer facilement y compris en HDMI.

Conclusion

L’émulation est souvent accusée d’être la source de la latence. Cependant, avec une configuration adaptée, cette latence ajoutée par l'émulateur devient imperceptible. Si vous ajoutez à cela des contrôleurs low latency et une TV/Moniteur adapté, Recalbox vous offre une solution qui se rapproche au plus de l'expérience originale. Et de nouvelles options encore plus efficaces arriveront en version 10 !

J’espère en tout cas que cet article vous a éclairé sur ce qu’est la latence.

latency
input lag
recalbox
emulation
consoles
User
by kid