Inside·Rockstar Preuve 0
Dossier complet · série « Le moteur vous ment »

En mission, la circulation est un film

Pendant une mission de GTA V, les voitures autour de vous ne sont pas toutes conduites par l'IA. Beaucoup rejouent un trajet enregistré à l'avance, image par image, comme une vidéo. Ces enregistrements portent un nom : les YVR. Cinq preuves, de la rue en 3D jusqu'au tournage des bandes-annonces.

Lecture : 9 min Sources : code de CodeWalker + doc des natives FiveM + NativeDB + vue debug de Rockstar
Preuve 1 / 5

En mission, toute la rue est un enregistrement

Quand une course-poursuite démarre, Rockstar ne laisse pas la circulation au hasard. Un développeur a déjà joué la scène. Pendant qu'il roulait, le jeu a enregistré chaque voiture autour de lui : sa position, sa vitesse, son volant. En mission, le jeu rejoue tout ça.

La vue debug de Rockstar trie ces voitures par couleur. En vert, la circulation enregistrée. En rouge, les séquences spectaculaires : un développeur a refait le trajet en conduisant exprès de façon plus folle, pour que la scène soit plus excitante. En bleu, les voitures garées, elles aussi placées par l'enregistrement.

Il reste une couleur : le magenta. C'est une voiture que vous avez percutée. Elle sort de son rail, et l'IA reprend le volant. Dans la démo, touchez une voiture pour voir ce moment.

Le mot « UBER » de la vue debug se retrouve jusque dans les noms de fichiers : l'exemple de la documentation est fbis1uber001.yvr, l'enregistrement n° 1 de la série « FBIs1UBER ».

La preuvevue debug de Rockstar
(UBER) TR 90    // circulation enregistrée, n° 90
(UBER) SP 503   // séquence d'un développeur, n° 503
voitures garées // positions enregistrées aussi
hors rails      // l'IA a repris le volant
// fichier : fbis1uber001.yvr (exemple de la doc)
Vue debug d'origine Rockstar
Vue moteur
…
circulation enregistréeséquence d'un développeurvoiture garéehors rails : l'IA conduit
Touchez une voiture pour la percuter, glissez pour tourner la caméra. TR et SP sont les étiquettes de la vue debug de Rockstar ; PK est notre abréviation pour les voitures garées.
Preuve 2 / 5

Ce qu'il y a dans un fichier YVR

Un YVR est une longue liste de lignes. Plusieurs fois par seconde, le jeu a noté l'état de la voiture : l'heure de la ligne, sa position, sa vitesse, son orientation, l'angle du volant, l'accélérateur, le frein et le frein à main. Chaque ligne tient en 32 octets.

Pour rejouer, le jeu lit la liste et place la voiture entre deux lignes. Le fichier ne dit pas quelle voiture conduisait : n'importe quel véhicule peut le rejouer, même un bus.

Le format a ses petites économies. L'accélérateur va de -100 à +100 : en dessous de zéro, c'est la marche arrière. Et la vitesse est stockée sur si peu de place qu'elle plafonne vers 120 mètres par seconde, environ 430 km/h. Le jeu ne charge pas plus de 24 enregistrements à la fois. Et d'après le code de CodeWalker, chaque ligne a la même forme que dans les enregistrements de GTA IV, les fichiers .rrr.

  • Timele moment de la ligne, en millisecondes
  • Position · Velocityoù est la voiture, et à quelle vitesse elle va
  • Right · Forwarddeux flèches qui donnent son orientation : la droite et l'avant de la voiture
  • Steering · Gas · Brakele volant et les pédales, comme le développeur les tenait ; l'accélérateur négatif, c'est la marche arrière
  • Handbrakele frein à main, tiré ou non
La preuvenatives GTA V
REQUEST_VEHICLE_RECORDING(numéro, "nom")
// charge "nom" + numéro sur 3 chiffres + ".yvr"
// (1, "FBIs1UBER") → fbis1uber001.yvr · 24 au maximum
HAS_VEHICLE_RECORDING_BEEN_LOADED(numéro, "nom")
START_PLAYBACK_RECORDED_VEHICLE(véhicule, numéro, "nom", true)
// 4e paramètre : lié aux remorques
GET_TIME_POSITION_IN_RECORDING(véhicule)
GET_TOTAL_DURATION_OF_VEHICLE_RECORDING(numéro, "nom")
Format vérifié dans le code de CodeWalker
…
Faites glisser le temps pour avancer ligne par ligne.
Preuve 3 / 5

La première mission : Lamar ne conduit pas, il rejoue

