Comment suivent-ils les PNJ dans Left 4 Dead?

11

Comment gardent-ils la trace des zombies PNJ dans Left 4 Dead?

Je parle des PNJ qui entrent dans les murs ou errent sans but. Même si les joueurs ne peuvent pas les voir, ils sont là (disons à l'intérieur des pièces ou derrière les portes). Disons qu'il y a une dizaine de zombies dans un couloir et à l'intérieur des pièces. Est-ce que le jeu garde tous ces zombies dans une liste et répète en leur donnant des commandes? Apparaissent-ils simplement lorsque l'utilisateur se trouve dans un certain rayon ou atteint un emplacement spécial?

Supposons que vous ayez placé les 4 unités (contrôlées par les joueurs) à des endroits complètement différents sur la carte. Supposons que vous n'êtes pas essaimé et que vous n'avez tué aucun de ces PNJ sans but. Le jeu garderait-il une trace de 10 x 4 = 40 zombies au total?

Ou ma compréhension est-elle complètement fausse?

La raison pour laquelle je demande, c'est si je devais mettre en œuvre quelque chose de similaire sur un appareil mobile, garder une trace de 40 PNJ ou plus pourrait ne pas être une si bonne idée.

f20k
la source
1
J'ai vu une présentation faite par la Valve expliquant tout sur les zombies dans L4D. Je ne le trouve pas cependant.
The Communist Duck
2
@ Le canard communiste - Ce serait très utile. Veuillez poster si vous le trouvez. La seule chose que je peux trouver en ligne, ce sont les FAQ du jeu.
f20k

Réponses:

24

Vous êtes intéressé par l'article trouvé ici:

Systèmes AI de Left 4 Dead

ChrisE
la source
Oui, c'est exactement ce que je recherche merci!
f20k
1
Aucun problème. Heureusement pour nous, les développeurs ont la gentillesse de publier leurs publications.
ChrisE
4

Je n'ai pas lu le document auquel ChrisE a écrit un lien, mais d'après une conversation que j'ai eue avec un employé de Valve ou quelque part sur leur wiki de développement (je ne me souviens pas lequel), je me souviens avoir été informé qu'ils n'avaient essentiellement que quelques des entités réelles (le directeur de l'IA); les avatars que vous voyez dépeindre les PNJ infectés ne sont que des "marionnettes" pour ces entités. Ils l'ont fait pour réduire au minimum le nombre d'entrées d'édit (dictionnaire d'entités) car il y a évidemment une tonne de PNJ infectés à suivre.

Le dictionnaire d'entités du moteur a une taille fixe et ne peut pas s'agrandir. Cela signifie que tout jeu construit sur ce moteur qui nécessite une grande quantité de PNJ - ou toute entité d'ailleurs - doit utiliser un tel système pour que le moteur fonctionne correctement et ne s'étouffe pas (et finalement se bloque) parce que le nombre d'entités est trop élevé.

Cale
la source
Savez-vous par hasard quels autres types d'entités existent? Les personnes infectées spéciales seraient-elles des entités? J'ai du mal à comprendre «entité» vs «marionnette à doigt» lorsque je peux interagir avec le PNJ infecté.
f20k
1
Les offres spéciales sont des entités. Le moyen le plus simple de déterminer ce qui est réel et ce qui est truqué est de regarder la console. Vous pouvez subir des dégâts des autres joueurs, des spéciaux par nom, mais lorsque vous subissez des dégâts des communs, la console vous montre que vous subissez des dégâts du "monde" (iirc).
Rob N
Oui, je vois votre point. Ils se pressent autour de moi et font une animation passionnante. C'est très intéressant, merci.
f20k
La meilleure façon d'expliquer le fonctionnement du concept de «marionnette à doigt» est probablement de le comparer à un chien de berger. Il y a un «contrôleur» (ex: le chien) et un troupeau (ou horde dans ce cas) de «marionnettes» (ex: le mouton). Les «marionnettes» ne peuvent pas penser par elles-mêmes, elles ne font que ce que le contrôleur leur ordonne de faire. Les marionnettes sont essentiellement une extension de l'entité contrôleur, mais au lieu d'utiliser un seul élément visuel, comme dans le cas des personnes infectées spéciales, elles utilisent plusieurs éléments visuels qui sont contrôlés indépendamment.
Cale
1

Je ne peux pas parler du fonctionnement de la mise en œuvre de Left 4 Dead, mais je peux dire comment je le ferais probablement.

Je choisirais quelque chose comme votre deuxième option, suivrais chaque joueur et ne chargerais les PNJ que lorsque les joueurs dépasseraient les points de déclenchement. La clé dans un système comme celui-ci est de placer les points de déclenchement suffisamment loin du joueur pour qu'ils ne puissent pas associer ces walking past this fence postdéclencheursthat car to blow up, and shoot a zombie at them.

J'aurais probablement une collection de PNJ active, que les points de déclenchement ajoutent ou suppriment des PNJ de la collection. Cela vous permet de dépenser des ressources CPU / GPU sur des PNJ avec lesquels les joueurs interagissent réellement, mais cela vous donne la flexibilité de charger des PNJ à tout moment.

Pensez à un boss qui peut entendre des sons, peut-être que le boss est chargé au début de la carte et si le joueur qui traverse la carte fait beaucoup de bruit (grenades, bombes à pipe, etc.), le boss cherchera le joueur et attaquera à l'improviste, au lieu d'attendre que le joueur atteigne l'arène du boss.

Nate
la source