Vous n'êtes jamais seul dans votre bunker
Quand vous rentrez dans votre bunker de GTA Online, vous pensez être chez vous, seul. En réalité, d'autres joueurs de votre session sont peut-être dans la même pièce, au même endroit, à quelques centimètres de vous. Le jeu les cache. Cinq preuves, et une carte où toutes les portes mènent au même bunker.
Tous les bunkers sont le même bunker
Il existe 11 bunkers à acheter dans GTA Online, de Chumash à la forêt de Paleto. Pourtant, il n'y a qu'un seul intérieur de bunker dans tout le jeu. Les 11 portes mènent à la même pièce, rangée au même endroit sous la carte.
C'est pareil pour les boîtes de nuit : 10 adresses, un seul club. Et pour les complexes de Doomsday : 9 entrées, une seule base.
Prendre la porte, c'est un écran noir et une téléportation. Vous ne descendez pas sous votre bunker : vous partez sous le port de Los Santos, là où le dossier Intérieurs a trouvé les boîtes qui flottent sous le sol. La boîte de nuit, elle, est rangée sous l'aéroport, à 78 mètres sous le niveau de la mer.
Dehors, chaque bunker n'est qu'une porte posée dans le décor : un calque de carte numéroté, de gr_case0 à gr_case11.
GET_ENTITY_COORDS(PLAYER_PED_ID(), true) // entrée Chumash → 899.55, -3246.04, -98.05 // entrée Paleto → 899.55, -3246.04, -98.05 GET_INTERIOR_FROM_ENTITY(PLAYER_PED_ID()) // le même intérieur, quelle que soit la porte // boîte de nuit → -1604.66, -3012.58, -78.00 // complexe → 345.00, 4842.00, -60.00
Trente joueurs, une seule pièce
Une session publique de GTA Online accueille jusqu'à 30 joueurs. Si plusieurs d'entre eux rentrent chez eux en même temps, ils arrivent tous aux mêmes coordonnées, dans la même pièce, devant les mêmes machines.
Sans protection, vous verriez des inconnus marcher dans votre bunker, se coincer dans vos murs et se tenir à cinq sur votre poste de recherche. Dans la démo, retirez les instances et regardez.
Et si la pièce est la même pour tous, comment chacun retrouve-t-il ses achats ? Les améliorations sont des « entity sets » : des morceaux de décor rangés dans l'intérieur, que le script allume ou éteint. Dans la boîte de nuit du casino, la sécurité renforcée, le matériel ou le DJ de la soirée en sont.
NETWORK_GET_NUM_CONNECTED_PLAYERS() // jusqu'à 30 dans une session publique GET_ENTITY_COORDS(PLAYER_PED_ID(), true) // chaque joueur dans son bunker : la même position ACTIVATE_INTERIOR_ENTITY_SET(intérieur, "int01_ba_security_upgrade") // un morceau de décor allumé dans l'intérieur
Le jeu vous cache les autres
Les autres joueurs ne disparaissent pas vraiment. Ils sont toujours connectés à votre session, et le réseau continue de suivre leur position. Le jeu les « cache » simplement de votre point de vue.
Un joueur caché n'est pas dessiné, et il n'a plus de collision : vous passez à travers lui, et vos balles aussi.
La documentation de FiveM le dit en toutes lettres : c'est la fonction que Rockstar utilise pour cacher les joueurs dans les intérieurs de GTA Online.
Dans la démo, passez en vue moteur pour voir les joueurs cachés, puis cliquez dans la pièce pour tirer.
NETWORK_CONCEAL_PLAYER(joueur, toggle, p2) NETWORK_IS_PLAYER_CONCEALED(joueur) // « ce que R* utilise pour cacher les joueurs // dans les intérieurs MP » (doc FiveM) // caché : ni dessiné, ni touchable, // mais toujours dans la session // p2 : 3e paramètre non documenté
| Joueur | Où | État |
|---|
Une instance est un monde à part
Le moteur sait aussi ranger des joueurs dans des « sessions tutoriel » numérotées : des instances, jusqu'à 64. Deux joueurs dans des instances différentes ne se voient plus, même s'ils sont au même endroit.
Inviter quelqu'un chez vous revient à le faire entrer dans votre instance. Dans la démo, glissez les joueurs d'une bulle à l'autre, ou invitez Kenny, et regardez qui voit qui.
Ces fonctions existent dans le jeu. Pour les intérieurs comme le bunker, la documentation de FiveM pointe vers la cachette de la preuve 3 ; les sessions tutoriel sont l'autre outil du moteur pour séparer les joueurs.
NETWORK_START_SOLO_TUTORIAL_SESSION() NETWORK_ALLOW_GANG_TO_JOIN_TUTORIAL_SESSION(équipe, instance) // équipe < 3, instance < 64 NETWORK_GET_PLAYER_TUTORIAL_SESSION_INSTANCE(joueur) NETWORK_ARE_PLAYERS_IN_SAME_TUTORIAL_SESSION(joueur, index) NETWORK_END_TUTORIAL_SESSION() // noms de NativeDB ; deux d'entre elles // n'ont pas de nom sur docs.fivem.net
Sur FiveM, on dit « routing bucket »
Sur un serveur FiveM, ce sont les créateurs du serveur qui gèrent les instances. FiveM leur donne un outil pour ça : les « routing buckets ». Chaque joueur et chaque objet appartient à un monde numéroté.
Le monde 0 est celui de tout le monde. Placez un joueur dans le monde 1, et il ne voit plus personne du monde 0, même à un mètre. Chaque monde peut même avoir ses propres passants, ou aucun.
Chaque monde a aussi son niveau de verrouillage : en mode « strict », les joueurs ne peuvent plus rien y faire apparaître eux-mêmes, seul le serveur crée les objets.
C'est comme ça que les serveurs RP font les appartements, les courses privées et les zones d'attente. Dans la démo, déplacez le joueur et la voiture d'un monde à l'autre.
SetPlayerRoutingBucket(source, 1) SetEntityRoutingBucket(voiture, 1) SetRoutingBucketPopulationEnabled(1, false) SetRoutingBucketEntityLockdownMode(1, 'strict') -- strict · relaxed · inactive GetPlayerRoutingBucket(source) -- 0 = le monde de tout le monde
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 DiscordEn mission, la circulation est un film
Les voitures que vous croisez rejouent un trajet enregistré par un développeur.