Sous la carte, il y a une autre ville
Quand vous entrez dans votre bunker ou votre labo de motard, vous croyez descendre sous le bâtiment. En réalité, le jeu vous téléporte dans une boîte rangée ailleurs, parfois des dizaines de mètres sous le port. Cinq preuves, et une coupe 3D de ce qu'il y a sous Los Santos.
Les intérieurs flottent sous le port
Les entreprises de motards, l'entrepôt et le bunker de GTA Online n'existent pas derrière leur porte d'entrée. Leurs intérieurs sont regroupés au même endroit, sous les docks du port de Los Santos, entre 37 et 98 mètres sous le niveau de la mer.
La porte que vous ouvrez en ville n'est qu'un déclencheur : écran noir, téléportation, et vous voilà sous la mer. Le jeu ne charge la boîte qu'au moment où vous en avez besoin.
Le port n'est pas le seul sous-sol. La boîte de nuit, le hangar et le Terrorbyte sont rangés sous l'aéroport, entre 49 et 80 mètres de profondeur. Les petits garages, l'appartement bas de gamme et le motel sont à 99 mètres sous le centre-ville. Et même l'intérieur du casino est rangé 50 mètres sous terre.
GET_INTERIOR_AT_COORDS(x, y, z) // 0 si dehors PIN_INTERIOR_IN_MEMORY(intérieur) // chargement IS_INTERIOR_READY(intérieur) // bunker 899.6, -3246.0, -98.0 // labo de meth 1009.5, -3196.6, -39.0 // boîte de nuit -1604.7, -3012.6, -78.0 // casino 1100.0, 220.0, -50.0
| Intérieur | x | y | z |
|---|
Les tunnels sont des intérieurs
Pour le moteur, le métro, les égouts, les tunnels ferroviaires et les parkings souterrains ne font pas partie de la ville. Ce sont des « intérieurs », exactement comme une maison ou un magasin.
C'est pour ça que la lumière, le son et la météo changent d'un coup quand vous entrez dans un tunnel : vous venez de changer de monde.
Le moteur les range même par familles. Une maison est dans le groupe 0. Le métro et les égouts partagent le groupe 1. Chaque grand tunnel a son numéro, de celui sous Mirror Park à celui sous Fort Zancudo, et les parkings de Rockford Plaza, de l'Arcadius, de l'Union Depository et du FIB ont aussi le leur.
GET_INTERIOR_GROUP_ID(intérieur) // 0 intérieur ordinaire // 1 métro, voies du métro, égouts // 3 tunnel ferroviaire sous Mirror Park // 5 tunnel près de Del Perro // 12 tunnel sous Fort Zancudo // 18 à 21 parkings : Rockford Plaza, Arcadius, // Union Depository, FIB
Des boîtes reliées par des portails
Pour le moteur, un intérieur n'a pas de murs au sens où vous l'entendez. C'est une liste de pièces, chacune une boîte fermée, et une liste de « portails » : de simples rectangles invisibles posés dans chaque porte, chaque arche et chaque fenêtre.
Chaque portail relie deux pièces. La pièce numéro 0 a un nom à part, « limbo » : c'est tout ce qui n'est pas l'intérieur, donc la ville dehors. Une porte d'entrée ou une fenêtre est un portail vers limbo.
Ce découpage sert à une seule chose : ne dessiner que ce que vous pouvez voir. Dans la démo, déplacez le personnage, tournez son regard et regardez le champ de vision se rétrécir à chaque porte.
Comment le moteur choisit ce qu'il dessine
- Il cherche la pièce de la caméra. Pas celle du personnage : celle de la caméra. Toute la suite part de là.
- Il dessine cette pièce, mais seulement ce qui tombe dans le champ de vision.
- Il regarde les portails de la pièce. Pour chaque portail visible, il rétrécit le champ de vision à la taille exacte de ce rectangle.
- Il recommence dans la pièce suivante avec ce champ rétréci. À chaque porte, le cône devient plus étroit, et il finit par ne plus rien laisser passer.
- S'il tombe sur un portail vers limbo, il dessine la ville, mais uniquement dans la petite part de champ qui passe par la fenêtre ou la porte.
Tout ce qui n'a jamais été atteint par ce cône n'est pas dessiné du tout. Une maison de six pièces peut n'en afficher que deux.
La lumière
Chaque pièce a son propre réglage d'ambiance (le « timecycle »). Passez une porte, et l'éclairage change d'un coup : vous venez de changer de pièce pour le moteur.
Le son
Le jeu se sert aussi des portails pour savoir comment le son voyage d'une pièce à l'autre. Une porte ouverte laisse passer le bruit, un mur plein l'étouffe.
La ville
Depuis l'intérieur, la ville n'existe qu'à travers les portails vers limbo. Pas de fenêtre dans le champ de vision, pas de ville dessinée.
Ce que ça explique en jeu
- La caméra qui traverse un mur. Elle n'est plus dans la bonne pièce, alors le calcul repart de travers : des pièces entières disparaissent d'un coup, ou l'extérieur s'efface.
- Les intérieurs vus de dehors. En regardant par une fenêtre, vous ne voyez que la part de la pièce qui passe par ce portail. Le reste de la maison n'est même pas chargé à l'écran.
- Les grands intérieurs fluides. Un centre commercial ou un bunker reste rapide, parce que chaque mur coupe le travail du moteur.
- Les téléportations. Arriver dans une pièce sans avoir franchi de portail, c'est arriver nulle part pour le moteur. Les scripts doivent lui dire de force dans quelle pièce vous êtes.
// archétype d'intérieur, tel que l'affichent les outils de la communauté rooms 0 limbo · 1 entrée · 2 salon · … // chaque pièce : son timecycle portals roomFrom → roomTo · 4 coins · flags GetInteriorRoomName(intérieur, 0) // "limbo" GetInteriorPortalCount(intérieur) GetInteriorPortalRoomFrom(intérieur, portail) GetInteriorPortalRoomTo(intérieur, portail) GetInteriorPortalCornerPosition(intérieur, portail, coin) FORCE_ROOM_FOR_ENTITY(entité, intérieur, pièce) // charge la pièce quand on y arrive sans passer de portail
Les murs peuvent disparaître
On peut décrocher un intérieur du moteur. Les murs, le sol et les meubles disparaissent, mais les gens qui vivent dedans continuent leur journée, comme suspendus dans le vide. Le sol, lui, est seulement invisible : il reste solide, et personne ne tombe.
La preuve que les personnages et le décor sont deux choses séparées : l'un peut exister sans l'autre.
Il existe une version plus brutale. Désactivez carrément l'intérieur, et le sol disparaît pour de bon : la documentation prend l'exemple du strip-club, où le joueur traverse le plancher et tombe.
UNPIN_INTERIOR(intérieur) // tout devient invisible, le sol tient, // les passants se comportent normalement DISABLE_INTERIOR(intérieur, true) // l'intérieur disparaît, le joueur tombe
Un même lieu en deux versions
La caravane de Trevor existe en version « sale » et en version « rangée ». Ce ne sont pas des objets déplacés : ce sont deux calques de carte complets, qu'on charge et décharge comme on change de diapositive.
D'autres lieux de l'histoire fonctionnent pareil. La ferme O'Neil existe intacte et brûlée, le pont ferroviaire avec et sans le train déraillé, le cargo du port à flot, coulé ou en flammes. Le jeu échange ces morceaux de carte entiers selon votre avancée.
Le plus gros calque, c'est North Yankton, la ville enneigée du prologue. Elle est rangée dans le même jeu, en pleine mer au sud-est de la carte, et ne s'affiche que quand le jeu la charge.
À l'intérieur des bâtiments, le même principe existe en plus petit : les « entity sets », des morceaux de décor qu'on allume dans une pièce. Le butin du coffre de Cayo Perico en est un : tequila, collier de perles, obligations, diamant rose ou panthère, selon le braquage.
REQUEST_IPL("TrevorsTrailerTrash") REMOVE_IPL("TrevorsTrailerTrash") REQUEST_IPL("trevorstrailertidy") REQUEST_IPL("farm_burnt") // la ferme O'Neil brûlée REQUEST_IPL("prologue01") // North Yankton, morceau 1 ACTIVATE_INTERIOR_ENTITY_SET(coffre, "pink_diamond_set")
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 DiscordDerrière ce mur, la ville n'existe pas
Le jeu ne dessine que ce que vous pouvez voir, et il triche pour le savoir.