bon, déja pour savoir si tu vois ou on te voit, c´est facile :
tu associes a chaque perso un vecteur direction : qui caractérise dans quelle direction il regarde.
tu calcules le produit scalaire de vecteurs de 2 personnages, s´il est >0, alors l´un voit l´autre, mais pas l´autre, s´il est <0, alors soit ils se regardent, soient ils sont dos a dos.
s´il est =0, alors ils sont perpendiculaires l´un a l´autre :
on se sert déja énormément de ça pour savoir quelle facette de triangle afficher en 3D, le produit scalaire de la normale au triangle, et celui de la caméra.
de la tu detectes aisément si ton monstre est vu ou non : de la tu l´envoie se cacher derriere un arbre ou alors foncer vers ton mec.
ensuite, pour les groupes, tu compres combien de mecs sont autour, ça se fait aussi, par vecteur de distance entre les coordonnées du point chaud de ton ennemi, avec une norme de vecteur, tu récupères la distance entre 2 monstres, tu n´as qu´a tester qu´elle soit inférieure a un seuil que tu définis pour savoir si un autre monstre est pres ou non. pour les arbres, tu n´as qu´a également calculer la distance de l´arbre au monstre par la meme méthode, pour savoir s´il est derriere par rapport au joueur, il suffit que la coordonnée de l´arbre soit sur la droite monstre/joueur, et entre les 2. si elle ne l´est pas, un calcul simple peut te faire savoir dans quelle direction doit aller ton monstre pour se planquer.
Bref, si tu vois ça sous un angle mathématique ( et c´est comme ça qu´il faut le voir), c´est tout a fait possible
renseigne toi sur les produits scalaires, et si tu veux calculer une normale, également sur les produits vectoriels.
a bon entendeur !