18-06-2013, 04:31 PM
Comme le dit Ter Rowan.
Si tes zones sont trop petites, c'est pas grave. Admettons, ton joueur voit à 110 unités de distance (rayon de vue), chaque zone fait 25 unité de coté (zones carrées, formant un damier). Donc, le joueur peut voir des unités qui sont à 4, voire 5 zones de distance.
Le joueur est dans la zone [X,Y]. On cherche donc l'ensemble des zones potentiellement visibles par le joueur: ce sont toutes les zones de [X-5;Y-5] à [X+5,Y+5], bornes incluses. Donc, il faut traiter ces 11*11 zones (121).
Ce sera toujours plus rapide que de traiter toutes les zones, et de dire, pour chaque zone "est-ce que je peux voir cette zone?".
La position des ennemis qu'on ne peut pas voir n'est pas intéressante, et elle pousse à la triche, car le client reçoit les données des joueurs qu'il n'est pas censé voir, donc, on est tenté de hacker le jeu pour voir quand même ces ennemis !
Si ton joueur J ne peut pas voir un joueur K, alors K est totalement ignoré pour J, en d'autres mots, si J ne peut pas observer K, K n'existe pas pour J.
Si K émet des sons audibles par J (bruits de pas par exemple), alors on peut soit considérer que K existe pour J (on ne voit pas K, mais on l'entend), soit considérer qu'il faut créer un nouvel objet, "emetteur-sonore", placé en K, et qui existe pour J (mais K n'existe pas pour J: seul l'objet qui représente une émission sonore existe).
Donc, je ne vois pas pourquoi ce n'est pas un luxe que d'envoyer à J les données d'un objet (joueur ou autre) K totalement hors de la portée de vue et d'ouïe de J. Pour moi, c'est inutile...
Après, attention: J peut ne pas voir K (et donc, J ne reçoit pas les données de K), mais K peut voir J, et donc, K doit recevoir les données de J.
Si tes zones sont trop petites, c'est pas grave. Admettons, ton joueur voit à 110 unités de distance (rayon de vue), chaque zone fait 25 unité de coté (zones carrées, formant un damier). Donc, le joueur peut voir des unités qui sont à 4, voire 5 zones de distance.
Le joueur est dans la zone [X,Y]. On cherche donc l'ensemble des zones potentiellement visibles par le joueur: ce sont toutes les zones de [X-5;Y-5] à [X+5,Y+5], bornes incluses. Donc, il faut traiter ces 11*11 zones (121).
Ce sera toujours plus rapide que de traiter toutes les zones, et de dire, pour chaque zone "est-ce que je peux voir cette zone?".
La position des ennemis qu'on ne peut pas voir n'est pas intéressante, et elle pousse à la triche, car le client reçoit les données des joueurs qu'il n'est pas censé voir, donc, on est tenté de hacker le jeu pour voir quand même ces ennemis !
Si ton joueur J ne peut pas voir un joueur K, alors K est totalement ignoré pour J, en d'autres mots, si J ne peut pas observer K, K n'existe pas pour J.
Si K émet des sons audibles par J (bruits de pas par exemple), alors on peut soit considérer que K existe pour J (on ne voit pas K, mais on l'entend), soit considérer qu'il faut créer un nouvel objet, "emetteur-sonore", placé en K, et qui existe pour J (mais K n'existe pas pour J: seul l'objet qui représente une émission sonore existe).
Donc, je ne vois pas pourquoi ce n'est pas un luxe que d'envoyer à J les données d'un objet (joueur ou autre) K totalement hors de la portée de vue et d'ouïe de J. Pour moi, c'est inutile...
Après, attention: J peut ne pas voir K (et donc, J ne reçoit pas les données de K), mais K peut voir J, et donc, K doit recevoir les données de J.