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.
la source
Réponses:
Vous êtes intéressé par l'article trouvé ici:
Systèmes AI de Left 4 Dead
la source
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é.
la source
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 post
dé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.
la source