Comment puis-je assurer la symétrie du champ de vision dans un Roguelike?


10

Je travaille sur un Roguelike, et pour cela j'ai créé un algorithme de champ de vision (FoV) de lancer de rayons / lancer qui consiste à tracer des lignes de Bresenham à chaque point d'un cercle plein. Il est sans artefact (et raisonnablement efficace), mais il manque une exigence importante à moi: la symétrie (si vous pouvez voir un monstre, il doit également être capable de vous voir).

entrez la description de l'image ici

Voici un exemple du comportement non symétrique de mon code. Dans l'image de gauche, je me tiens dans un coin (blocs rouges «X» = mur). Je peux voir les tuiles en haut à droite. Cependant, si je passe à l'une de ces tuiles (image de droite), je ne peux plus voir la tuile d'où je viens.

Je pense que je pourrais être après une forme de champ de vision permissif , mais seulement parce que l'article de Roguebasin a suggéré qu'il permettait la symétrie. Existe-t-il d'autres moyens d'obtenir la symétrie?


1
Assurez-vous simplement que le point de vue est dans la même position que la position vers laquelle vous lancez le rayon lorsque vous testez la visibilité.
MichaelHouse

Réponses:


8

Il semble que vous incluez un carré lorsque vous pouvez voir n'importe quel point alors que l'œil est au point fixe unique.

Cependant, vous ne devez inclure un carré que lorsque vous pouvez en voir le milieu (en supposant que "l'œil" se trouve également au milieu). Ou vous pouvez dessiner des rayons de chaque coin du carré de départ vers les coins du carré testé, si vous pouvez en voir n'importe lequel, puis l'inclure.

Le point clé est que la hitbox d'un carré doit également être tous les emplacements où l'œil doit être.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.