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.
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.
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
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.
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
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.
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(…)
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.
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
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.
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
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é.
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
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 DiscordCe que vous voyez au loin n'est pas réel
Chaque immeuble existe en plusieurs versions, et le jeu les échange sous vos yeux.