Dans « Franklin et Lamar », vous faites la course jusqu'à la concession de Simeon. Lamar a l'air de piloter. En réalité, sa voiture rejoue un enregistrement.

Le script de la mission regarde l'écart entre vous et lui, et il règle la vitesse de lecture. Vous êtes loin derrière : Lamar ralentit et vous attend. Vous passez devant : il accélère pour revenir. La course reste serrée, quoi que vous fassiez.

Et la circulation suit la même horloge. Les voitures qui traversent la route sont elles aussi des enregistrements, calés sur l'avancée de Lamar. Quand il ralentit, toute la rue ralentit avec lui. C'est pour ça qu'une voiture vous coupe toujours la route au même moment.

La preuvenatives GTA V
START_PLAYBACK_RECORDED_VEHICLE(lamar, numéro, "nom", true)
SET_PLAYBACK_SPEED(lamar, vitesse)   // à chaque image
// vous êtes devant  : vitesse > 1
// vous êtes derrière : vitesse < 1
…
Maintenez le bouton, la touche flèche haut ou appuyez dans la carte pour rouler. Essayez de distancer Lamar, puis de rester derrière lui.
Preuve 4 / 5

Pourquoi des rails plutôt que l'IA

Une voiture conduite par l'IA décide de tout à chaque image : sa trajectoire, son freinage, sa réaction aux autres. Elle ne refait jamais deux fois la même chose. Pour une mission, c'est un problème.

Un enregistrement, lui, rejoue la scène au millimètre à chaque essai. Il permet un spectacle qu'aucune IA ne fait seule, comme une glissade parfaite devant votre capot. Il coûte moins de calcul, puisque la voiture n'a rien à décider. Et tout arrive au bon moment.

Le prix à payer : un enregistrement ne sait pas réagir. Si vous percutez la voiture, le jeu la sort du rail et donne le volant à l'IA. Il peut même lui demander de revenir sur son trajet un peu plus tard, au bout d'un délai réglé à la milliseconde.

Le passage inverse, de l'IA vers le rail en douceur, existe aussi. D'après la documentation, une seule mission s'en sert : le braquage de la bijouterie.

Et ce n'est pas le seul système de rails. Les « waypoint recordings » guident des piétons et des véhicules le long de chemins enregistrés, 32 au maximum en mémoire.

La preuvenatives GTA V
SET_PLAYBACK_TO_USE_AI(véhicule, styleDeConduite)
SET_PLAYBACK_TO_USE_AI_TRY_TO_REVERT_BACK_LATER(
  véhicule, durée, styleDeConduite, false)
IS_PLAYBACK_GOING_ON_FOR_VEHICLE(véhicule)
// durée en ms avant le retour sur le rail, 0 = jamais
SET_SHOULD_LERP_FROM_AI_TO_FULL_RECORDING(véhicule, p1)
// utilisée seulement dans jewelry_heist
// (nom de NativeDB, sans nom sur docs.fivem.net)
Coût de calcul de la démo illustratif
Revenir sur le rail
…
Rejouez la scène cinq fois et comparez les traces des deux côtés.
Preuve 5 / 5

Les bandes-annonces sont tournées sur des rails aussi

Pour filmer une course-poursuite de bande-annonce, il faut plusieurs prises. Avec des voitures conduites à la main, aucune prise ne ressemble à la précédente. Avec des enregistrements, la scène se rejoue à l'identique, encore et encore.

Seule la caméra bouge d'une prise à l'autre. L'équipe peut chercher le meilleur angle, ralentir le moment d'une glissade, revenir trois secondes en arrière. Les voitures, elles, repassent toujours au même endroit.

Sur FiveM, les mêmes natives existent. Elles rejouent les enregistrements du jeu sur n'importe quelle voiture : c'est comme ça que nous tournons ces plans.

La preuvenatives GTA V
SKIP_TIME_IN_PLAYBACK_RECORDED_VEHICLE(véhicule, ms)
SET_PLAYBACK_SPEED(véhicule, 0.25)   // ralenti
PAUSE_PLAYBACK_RECORDED_VEHICLE(véhicule)
UNPAUSE_PLAYBACK_RECORDED_VEHICLE(véhicule)
Usage pour les bandes-annonces à confirmer
…
Glissez la caméra sur le plateau, puis lancez une nouvelle prise : les voitures repassent exactement au même endroit.
Avant-première

Le prochain dossier est déjà sur le Discord

Les membres lisent chaque dossier avant sa publication, avec les fichiers de tournage complets.

Rejoindre le Discord
Dossier suivant

L'eau de GTA est une illusion

La mer, les lacs et les rivières de Los Santos ne sont pas ce qu'ils ont l'air d'être.