human
Dans les jeux vidéo, pourquoi est-il si difficile pour les développeurs de faire en sorte que les objets ne se traversent pas ? Par exemple, dans Ghost Recon : Wildlands, l'arme de mon personnage passe à travers son gilet tactique alors qu'en réalité elle devrait être devant. Explique comme si j'avais cinq ans.
gpt
Imaginez que vous êtes chargé de créer le monde qui vous entoure. Vous avez un stylo qui peut dessiner n'importe quoi dans cet espace, et vous avez un livre de règles qui crée toutes les règles de ce monde. Disons que vous voulez vraiment voir un combat à l'épée dans votre monde, donc vous dégainez deux épées. Une fois que vous avez fini de dessiner, vous vous rendez compte qu'ils flottent juste là, alors vous créez une règle pour qu'ils se balancent l'un vers l'autre. Alors ces épées commencent à se balancer, mais vous voyez qu'elles se traversent l'une l'autre. Ils ne s'arrêtent pas et ne rebondissent pas l'un sur l'autre parce que votre livre de règles ne dit que de se balancer, il ne dit rien sur le fait de rebondir l'un sur l'autre lorsqu'ils se touchent. Vous devez donc créer une règle qui dit que si les deux épées se touchent, elles doivent arrêter leur mouvement et rebondir l'une contre l'autre. Vous devez d'abord créer une règle qui détermine ce que signifie toucher. Ensuite, vous créez une règle sur la façon de savoir si les deux choses se touchent. Ensuite, vous créez une règle sur ce qu'il faut faire lorsque ces deux choses se touchent. Non content de vos épées qui s'entrechoquent, vous décidez qu'il vous faut créer un combat beaucoup plus élaboré. Donc, vous dessinez quelques chevaliers, quelques chevaux, un bouclier ou deux, et un fond de fantaisie. Au fur et à mesure que vous construisez, vous vous rendez compte que vous devez créer beaucoup plus de règles. Tout doit être défini. Tout à coup, il y a beaucoup de règles et beaucoup d'objets dont vous devez vous souvenir. C'est beaucoup de réflexion que vous avez à faire ! Alors vous avez une idée. Vous vous rendez compte que vous ne vous souciez pas vraiment si le nuage que vous dessinez dans le ciel heurte un arbre et rebondit dans le bon sens, n'est-ce pas ? C'est une perte de temps de continuer à vérifier pour s'assurer que le nuage suit les règles de rebondissement dans le bon sens, vous décidez donc d'enlever la règle sur les nuages ​​qui rebondissent sur les objets. Maintenant, vous n'avez plus à vous soucier du suivi des nuages, et vous pouvez vous concentrer sur le dessin d'autres choses et vous assurer que tout le reste suit les règles que vous avez écrites. C'est une simplification excessive, mais c'est à peu près la raison pour laquelle la détection des coups n'est pas toujours effectuée pour tous les objets dans les jeux ; Consacrer des ressources à la détection des hits nécessite des ressources de calcul et peut ne pas en valoir la peine. Un ordinateur ne se contente pas de « savoir » lorsque deux objets entrent en collision. Si vous avez une épée avec une géométrie très complexe et une autre épée avec une géométrie complexe, il faut beaucoup de maths pour déterminer si une partie de l'une ou l'autre des épées touche une autre partie de l'autre épée. Dans de nombreux cas, ce type de calculs doit être effectué pour chaque objet dans chaque image. Dans votre exemple ( le pistolet à travers le gilet ) , il faudrait beaucoup de maths non seulement pour déterminer où votre pistolet et votre gilet se sont heurtés , mais aussi pour calculer où les objets devraient être les uns par rapport aux autres . Il y a probablement une zone de frappe (la forme géométrique qui est suivie pour la détection des coups) autour du joueur et de l'arme, mais elle n'inclut probablement pas tous les détails du gilet, car cette géométrie complexe serait difficile à suivre.