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

L'eau de GTA est une illusion

Dans la vidéo, vous aviez 60 secondes. Ici, on ouvre le moteur en entier : six preuves que la mer, les lacs et les rivières de Los Santos ne sont pas ce qu'ils ont l'air d'être. Chaque démo se manipule.

Vidéo d'origine : 434 K vues sur YouTube Lecture : 8 min Sources : doc des natives FiveM + NativeDB + wiki RAGE MP
Preuve 1 / 6

L'océan est fait de rectangles

Vu d'un bateau, la mer semble continue. Pour le moteur, c'est un puzzle de rectangles posés côte à côte : les « water quads ». Les grands carreaux couvrent le large, et les petits épousent la côte. Là où le rivage part en biais, le moteur n'a qu'une autre forme en stock : le triangle rectangle, en quatre orientations.

Chaque carreau porte aussi sa propre hauteur d'eau. C'est comme ça qu'un lac en altitude et la mer cohabitent dans le même fichier.

Dans les ports, Rockstar a ajouté à la main des rectangles de calme, chacun avec sa force d'amortissement. Peu importe la tempête au large, l'eau y reste plate pour que les bateaux amarrés ne dansent pas. Une mission peut même en ajouter à la volée, huit au maximum.

La preuvenatives FiveM
GET_WATER_QUAD_COUNT()        // nombre de carreaux
GET_WATER_QUAD_BOUNDS(id, …)  // leurs coins
GET_WATER_QUAD_TYPE(id, …)    // 0 carré, 1 à 4 triangles
GET_WATER_QUAD_LEVEL(id, …)   // sa hauteur (« z » de water.xml)
SET_CALMING_QUAD_BOUNDS(id, …) // zones de calme
// côté jeu : ADD_EXTRA_CALMING_QUAD, 8 au maximum
—
Survolez un rectangle pour lire ses dimensions.
Preuve 2 / 6

Les vagues n'existent qu'autour de vous

Le jeu a un réglage pour la force des vagues au large. À 1, c'est la mer normale. À partir de 2, ce sont des vagues de tempête. Mais ce réglage ne s'applique que dans un rayon d'environ 200 mètres autour du joueur : au-delà, il n'a plus d'effet.

Vous ne le voyez jamais, parce que la zone vous suit partout. Déplacez le bateau dans la démo : la tempête part avec lui.

La preuvenative GTA V
SET_DEEP_OCEAN_SCALER(intensité)
// force des vagues au large
// 2.0 et plus : vagues de tempête
// n'agit qu'à ≈ 200 m autour du joueur
RESET_DEEP_OCEAN_SCALER()  // retour à 1.0
×1.00
Glissez le bateau sur la mer.
Preuve 3 / 6

La mer a un bouton de réglage

Le temps qu'il fait sur l'eau n'est pas seulement de la météo. Une fonction permet de forcer l'état de la mer, et son échelle est déroutante : 0 ne veut pas dire calme, mais « normal ». C'est à 1 que l'eau devient si calme qu'un bateau reste immobile et que la mer reflète la ville comme un miroir. À 3, elle devient très agitée.

Ce n'est qu'un bouton parmi d'autres : quatorze fonctions WATER_OVERRIDE règlent séparément les vagues du large, celles du rivage et les petites rides de la surface.

La preuvenative GTA V
WATER_OVERRIDE_SET_STRENGTH(force)
// 0.0 : normal
// 1.0 : calme plat, un bateau reste immobile
// 3.0 : très agitée
WATER_OVERRIDE_SET_SHOREWAVEAMPLITUDE(…)
WATER_OVERRIDE_SET_RIPPLEBUMPINESS(…)
Valeurs relevées par la communauté (doc FiveM)
0.00
Preuve 4 / 6

Les rivières n'ont pas de hauteur

Le jeu sait à quelle hauteur se trouve la mer et la surface des lacs. Mais posez-lui la question au-dessus d'une rivière peu profonde, et il répond une valeur absurde : moins 100 000.

Pour le moteur, ces rivières ne sont pas de la vraie eau. Ce sont des surfaces dessinées pour l'œil. La documentation de la fonction cite elle-même l'exemple de Raton Canyon.

À l'inverse, la hauteur de la vraie eau n'est pas gravée dans le marbre : une fonction la change autour d'un point, dans le rayon de votre choix.

La preuvenative GTA V
GET_WATER_HEIGHT(x, y, z, &hauteur)
// mer, lac : une vraie hauteur
// rivière peu profonde (Raton Canyon) : -100000
MODIFY_WATER(x, y, rayon, hauteur)
// change la hauteur de l'eau autour d'un point
Cliquez sur l'eau pour lancer la sonde GET_WATER_HEIGHT → —
Preuve 5 / 6

Cayo Perico remplace l'océan

GTA Online contient deux fichiers d'eau : celui de Los Santos et celui de l'île de Cayo Perico. Quand vous partez sur l'île, le jeu décharge le premier et charge le second.

Et l'île elle-même n'existe pas tant que vous n'y allez pas. Elle se charge par sa propre fonction, en pleine mer au sud-est de la carte, vers x 4840 et y -5174. Depuis Los Santos, il n'y a que de l'eau à sa place.

Même son GPS est un module à part : tant que les routes de l'île ne sont pas chargées, la navigation n'y fonctionne pas.

La preuvenatives GTA V + FiveM
LOAD_GLOBAL_WATER_FILE(0 | 1)  // 0 Los Santos, 1 l'île
// (nommée _LOAD_GLOBAL_WATER_TYPE sur docs.fivem.net)
SET_ISLAND_ENABLED("HeistIsland", true)
SET_ALLOW_STREAM_HEIST_ISLAND_NODES(1) // routes et GPS de l'île
// (_SET_AI_GLOBAL_PATH_NODES_TYPE sur docs.fivem.net)
SetWaterAreaClipRect(…)  // FiveM : borne water.xml
//   et water_heistisland.xml
île : non chargée
Preuve 6 / 6

Les reflets se coupent à la carte

Le reflet de votre voiture dans le lac n'est pas une conséquence de la lumière. Chaque objet du jeu porte un drapeau : « apparaît dans les reflets de l'eau », oui ou non. Retirez-le, et la voiture n'a plus de reflet.

Un drapeau du même genre existe pour les miroirs. Le moteur choisit qui a le droit d'être reflété.

La preuvenatives GTA V
SET_ENTITY_WATER_REFLECTION_FLAG(entité, false)
SET_ENTITY_MIRROR_REFLECTION_FLAG(entité, false)
// 0xC34BC448DA29F5E9 et 0xE66377CDDADA4810 :
// noms de NativeDB, sans nom sur docs.fivem.net
WATER_REFLECTION_FLAG = true
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

Ce que vous voyez au loin n'est pas réel

Chaque immeuble existe en plusieurs versions, et le jeu les échange sous vos yeux.