Beaucoup de premiers jeux 3D avaient le problème où vous vous promeniez joyeusement et soudain tout était noir, avec une île de ce qui ressemblait à la coquille de façade creuse de la scène que vous aviez traversée s'élevant au-dessus. Parce que tu étais tombé hors du monde. Je me souviens que c'était un problème particulier et de longue date pour Bethesda Softworks, bien qu'ils n'étaient certainement pas seuls. Cela fait un moment que je ne l'ai pas vu à l'état sauvage, il semble donc que nous l'avons dépassé. Ma question est en deux parties:
1) Quelle était la ou les causes de cela? (Je suppose que cela concerne les coutures liées à la précision en virgule flottante entre les polygones, interagissant avec la position du caractère modélisé par point, c'est-à-dire que le bloc de plancher A se termine à la position 1.0, le bloc de plancher B commence à la position 0,9998 et pendant une microseconde, votre position est 0.99992, et boom, vous tombez à travers le monde. Mais ce n'est qu'une supposition.)
2) Comment cela a-t-il été corrigé?
la source
Réponses:
"Fissures" dans la géométrie principalement. Ces jeux ont quelques points communs, ils ont la gravité et ils ont une détection de collision.
Ces anomalies sont des endroits où la détection de collision a échoué d'une manière ou d'une autre. Il pourrait s'agir d'arêtes vives, d'écarts ou d'un certain nombre d'autres anomalies de géométrie. Il pourrait même y avoir des problèmes avec les pas de temps dans le moteur physique, où les mises à jour ont été désynchronisées et le personnage a pu traverser une géométrie parfaitement bonne.
Ceci est courant lorsque le joueur fait quelque chose qui n'était pas attendu par les concepteurs de niveaux. Sauter dans un endroit où ils n'étaient pas censés être, ou survivre à une chute qu'ils n'étaient pas censés faire. Ou, lorsque le joueur utilise des fonctionnalités du jeu comme la téléportation ou le vol pour se rendre à des endroits que les concepteurs de niveaux ne pensaient pas pouvoir atteindre. Pas plus tard que Skyrim ( vidéo: tomber du monde à 11h25 je suggère de couper le son ...).
Lorsque la détection de collision échoue, il n'y a rien à repousser de la gravité, alors vous tombez. Tout comme marcher sur une falaise.
Ce n'est pas vraiment "fixe". Il existe des techniques pour éviter cela, mais ce sont surtout de meilleurs outils et des outils de création de géométrie pour le paysage afin que ces anomalies ne soient pas introduites.
la source
Je pense qu'il n'est pas possible de dire qu'il y a une raison particulière pour laquelle la coupure à travers le monde se produit. En raison des différences dans les moteurs de jeu / les procédures physiques entre les jeux, un certain nombre de raisons peuvent y conduire.
À cause de cela, je suis certain que la chute du monde n'a pas nécessairement été éliminée.
Avoir quelques moteurs de jeu à grande échelle (Unreal, CryEngine, etc.) peut conduire à des problèmes moins imprévus du fait que ces moteurs sont constamment travaillés. Cependant, rien n'empêche un développeur d'ajouter des fonctionnalités / changements intéressants à l'environnement qui peuvent permettre un écrêtage du monde même dans le moteur de jeu le plus travaillé.
EDIT: 1. Les causes sous-jacentes de cela, pour autant que je sache, ont à voir avec le fait que les moteurs de jeu qui permettent que cela se produise ont une méthode limitée pour détecter si un joueur se déplace mal. Les moteurs de jeu antérieurs avaient probablement plus de problèmes avec cela parce que l'avion au sol n'était souvent que ça - un avion. Si un joueur était dans ledit avion, il ne descendrait pas. Si, pour une raison quelconque, sa position verticale descendait un peu en dessous, il tomberait pour toujours. À peu près ce que vous dites en ce qui concerne les calculs en virgule flottante. Comme les moteurs pouvaient se permettre d'être plus robustes et de vérifier si un joueur se trouvait dans une région entière hors limites, le déclenchement de l'erreur serait moins probable.
la source
Je suppose que les moteurs plus anciens utilisaient probablement un test rayon vs triangle rapide et simple pour détecter une collision avec la géométrie. Cela signifie que même le plus petit écart (ou une erreur de précision dans les calculs) pourrait laisser le joueur passer occasionnellement.
Les jeux plus modernes utiliseront probablement un test plus cher avec une sphère ou une capsule représentant le joueur, et cela ne passera tout simplement pas par de petits espaces. De nombreux jeux modernes utiliseront également un middleware physique bien testé à cet effet au lieu d'écrire leurs propres tests.
Un pas de temps important dans la mise à jour de la physique peut également être blâmé dans certains cas. Je semble me souvenir que dans au moins un des jeux Elite, vous pouvez voler à travers une planète dans certains cas à cause de cela. Cela peut être résolu en utilisant la détection de collision continue qui coûte également du temps CPU supplémentaire.
la source